From f4fbd4a8196811fcdcf2bda0fc370fbe95352aba Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Mon, 2 May 2022 21:24:36 +0200 Subject: [PATCH 01/13] Implement more v3 endpoints --- repmanv3/cluster.pb.go | 199 +++-- repmanv3/cluster.pb.gw.go | 840 ++++++++++++++++-- repmanv3/cluster_grpc.pb.go | 36 + repmanv3/messages.pb.go | 342 +++++-- repmanv3/repmanv3.swagger.json | 542 ++++++++++- repmanv3/service.desc | Bin 9304 -> 10778 bytes repmanv3/tools.go | 19 + server/repmanv3.go | 72 ++ signal18/replication-manager/v3/cluster.proto | 26 + .../replication-manager/v3/messages.proto | 17 + 10 files changed, 1855 insertions(+), 238 deletions(-) diff --git a/repmanv3/cluster.pb.go b/repmanv3/cluster.pb.go index 1887a163f..18df446eb 100644 --- a/repmanv3/cluster.pb.go +++ b/repmanv3/cluster.pb.go @@ -54,7 +54,7 @@ var file_cluster_proto_rawDesc = []byte{ 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2d, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, - 0x61, 0x6c, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0x83, 0x10, 0x0a, 0x0e, 0x43, 0x6c, + 0x61, 0x6c, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0xe2, 0x13, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, @@ -95,13 +95,13 @@ var file_cluster_proto_rawDesc = []byte{ 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2f, 0x7b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xaf, 0x04, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xe8, 0x04, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xce, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc7, 0x03, 0x12, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x87, 0x04, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x04, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x4c, 0x12, @@ -126,67 +126,97 @@ var file_cluster_proto_rawDesc = []byte{ 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x7d, 0x5a, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x38, 0x22, 0x2e, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x06, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x76, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, - 0x32, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x61, 0x6c, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x37, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x65, 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x38, 0x22, 0x2e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, + 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x46, 0x72, 0x6f, 0x6d, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x32, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x1a, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x7d, 0x30, 0x01, + 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x33, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x22, 0x12, 0x20, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, - 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, - 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, - 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x42, - 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, - 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x23, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, + 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, + 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x61, + 0x67, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, + 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, 0x02, 0x12, + 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, 0x12, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, 0x6f, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x42, 0x32, + 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, + 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_cluster_proto_goTypes = []interface{}{ @@ -194,13 +224,14 @@ var file_cluster_proto_goTypes = []interface{}{ (*ClusterSetting)(nil), // 1: signal18.replication_manager.v3.ClusterSetting (*ClusterAction)(nil), // 2: signal18.replication_manager.v3.ClusterAction (*TopologyRetrieval)(nil), // 3: signal18.replication_manager.v3.TopologyRetrieval - (*StatusMessage)(nil), // 4: signal18.replication_manager.v3.StatusMessage - (*emptypb.Empty)(nil), // 5: google.protobuf.Empty - (*structpb.Struct)(nil), // 6: google.protobuf.Struct - (*Certificate)(nil), // 7: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 8: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 9: signal18.replication_manager.v3.Tag - (*Table)(nil), // 10: signal18.replication_manager.v3.Table + (*TableAction)(nil), // 4: signal18.replication_manager.v3.TableAction + (*StatusMessage)(nil), // 5: signal18.replication_manager.v3.StatusMessage + (*emptypb.Empty)(nil), // 6: google.protobuf.Empty + (*structpb.Struct)(nil), // 7: google.protobuf.Struct + (*Certificate)(nil), // 8: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 9: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 10: signal18.replication_manager.v3.Tag + (*Table)(nil), // 11: signal18.replication_manager.v3.Table } var file_cluster_proto_depIdxs = []int32{ 0, // 0: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:input_type -> signal18.replication_manager.v3.Cluster @@ -215,20 +246,22 @@ var file_cluster_proto_depIdxs = []int32{ 0, // 9: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster 0, // 10: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster 0, // 11: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster - 4, // 12: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage - 5, // 13: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty - 6, // 14: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct - 6, // 15: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct - 5, // 16: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty - 5, // 17: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty - 6, // 18: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct - 7, // 19: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate - 8, // 20: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup - 9, // 21: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag - 6, // 22: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct - 10, // 23: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table - 12, // [12:24] is the sub-list for method output_type - 0, // [0:12] is the sub-list for method input_type + 4, // 12: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction + 5, // 13: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage + 6, // 14: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty + 7, // 15: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct + 7, // 16: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct + 6, // 17: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty + 6, // 18: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty + 7, // 19: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct + 8, // 20: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate + 9, // 21: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup + 10, // 22: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag + 7, // 23: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct + 11, // 24: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table + 6, // 25: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty + 13, // [13:26] is the sub-list for method output_type + 0, // [0:13] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/repmanv3/cluster.pb.gw.go b/repmanv3/cluster.pb.gw.go index 4474ee646..51c48d4e6 100644 --- a/repmanv3/cluster.pb.gw.go +++ b/repmanv3/cluster.pb.gw.go @@ -1490,13 +1490,109 @@ func local_request_ClusterService_PerformClusterAction_5(ctx context.Context, ma } var ( - filter_ClusterService_PerformClusterAction_6 = &utilities.DoubleArray{Encoding: map[string]int{"server": 0, "cluster": 1, "name": 2}, Base: []int{1, 1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 3, 2, 4}} + filter_ClusterService_PerformClusterAction_6 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "action": 2}, Base: []int{1, 1, 1, 2, 0, 0}, Check: []int{0, 1, 2, 1, 3, 4}} ) func request_ClusterService_PerformClusterAction_6(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ClusterAction var metadata runtime.ServerMetadata + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["action"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "action") + } + + e, err = runtime.Enum(val, ClusterAction_Action_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "action", err) + } + + protoReq.Action = ClusterAction_Action(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_PerformClusterAction_6); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PerformClusterAction(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ClusterService_PerformClusterAction_6(ctx context.Context, marshaler runtime.Marshaler, server ClusterServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ClusterAction + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["action"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "action") + } + + e, err = runtime.Enum(val, ClusterAction_Action_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "action", err) + } + + protoReq.Action = ClusterAction_Action(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_PerformClusterAction_6); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PerformClusterAction(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_ClusterService_PerformClusterAction_7 = &utilities.DoubleArray{Encoding: map[string]int{"server": 0, "cluster": 1, "name": 2}, Base: []int{1, 1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 3, 2, 4}} +) + +func request_ClusterService_PerformClusterAction_7(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ClusterAction + var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) @@ -1525,7 +1621,7 @@ func request_ClusterService_PerformClusterAction_6(ctx context.Context, marshale if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_PerformClusterAction_6); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_PerformClusterAction_7); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1534,7 +1630,7 @@ func request_ClusterService_PerformClusterAction_6(ctx context.Context, marshale } -func local_request_ClusterService_PerformClusterAction_6(ctx context.Context, marshaler runtime.Marshaler, server ClusterServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_ClusterService_PerformClusterAction_7(ctx context.Context, marshaler runtime.Marshaler, server ClusterServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ClusterAction var metadata runtime.ServerMetadata @@ -1566,7 +1662,7 @@ func local_request_ClusterService_PerformClusterAction_6(ctx context.Context, ma if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_PerformClusterAction_6); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_PerformClusterAction_7); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1756,49 +1852,431 @@ func request_ClusterService_GetTags_0(ctx context.Context, marshaler runtime.Mar var protoReq Cluster var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_GetTags_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.GetTags(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + +var ( + filter_ClusterService_GetQueryRules_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ClusterService_GetQueryRules_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (ClusterService_GetQueryRulesClient, runtime.ServerMetadata, error) { + var protoReq Cluster + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_GetQueryRules_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.GetQueryRules(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + +var ( + filter_ClusterService_GetSchema_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ClusterService_GetSchema_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (ClusterService_GetSchemaClient, runtime.ServerMetadata, error) { + var protoReq Cluster + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_GetSchema_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.GetSchema(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + +var ( + filter_ClusterService_ExecuteTableAction_0 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "table": 2, "table_schema": 3, "table_name": 4, "action": 5}, Base: []int{1, 1, 1, 1, 2, 3, 4, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 4, 4, 1, 3, 5, 6, 7}} +) + +func request_ClusterService_ExecuteTableAction_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TableAction + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["table.table_schema"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_schema") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_schema", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_schema", err) + } + + val, ok = pathParams["table.table_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_name", err) + } + + val, ok = pathParams["action"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "action") + } + + e, err = runtime.Enum(val, TableAction_Action_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "action", err) + } + + protoReq.Action = TableAction_Action(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_ExecuteTableAction_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ExecuteTableAction(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ClusterService_ExecuteTableAction_0(ctx context.Context, marshaler runtime.Marshaler, server ClusterServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TableAction + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["table.table_schema"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_schema") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_schema", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_schema", err) + } + + val, ok = pathParams["table.table_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_name", err) + } + + val, ok = pathParams["action"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "action") + } + + e, err = runtime.Enum(val, TableAction_Action_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "action", err) + } + + protoReq.Action = TableAction_Action(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_ExecuteTableAction_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ExecuteTableAction(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_ClusterService_ExecuteTableAction_1 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "table": 2, "table_schema": 3, "table_name": 4, "action": 5, "cluster_shard": 6}, Base: []int{1, 1, 1, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 4, 4, 1, 1, 3, 5, 6, 7, 8}} +) + +func request_ClusterService_ExecuteTableAction_1(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TableAction + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["table.table_schema"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_schema") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_schema", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_schema", err) + } + + val, ok = pathParams["table.table_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_name", err) + } + + val, ok = pathParams["action"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "action") + } + + e, err = runtime.Enum(val, TableAction_Action_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "action", err) + } + + protoReq.Action = TableAction_Action(e) + + val, ok = pathParams["cluster_shard"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_shard") + } + + protoReq.ClusterShard, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_shard", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_ExecuteTableAction_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ExecuteTableAction(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ClusterService_ExecuteTableAction_1(ctx context.Context, marshaler runtime.Marshaler, server ClusterServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TableAction + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["table.table_schema"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_schema") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_schema", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_schema", err) + } + + val, ok = pathParams["table.table_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_name", err) + } + + val, ok = pathParams["action"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "action") + } + + e, err = runtime.Enum(val, TableAction_Action_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "action", err) + } + + protoReq.Action = TableAction_Action(e) - val, ok = pathParams["name"] + val, ok = pathParams["cluster_shard"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_shard") } - protoReq.Name, err = runtime.String(val) + protoReq.ClusterShard, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_shard", err) } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_GetTags_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_ExecuteTableAction_1); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - stream, err := client.GetTags(ctx, &protoReq) - if err != nil { - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - return nil, metadata, err - } - metadata.HeaderMD = header - return stream, metadata, nil + msg, err := server.ExecuteTableAction(ctx, &protoReq) + return msg, metadata, err } var ( - filter_ClusterService_GetQueryRules_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} + filter_ClusterService_ExecuteTableAction_2 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "table": 2, "table_schema": 3, "table_name": 4, "cluster_list": 5}, Base: []int{1, 1, 1, 1, 2, 3, 4, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 4, 4, 1, 3, 5, 6, 7}} ) -func request_ClusterService_GetQueryRules_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (ClusterService_GetQueryRulesClient, runtime.ServerMetadata, error) { - var protoReq Cluster +func request_ClusterService_ExecuteTableAction_2(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TableAction var metadata runtime.ServerMetadata var ( @@ -1808,42 +2286,60 @@ func request_ClusterService_GetQueryRules_0(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["name"] + val, ok = pathParams["cluster.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") } - protoReq.Name, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["table.table_schema"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_schema") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_GetQueryRules_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_schema", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_schema", err) } - stream, err := client.GetQueryRules(ctx, &protoReq) + val, ok = pathParams["table.table_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_name", val) if err != nil { - return nil, metadata, err + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_name", err) } - header, err := stream.Header() + + val, ok = pathParams["cluster_list"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_list") + } + + protoReq.ClusterList, err = runtime.String(val) if err != nil { - return nil, metadata, err + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_list", err) } - metadata.HeaderMD = header - return stream, metadata, nil -} + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_ExecuteTableAction_2); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } -var ( - filter_ClusterService_GetSchema_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) + msg, err := client.ExecuteTableAction(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err -func request_ClusterService_GetSchema_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (ClusterService_GetSchemaClient, runtime.ServerMetadata, error) { - var protoReq Cluster +} + +func local_request_ClusterService_ExecuteTableAction_2(ctx context.Context, marshaler runtime.Marshaler, server ClusterServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq TableAction var metadata runtime.ServerMetadata var ( @@ -1853,33 +2349,55 @@ func request_ClusterService_GetSchema_0(ctx context.Context, marshaler runtime.M _ = err ) - val, ok = pathParams["name"] + val, ok = pathParams["cluster.name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") } - protoReq.Name, err = runtime.String(val) + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["table.table_schema"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_schema") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_GetSchema_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_schema", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_schema", err) } - stream, err := client.GetSchema(ctx, &protoReq) + val, ok = pathParams["table.table_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "table.table_name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "table.table_name", val) if err != nil { - return nil, metadata, err + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "table.table_name", err) } - header, err := stream.Header() + + val, ok = pathParams["cluster_list"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_list") + } + + protoReq.ClusterList, err = runtime.String(val) if err != nil { - return nil, metadata, err + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_list", err) } - metadata.HeaderMD = header - return stream, metadata, nil + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_ExecuteTableAction_2); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ExecuteTableAction(ctx, &protoReq) + return msg, metadata, err } @@ -2220,13 +2738,13 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) - mux.Handle("POST", pattern_ClusterService_PerformClusterAction_6, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_ClusterService_PerformClusterAction_6, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/actions/switchover")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/services/actions/{action}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -2243,6 +2761,29 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) + mux.Handle("POST", pattern_ClusterService_PerformClusterAction_7, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/actions/switchover")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ClusterService_PerformClusterAction_7(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_PerformClusterAction_7(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ClusterService_RetrieveFromTopology_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -2301,6 +2842,75 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve return }) + mux.Handle("GET", pattern_ClusterService_ExecuteTableAction_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/ExecuteTableAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/{action}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ClusterService_ExecuteTableAction_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_ExecuteTableAction_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ClusterService_ExecuteTableAction_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/ExecuteTableAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/{action}/{cluster_shard}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ClusterService_ExecuteTableAction_1(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_ExecuteTableAction_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ClusterService_ExecuteTableAction_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/ExecuteTableAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/RESHARD_TABLE/{cluster_list}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ClusterService_ExecuteTableAction_2(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_ExecuteTableAction_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2675,11 +3285,11 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) - mux.Handle("POST", pattern_ClusterService_PerformClusterAction_6, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_ClusterService_PerformClusterAction_6, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/actions/switchover")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/services/actions/{action}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -2695,6 +3305,26 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("POST", pattern_ClusterService_PerformClusterAction_7, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/actions/switchover")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_PerformClusterAction_7(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_PerformClusterAction_7(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ClusterService_RetrieveFromTopology_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2815,6 +3445,66 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ClusterService_ExecuteTableAction_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/ExecuteTableAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/{action}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_ExecuteTableAction_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_ExecuteTableAction_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ClusterService_ExecuteTableAction_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/ExecuteTableAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/{action}/{cluster_shard}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_ExecuteTableAction_1(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_ExecuteTableAction_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ClusterService_ExecuteTableAction_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/ExecuteTableAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/RESHARD_TABLE/{cluster_list}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_ExecuteTableAction_2(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_ExecuteTableAction_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2843,7 +3533,9 @@ var ( pattern_ClusterService_PerformClusterAction_5 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v3", "clusters", "cluster.name", "actions", "action"}, "")) - pattern_ClusterService_PerformClusterAction_6 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v3", "clusters", "cluster.name", "actions", "switchover"}, "")) + pattern_ClusterService_PerformClusterAction_6 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"v3", "clusters", "cluster.name", "services", "actions", "action"}, "")) + + pattern_ClusterService_PerformClusterAction_7 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v3", "clusters", "cluster.name", "actions", "switchover"}, "")) pattern_ClusterService_RetrieveFromTopology_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v3", "clusters", "cluster.name", "topology", "retrieve"}, "")) @@ -2856,6 +3548,12 @@ var ( pattern_ClusterService_GetQueryRules_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "queryrules"}, "")) pattern_ClusterService_GetSchema_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "schema"}, "")) + + pattern_ClusterService_ExecuteTableAction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"v3", "clusters", "cluster.name", "schema", "table.table_schema", "table.table_name", "actions", "action"}, "")) + + pattern_ClusterService_ExecuteTableAction_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8}, []string{"v3", "clusters", "cluster.name", "schema", "table.table_schema", "table.table_name", "actions", "action", "cluster_shard"}, "")) + + pattern_ClusterService_ExecuteTableAction_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 2, 7, 1, 0, 4, 1, 5, 8}, []string{"v3", "clusters", "cluster.name", "schema", "table.table_schema", "table.table_name", "actions", "RESHARD_TABLE", "cluster_list"}, "")) ) var ( @@ -2885,6 +3583,8 @@ var ( forward_ClusterService_PerformClusterAction_6 = runtime.ForwardResponseMessage + forward_ClusterService_PerformClusterAction_7 = runtime.ForwardResponseMessage + forward_ClusterService_RetrieveFromTopology_0 = runtime.ForwardResponseStream forward_ClusterService_GetClientCertificates_0 = runtime.ForwardResponseMessage @@ -2896,4 +3596,10 @@ var ( forward_ClusterService_GetQueryRules_0 = runtime.ForwardResponseStream forward_ClusterService_GetSchema_0 = runtime.ForwardResponseStream + + forward_ClusterService_ExecuteTableAction_0 = runtime.ForwardResponseMessage + + forward_ClusterService_ExecuteTableAction_1 = runtime.ForwardResponseMessage + + forward_ClusterService_ExecuteTableAction_2 = runtime.ForwardResponseMessage ) diff --git a/repmanv3/cluster_grpc.pb.go b/repmanv3/cluster_grpc.pb.go index 3baafa438..1f4ba4e85 100644 --- a/repmanv3/cluster_grpc.pb.go +++ b/repmanv3/cluster_grpc.pb.go @@ -152,6 +152,7 @@ type ClusterServiceClient interface { GetTags(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetTagsClient, error) GetQueryRules(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetQueryRulesClient, error) GetSchema(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetSchemaClient, error) + ExecuteTableAction(ctx context.Context, in *TableAction, opts ...grpc.CallOption) (*emptypb.Empty, error) } type clusterServiceClient struct { @@ -367,6 +368,15 @@ func (x *clusterServiceGetSchemaClient) Recv() (*Table, error) { return m, nil } +func (c *clusterServiceClient) ExecuteTableAction(ctx context.Context, in *TableAction, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/signal18.replication_manager.v3.ClusterService/ExecuteTableAction", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ClusterServiceServer is the server API for ClusterService service. // All implementations must embed UnimplementedClusterServiceServer // for forward compatibility @@ -381,6 +391,7 @@ type ClusterServiceServer interface { GetTags(*Cluster, ClusterService_GetTagsServer) error GetQueryRules(*Cluster, ClusterService_GetQueryRulesServer) error GetSchema(*Cluster, ClusterService_GetSchemaServer) error + ExecuteTableAction(context.Context, *TableAction) (*emptypb.Empty, error) mustEmbedUnimplementedClusterServiceServer() } @@ -418,6 +429,9 @@ func (UnimplementedClusterServiceServer) GetQueryRules(*Cluster, ClusterService_ func (UnimplementedClusterServiceServer) GetSchema(*Cluster, ClusterService_GetSchemaServer) error { return status.Errorf(codes.Unimplemented, "method GetSchema not implemented") } +func (UnimplementedClusterServiceServer) ExecuteTableAction(context.Context, *TableAction) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method ExecuteTableAction not implemented") +} func (UnimplementedClusterServiceServer) mustEmbedUnimplementedClusterServiceServer() {} // UnsafeClusterServiceServer may be embedded to opt out of forward compatibility for this service. @@ -626,6 +640,24 @@ func (x *clusterServiceGetSchemaServer) Send(m *Table) error { return x.ServerStream.SendMsg(m) } +func _ClusterService_ExecuteTableAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TableAction) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServiceServer).ExecuteTableAction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/signal18.replication_manager.v3.ClusterService/ExecuteTableAction", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServiceServer).ExecuteTableAction(ctx, req.(*TableAction)) + } + return interceptor(ctx, in, info, handler) +} + // ClusterService_ServiceDesc is the grpc.ServiceDesc for ClusterService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -653,6 +685,10 @@ var ClusterService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetClientCertificates", Handler: _ClusterService_GetClientCertificates_Handler, }, + { + MethodName: "ExecuteTableAction", + Handler: _ClusterService_ExecuteTableAction_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index f4cb78178..3a6254d9a 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -608,6 +608,8 @@ const ( ClusterAction_WAITDATABASES ClusterAction_Action = 18 ClusterAction_REPLICATION_BOOTSTRAP ClusterAction_Action = 19 ClusterAction_REPLICATION_CLEANUP ClusterAction_Action = 20 + ClusterAction_PROVISION ClusterAction_Action = 21 + ClusterAction_UNPROVISION ClusterAction_Action = 22 ) // Enum value maps for ClusterAction_Action. @@ -633,6 +635,8 @@ var ( 18: "WAITDATABASES", 19: "REPLICATION_BOOTSTRAP", 20: "REPLICATION_CLEANUP", + 21: "PROVISION", + 22: "UNPROVISION", } ClusterAction_Action_value = map[string]int32{ "ACTION_UNSPECIFIED": 0, @@ -655,6 +659,8 @@ var ( "WAITDATABASES": 18, "REPLICATION_BOOTSTRAP": 19, "REPLICATION_CLEANUP": 20, + "PROVISION": 21, + "UNPROVISION": 22, } ) @@ -981,6 +987,61 @@ func (TopologyRetrieval_Retrieval) EnumDescriptor() ([]byte, []int) { return file_messages_proto_rawDescGZIP(), []int{6, 0} } +type TableAction_Action int32 + +const ( + TableAction_ACTION_UNSPECIFIED TableAction_Action = 0 + TableAction_CHECKSUM_TABLE TableAction_Action = 1 + TableAction_MOVE_TABLE TableAction_Action = 2 + TableAction_RESHARD_TABLE TableAction_Action = 3 + TableAction_UNIVERSAL_TABLE TableAction_Action = 4 +) + +// Enum value maps for TableAction_Action. +var ( + TableAction_Action_name = map[int32]string{ + 0: "ACTION_UNSPECIFIED", + 1: "CHECKSUM_TABLE", + 2: "MOVE_TABLE", + 3: "RESHARD_TABLE", + 4: "UNIVERSAL_TABLE", + } + TableAction_Action_value = map[string]int32{ + "ACTION_UNSPECIFIED": 0, + "CHECKSUM_TABLE": 1, + "MOVE_TABLE": 2, + "RESHARD_TABLE": 3, + "UNIVERSAL_TABLE": 4, + } +) + +func (x TableAction_Action) Enum() *TableAction_Action { + p := new(TableAction_Action) + *p = x + return p +} + +func (x TableAction_Action) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TableAction_Action) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[10].Descriptor() +} + +func (TableAction_Action) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[10] +} + +func (x TableAction_Action) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TableAction_Action.Descriptor instead. +func (TableAction_Action) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{10, 0} +} + type ErrorInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1635,6 +1696,85 @@ func (x *Tag) GetCategory() string { return "" } +type TableAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Table *Table `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` + Action TableAction_Action `protobuf:"varint,3,opt,name=action,proto3,enum=signal18.replication_manager.v3.TableAction_Action" json:"action,omitempty"` + ClusterShard string `protobuf:"bytes,4,opt,name=cluster_shard,json=clusterShard,proto3" json:"cluster_shard,omitempty"` + ClusterList string `protobuf:"bytes,5,opt,name=cluster_list,json=clusterList,proto3" json:"cluster_list,omitempty"` +} + +func (x *TableAction) Reset() { + *x = TableAction{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TableAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableAction) ProtoMessage() {} + +func (x *TableAction) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableAction.ProtoReflect.Descriptor instead. +func (*TableAction) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{10} +} + +func (x *TableAction) GetCluster() *Cluster { + if x != nil { + return x.Cluster + } + return nil +} + +func (x *TableAction) GetTable() *Table { + if x != nil { + return x.Table + } + return nil +} + +func (x *TableAction) GetAction() TableAction_Action { + if x != nil { + return x.Action + } + return TableAction_ACTION_UNSPECIFIED +} + +func (x *TableAction) GetClusterShard() string { + if x != nil { + return x.ClusterShard + } + return "" +} + +func (x *TableAction) GetClusterList() string { + if x != nil { + return x.ClusterList + } + return "" +} + type Table struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1654,7 +1794,7 @@ type Table struct { func (x *Table) Reset() { *x = Table{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[10] + mi := &file_messages_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1667,7 +1807,7 @@ func (x *Table) String() string { func (*Table) ProtoMessage() {} func (x *Table) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[10] + mi := &file_messages_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1680,7 +1820,7 @@ func (x *Table) ProtoReflect() protoreflect.Message { // Deprecated: Use Table.ProtoReflect.Descriptor instead. func (*Table) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{10} + return file_messages_proto_rawDescGZIP(), []int{11} } func (x *Table) GetTableSchema() string { @@ -1758,7 +1898,7 @@ type ClusterSetting_Setting struct { func (x *ClusterSetting_Setting) Reset() { *x = ClusterSetting_Setting{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[11] + mi := &file_messages_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1771,7 +1911,7 @@ func (x *ClusterSetting_Setting) String() string { func (*ClusterSetting_Setting) ProtoMessage() {} func (x *ClusterSetting_Setting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[11] + mi := &file_messages_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1812,7 +1952,7 @@ type ClusterSetting_Switch struct { func (x *ClusterSetting_Switch) Reset() { *x = ClusterSetting_Switch{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1825,7 +1965,7 @@ func (x *ClusterSetting_Switch) String() string { func (*ClusterSetting_Switch) ProtoMessage() {} func (x *ClusterSetting_Switch) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1863,7 +2003,7 @@ type ClusterAction_Server struct { func (x *ClusterAction_Server) Reset() { *x = ClusterAction_Server{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1876,7 +2016,7 @@ func (x *ClusterAction_Server) String() string { func (*ClusterAction_Server) ProtoMessage() {} func (x *ClusterAction_Server) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2211,7 +2351,7 @@ var file_messages_proto_rawDesc = []byte{ 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0xee, 0x0b, 0x0a, + 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0x8e, 0x0c, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, @@ -2269,7 +2409,7 @@ var file_messages_proto_rawDesc = []byte{ 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, - 0x4e, 0x58, 0x10, 0x07, 0x22, 0x92, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x4e, 0x58, 0x10, 0x07, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, @@ -2294,7 +2434,9 @@ var file_messages_proto_rawDesc = []byte{ 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, + 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, + 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, + 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, @@ -2356,35 +2498,60 @@ var file_messages_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, - 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, - 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, - 0x6e, 0x63, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, - 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, + 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, + 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, + 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, + 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, + 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, + 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, + 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, + 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2399,8 +2566,8 @@ func file_messages_proto_rawDescGZIP() []byte { return file_messages_proto_rawDescData } -var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 11) +var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_messages_proto_goTypes = []interface{}{ (ServiceStatus)(0), // 0: signal18.replication_manager.v3.ServiceStatus (ClusterSetting_Action)(0), // 1: signal18.replication_manager.v3.ClusterSetting.Action @@ -2412,44 +2579,49 @@ var file_messages_proto_goTypes = []interface{}{ (ClusterAction_Server_Database)(0), // 7: signal18.replication_manager.v3.ClusterAction.Server.Database (ClusterAction_Server_Proxy)(0), // 8: signal18.replication_manager.v3.ClusterAction.Server.Proxy (TopologyRetrieval_Retrieval)(0), // 9: signal18.replication_manager.v3.TopologyRetrieval.Retrieval - (*ErrorInfo)(nil), // 10: signal18.replication_manager.v3.ErrorInfo - (*ErrorResource)(nil), // 11: signal18.replication_manager.v3.ErrorResource - (*Cluster)(nil), // 12: signal18.replication_manager.v3.Cluster - (*ClusterSetting)(nil), // 13: signal18.replication_manager.v3.ClusterSetting - (*ClusterAction)(nil), // 14: signal18.replication_manager.v3.ClusterAction - (*StatusMessage)(nil), // 15: signal18.replication_manager.v3.StatusMessage - (*TopologyRetrieval)(nil), // 16: signal18.replication_manager.v3.TopologyRetrieval - (*Certificate)(nil), // 17: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 18: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 19: signal18.replication_manager.v3.Tag - (*Table)(nil), // 20: signal18.replication_manager.v3.Table - (*ClusterSetting_Setting)(nil), // 21: signal18.replication_manager.v3.ClusterSetting.Setting - (*ClusterSetting_Switch)(nil), // 22: signal18.replication_manager.v3.ClusterSetting.Switch - (*ClusterAction_Server)(nil), // 23: signal18.replication_manager.v3.ClusterAction.Server + (TableAction_Action)(0), // 10: signal18.replication_manager.v3.TableAction.Action + (*ErrorInfo)(nil), // 11: signal18.replication_manager.v3.ErrorInfo + (*ErrorResource)(nil), // 12: signal18.replication_manager.v3.ErrorResource + (*Cluster)(nil), // 13: signal18.replication_manager.v3.Cluster + (*ClusterSetting)(nil), // 14: signal18.replication_manager.v3.ClusterSetting + (*ClusterAction)(nil), // 15: signal18.replication_manager.v3.ClusterAction + (*StatusMessage)(nil), // 16: signal18.replication_manager.v3.StatusMessage + (*TopologyRetrieval)(nil), // 17: signal18.replication_manager.v3.TopologyRetrieval + (*Certificate)(nil), // 18: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 19: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 20: signal18.replication_manager.v3.Tag + (*TableAction)(nil), // 21: signal18.replication_manager.v3.TableAction + (*Table)(nil), // 22: signal18.replication_manager.v3.Table + (*ClusterSetting_Setting)(nil), // 23: signal18.replication_manager.v3.ClusterSetting.Setting + (*ClusterSetting_Switch)(nil), // 24: signal18.replication_manager.v3.ClusterSetting.Switch + (*ClusterAction_Server)(nil), // 25: signal18.replication_manager.v3.ClusterAction.Server } var file_messages_proto_depIdxs = []int32{ - 11, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource - 12, // 1: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster + 12, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource + 13, // 1: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster 1, // 2: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action - 21, // 3: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting - 22, // 4: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch - 12, // 5: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 23, // 3: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting + 24, // 4: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch + 13, // 5: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster 4, // 6: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action - 23, // 7: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server + 25, // 7: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server 5, // 8: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology 0, // 9: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus - 12, // 10: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster + 13, // 10: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster 9, // 11: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval - 2, // 12: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName - 3, // 13: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - 6, // 14: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type - 7, // 15: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database - 8, // 16: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 13, // 12: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 22, // 13: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table + 10, // 14: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action + 2, // 15: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName + 3, // 16: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName + 6, // 17: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type + 7, // 18: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database + 8, // 19: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy + 20, // [20:20] is the sub-list for method output_type + 20, // [20:20] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name } func init() { file_messages_proto_init() } @@ -2579,7 +2751,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Table); i { + switch v := v.(*TableAction); i { case 0: return &v.state case 1: @@ -2591,7 +2763,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterSetting_Setting); i { + switch v := v.(*Table); i { case 0: return &v.state case 1: @@ -2603,7 +2775,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterSetting_Switch); i { + switch v := v.(*ClusterSetting_Setting); i { case 0: return &v.state case 1: @@ -2615,6 +2787,18 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClusterSetting_Switch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterAction_Server); i { case 0: return &v.state @@ -2632,8 +2816,8 @@ func file_messages_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_messages_proto_rawDesc, - NumEnums: 10, - NumMessages: 14, + NumEnums: 11, + NumMessages: 15, NumExtensions: 0, NumServices: 0, }, diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index 17a14666a..27c2beb88 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -62,7 +62,9 @@ "SYSBENCH", "WAITDATABASES", "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP" + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ] }, { @@ -158,7 +160,7 @@ }, "/v3/clusters/{cluster.name}/actions/switchover": { "post": { - "operationId": "ClusterService_PerformClusterAction7", + "operationId": "ClusterService_PerformClusterAction8", "responses": { "200": { "description": "A successful response.", @@ -219,7 +221,9 @@ "SYSBENCH", "WAITDATABASES", "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP" + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ], "default": "ACTION_UNSPECIFIED" }, @@ -295,7 +299,9 @@ "SYSBENCH", "WAITDATABASES", "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP" + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ] }, { @@ -432,7 +438,9 @@ "SYSBENCH", "WAITDATABASES", "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP" + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ] }, { @@ -569,7 +577,9 @@ "SYSBENCH", "WAITDATABASES", "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP" + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ] }, { @@ -706,7 +716,9 @@ "SYSBENCH", "WAITDATABASES", "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP" + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ] }, { @@ -842,7 +854,9 @@ "SYSBENCH", "WAITDATABASES", "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP" + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ] }, { @@ -929,6 +943,503 @@ ] } }, + "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/RESHARD_TABLE/{clusterList}": { + "get": { + "operationId": "ClusterService_ExecuteTableAction3", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableSchema", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableName", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "clusterList", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster.clusterShardingName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.engine", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableRows", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.dataLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.indexLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.tableCrc", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "table.tableClusters", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableSync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "action", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "CHECKSUM_TABLE", + "MOVE_TABLE", + "RESHARD_TABLE", + "UNIVERSAL_TABLE" + ], + "default": "ACTION_UNSPECIFIED" + }, + { + "name": "clusterShard", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/{action}": { + "get": { + "operationId": "ClusterService_ExecuteTableAction", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableSchema", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableName", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "CHECKSUM_TABLE", + "MOVE_TABLE", + "RESHARD_TABLE", + "UNIVERSAL_TABLE" + ] + }, + { + "name": "cluster.clusterShardingName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.engine", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableRows", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.dataLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.indexLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.tableCrc", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "table.tableClusters", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableSync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterShard", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterList", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/{action}/{clusterShard}": { + "get": { + "operationId": "ClusterService_ExecuteTableAction2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableSchema", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableName", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "CHECKSUM_TABLE", + "MOVE_TABLE", + "RESHARD_TABLE", + "UNIVERSAL_TABLE" + ] + }, + { + "name": "clusterShard", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster.clusterShardingName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.engine", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableRows", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.dataLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.indexLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.tableCrc", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "table.tableClusters", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableSync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterList", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/services/actions/{action}": { + "get": { + "operationId": "ClusterService_PerformClusterAction7", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "ADD", + "ADDSERVER", + "CANCEL_ROLLING_REPROV", + "CANCEL_ROLLING_RESTART", + "CHECKSUM_ALL_TABLES", + "FAILOVER", + "MASTER_PHYSICAL_BACKUP", + "OPTIMIZE", + "RESET_FAILOVER_CONTROL", + "RESET_SLA", + "ROLLING", + "ROTATEKEYS", + "START_TRAFFIC", + "STOP_TRAFFIC", + "SWITCHOVER", + "SYSBENCH", + "WAITDATABASES", + "REPLICATION_BOOTSTRAP", + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" + ] + }, + { + "name": "cluster.clusterShardingName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "server.host", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "server.port", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "server.type", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" + }, + { + "name": "server.database", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" + ], + "default": "DATABASE_UNSPECIFIED" + }, + { + "name": "server.proxy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "RT_UNSPECIFIED", + "MASTER_SLAVE", + "MASTER_SLAVE_NO_GTID", + "MULTI_MASTER", + "MULTI_TIER_SLAVE", + "MAXSCALE_BINLOG", + "MULTI_MASTER_RING", + "MULTI_MASTER_WSREP" + ], + "default": "RT_UNSPECIFIED" + } + ], + "tags": [ + "ClusterService" + ] + } + }, "/v3/clusters/{cluster.name}/settings/actions/set/{setting.name}/{setting.value}": { "get": { "operationId": "ClusterService_SetActionForClusterSettings3", @@ -2525,7 +3036,9 @@ "SYSBENCH", "WAITDATABASES", "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP" + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ], "default": "ACTION_UNSPECIFIED" }, @@ -2599,6 +3112,17 @@ } } }, + "v3TableActionAction": { + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "CHECKSUM_TABLE", + "MOVE_TABLE", + "RESHARD_TABLE", + "UNIVERSAL_TABLE" + ], + "default": "ACTION_UNSPECIFIED" + }, "v3Tag": { "type": "object", "properties": { diff --git a/repmanv3/service.desc b/repmanv3/service.desc index 73c480307bad0cbd383902dec6f10eb79de33e68..a68c36d36514109b51536ef68e2d41c42652f540 100644 GIT binary patch delta 1050 zcma)*&rcIk5XZB-rLb>lX&+J-Xv?-JAx5p@!DzS?Y^0$U-EBEw;<_#`wsC1?cZ(2g zAbKz+grG0+K;lIY96ag%0p2`$^J2Vcj0gV)Pre^Z2sbX9ozHw{-psst-{fmHA{^-}`**Ah@_)&mFO z56St&H0bfEp^BO?sZ34a%jsN}xpnS<^B`*3ezV4GI8!Ml z1Q-Y4*1}>bv_+T%F}-BW74;h-lHed1s8`F2CEX}iLKw*(h=A8gk7r$)p4~tzmMZY$ z88aAy832g6V6QR`u|h1eKmJ+#6&66Us_c&v9R4ATjKV?bH9 ze9Lr5u-{;POFE#a!U!#`*;+>HT(Q+qqog)TR~QU6qktD;+ODnk5`RSRW0lRiHarXB z?B5KB>8X9JyBJsStMQKN^fp?yDl-YsY7lU)4q^s!*KjbhBmO%b6i0su;_tyAlX)o$ zfAPWCefdS?*|$Gf+>QhZZC4Pk;#XNM>aI0yNSeyp4czgU*dX>7}j)S~Q0(>q2nS_K_FiAHHZwtNR2;0L*jcg{qm)10PMMVEz z0?2eD94;9&B!t*qcFEuB)ogG%bi0t6cBD{-}W0@J2q_D}xa*=(*b?6?4^!~dA zzVlvTlmB#=R^TI=X7Z$Ia3!bW$6Bw#pG9|R6}D*t{iF$w*Kus)3!8^ej=rWYPM?|n E51hk8H~;_u delta 82 zcmV-Y0ImO;RM=Zh?;?%?v$iCD0+Zn#JSNK^z5oCK diff --git a/repmanv3/tools.go b/repmanv3/tools.go index 35838f284..46451be39 100644 --- a/repmanv3/tools.go +++ b/repmanv3/tools.go @@ -50,3 +50,22 @@ func (c *Cluster) GetClusterMessage() (*Cluster, error) { return c, nil } + +func (t *TableAction) GetClusterMessage() (*Cluster, error) { + if t.Cluster == nil { + return nil, NewError(codes.InvalidArgument, ErrClusterNotSet).Err() + } + + return t.Cluster, nil +} + +func (t *TableAction) Validate() error { + if t.Table.TableName == "" { + return NewErrorResource(codes.InvalidArgument, ErrFieldNotSet, "table_name", "").Err() + } + if t.Table.TableSchema == "" { + return NewErrorResource(codes.InvalidArgument, ErrFieldNotSet, "table_schema", "").Err() + } + + return nil +} diff --git a/server/repmanv3.go b/server/repmanv3.go index 1053d3468..cbed4f36e 100644 --- a/server/repmanv3.go +++ b/server/repmanv3.go @@ -549,6 +549,13 @@ func (s *ReplicationManager) PerformClusterAction(ctx context.Context, in *v3.Cl } switch in.Action { + case v3.ClusterAction_PROVISION: + err = mycluster.Bootstrap() + if err != nil { + mycluster.LogPrintf(cluster.LvlErr, "API Error Bootstrap Micro Services + replication: %s", err) + } + case v3.ClusterAction_UNPROVISION: + err = mycluster.Unprovision() case v3.ClusterAction_ADD: if err = user.Granted(config.GrantProvCluster); err != nil { return nil, err @@ -923,3 +930,68 @@ func (s *ReplicationManager) GetSchema(in *v3.Cluster, stream v3.ClusterService_ return nil } + +func (s *ReplicationManager) ExecuteTableAction(ctx context.Context, in *v3.TableAction) (res *emptypb.Empty, err error) { + user, mycluster, err := s.getClusterAndUser(ctx, in) + if err != nil { + return nil, err + } + + // TODO: introduce new Grants for this type of endpoint + if err = user.Granted(config.GrantClusterGrant); err != nil { + return nil, err + } + + if err = in.Validate(); err != nil { + return nil, err + } + + switch in.Action { + case v3.TableAction_ACTION_UNSPECIFIED: + return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrEnumNotSet, "action", "").Err() + + case v3.TableAction_CHECKSUM_TABLE: + go mycluster.CheckTableChecksum(in.Table.TableSchema, in.Table.TableName) + + case v3.TableAction_RESHARD_TABLE: + for _, pri := range mycluster.Proxies { + if pr, ok := pri.(*cluster.MariadbShardProxy); ok { + clusters := mycluster.GetClusterListFromShardProxy(mycluster.Conf.MdbsProxyHosts) + if in.ClusterList == "" { + mycluster.ShardProxyReshardTable(pr, in.Table.TableSchema, in.Table.TableName, clusters) + } else { + var clustersFilter map[string]*cluster.Cluster + for _, c := range clusters { + if strings.Contains(in.ClusterList, c.GetName()) { + clustersFilter[c.GetName()] = c + } + } + mycluster.ShardProxyReshardTable(pr, in.Table.TableSchema, in.Table.TableName, clustersFilter) + } + } + } + + case v3.TableAction_UNIVERSAL_TABLE: + for _, pri := range mycluster.Proxies { + if pr, ok := pri.(*cluster.MariadbShardProxy); ok { + go mycluster.ShardSetUniversalTable(pr, in.Table.TableSchema, in.Table.TableName) + } + } + + case v3.TableAction_MOVE_TABLE: + for _, pri := range mycluster.Proxies { + if pr, ok := pri.(*cluster.MariadbShardProxy); ok { + if in.ClusterShard != "" { + destcluster := s.getClusterByName(in.ClusterShard) + if mycluster != nil { + mycluster.ShardProxyMoveTable(pr, in.Table.TableSchema, in.Table.TableName, destcluster) + return + } + } + } + } + + } + + return +} diff --git a/signal18/replication-manager/v3/cluster.proto b/signal18/replication-manager/v3/cluster.proto index 5e72600e1..e6f742169 100644 --- a/signal18/replication-manager/v3/cluster.proto +++ b/signal18/replication-manager/v3/cluster.proto @@ -102,6 +102,13 @@ service ClusterService { // /api/clusters/{clusterName}/actions/replication/cleanup get: "/v3/clusters/{cluster.name}/actions/{action}" } + + additional_bindings { + // /api/clusters/{clusterName}/services/actions/provision + // /api/clusters/{clusterName}/services/actions/unprovision + get: "/v3/clusters/{cluster.name}/services/actions/{action}" + } + additional_bindings { // /api/clusters/{clusterName}/actions/switchover post: "/v3/clusters/{cluster.name}/actions/switchover" @@ -157,4 +164,23 @@ service ClusterService { get: "/v3/clusters/{name}/schema" }; } + + rpc ExecuteTableAction(TableAction) returns (google.protobuf.Empty) { + option (google.api.http) = { + // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/checksum-table + // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/reshard-table + // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/universal-table + get: "/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/{action}" + + additional_bindings { + // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/move-table/{clusterShard} + get: "/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/{action}/{cluster_shard}" + } + + additional_bindings { + // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/reshard-table/{clusterList} + get: "/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/RESHARD_TABLE/{cluster_list}" + } + }; + } } \ No newline at end of file diff --git a/signal18/replication-manager/v3/messages.proto b/signal18/replication-manager/v3/messages.proto index 4dc29a19a..be9347652 100644 --- a/signal18/replication-manager/v3/messages.proto +++ b/signal18/replication-manager/v3/messages.proto @@ -195,6 +195,8 @@ message ClusterAction { WAITDATABASES = 18; REPLICATION_BOOTSTRAP = 19; REPLICATION_CLEANUP = 20; + PROVISION = 21; + UNPROVISION = 22; } Action action = 3; message Server { @@ -312,6 +314,21 @@ message Tag { string category = 3; } +message TableAction { + Cluster cluster = 1; + Table table = 2; + enum Action { + ACTION_UNSPECIFIED = 0; + CHECKSUM_TABLE = 1; + MOVE_TABLE = 2; + RESHARD_TABLE = 3; + UNIVERSAL_TABLE = 4; + } + Action action = 3; + string cluster_shard = 4; + string cluster_list = 5; +} + message Table { string table_schema = 1 [json_name="tableSchema"]; string table_name = 2 [json_name="tableName"]; From 57e4662af52721029c184bdc654929d6e3ac4c3a Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Mon, 2 May 2022 22:35:52 +0200 Subject: [PATCH 02/13] Implement basic v3 Cluster message. Reformat Proto with clang --- cluster/cluster.go | 48 + repmanv3/cluster.pb.go | 248 +- repmanv3/cluster.pb.gw.go | 100 +- repmanv3/cluster_grpc.pb.go | 67 +- repmanv3/messages.pb.go | 1347 ++- repmanv3/repmanv3.swagger.json | 9891 ++++++++++++++--- repmanv3/service.desc | Bin 10778 -> 12495 bytes server/repmanv3.go | 21 +- signal18/replication-manager/v3/cluster.proto | 9 +- .../replication-manager/v3/messages.proto | 90 +- 10 files changed, 9634 insertions(+), 2187 deletions(-) diff --git a/cluster/cluster.go b/cluster/cluster.go index 12a91e94b..c632346a5 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -175,6 +175,54 @@ type Cluster struct { crcTable *crc64.Table } +func ClusterToProtoCluster(c *Cluster) *v3.Cluster { + out := &v3.Cluster{ + Name: c.Name, + Tenant: c.Tenant, + WorkingDir: c.WorkingDir, + ServerIdList: c.ServerIdList, + ProxyIdList: c.ProxyIdList, + FailoverCtr: int32(c.FailoverCtr), + FailoverTs: c.GetFailoverTs(), + Status: c.Status, + IsSplitBrain: c.IsSplitBrain, + IsFailedArbitrator: c.IsFailedArbitrator, + IsLostMajority: c.IsLostMajority, + IsDown: c.IsDown, + IsClusterDown: c.IsClusterDown, + IsAllDbUp: c.IsAllDbUp, + IsFailable: c.IsFailable, + IsPostgres: c.IsPostgres, + IsProvision: c.IsProvision, + IsNeedProxiesRestart: c.IsNeedProxiesRestart, + IsNeedProxiesReprov: c.IsNeedProxiesReprov, + IsNeedDatabasesRestart: c.IsNeedDatabasesRestart, + IsNeedDatabasesRollingRestart: c.IsNeedDatabasesRollingRestart, + IsNeedDatabasesRollingReprov: c.IsNeedDatabasesRollingReprov, + IsNeedDatabasesReprov: c.IsNeedDatabasesReprov, + IsValidBackup: c.IsValidBackup, + IsNotMonitoring: c.IsNotMonitoring, + IsCapturing: c.IsCapturing, + CleanAll: c.CleanAll, + Topology: c.Topology, + Uptime: c.Uptime, + UptimeFailable: c.UptimeFailable, + UptimeSemiSync: c.UptimeSemiSync, + MonitorSpin: c.MonitorSpin, + DbTableSize: c.DBTableSize, + DbIndexSize: c.DBIndexSize, + Connections: int32(c.Connections), + Qps: c.QPS, + HaveDBTLSCert: c.HaveDBTLSCert, + HaveDBTLSOldCert: c.HaveDBTLSOldCert, + WaitingRejoin: int32(c.WaitingRejoin), + WaitingSwitchover: int32(c.WaitingSwitchover), + WaitingFailover: int32(c.WaitingFailover), + } + + return out +} + type ClusterSorter []*Cluster func (a ClusterSorter) Len() int { return len(a) } diff --git a/repmanv3/cluster.pb.go b/repmanv3/cluster.pb.go index 18df446eb..e3363d2a7 100644 --- a/repmanv3/cluster.pb.go +++ b/repmanv3/cluster.pb.go @@ -54,7 +54,7 @@ var file_cluster_proto_rawDesc = []byte{ 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2d, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, - 0x61, 0x6c, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0xe2, 0x13, 0x0a, 0x0e, 0x43, 0x6c, + 0x61, 0x6c, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0xe3, 0x14, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, @@ -95,128 +95,136 @@ var file_cluster_proto_rawDesc = []byte{ 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2f, 0x7b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xe8, 0x04, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xda, 0x04, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x87, 0x04, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x04, 0x12, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xf9, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xf2, 0x03, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x4c, 0x12, - 0x4a, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x3e, 0x12, + 0x3c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x4a, 0x12, 0x48, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x5a, 0x58, 0x12, 0x56, 0x2f, 0x76, 0x33, 0x2f, 0x63, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x4a, 0x12, + 0x48, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x5a, 0x58, 0x12, 0x56, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x7d, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x7d, 0x5a, 0x2e, + 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x37, + 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x38, 0x22, 0x2e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x6f, - 0x72, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x7d, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x7d, 0x5a, 0x2e, 0x12, 0x2c, - 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x37, 0x12, 0x35, - 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x38, 0x22, 0x2e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, - 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x46, 0x72, 0x6f, 0x6d, - 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x32, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x1a, 0x17, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x7d, 0x30, 0x01, - 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x46, 0x72, + 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x32, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x33, 0x2f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x1a, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, + 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x7d, + 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x86, + 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, + 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, + 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x28, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, + 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, + 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x23, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, - 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, - 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x61, - 0x67, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, - 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, 0x73, - 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, 0x02, 0x12, - 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, 0x02, + 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, 0x12, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, 0x12, 0x6b, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, 0x6f, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x42, 0x32, - 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, - 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x42, + 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, + 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_cluster_proto_goTypes = []interface{}{ @@ -244,24 +252,26 @@ var file_cluster_proto_depIdxs = []int32{ 0, // 7: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster 0, // 8: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster 0, // 9: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster - 0, // 10: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster - 0, // 11: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster - 4, // 12: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction - 5, // 13: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage - 6, // 14: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty - 7, // 15: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct - 7, // 16: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct - 6, // 17: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty - 6, // 18: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty - 7, // 19: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct - 8, // 20: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate - 9, // 21: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup - 10, // 22: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag - 7, // 23: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct - 11, // 24: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table - 6, // 25: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty - 13, // [13:26] is the sub-list for method output_type - 0, // [0:13] is the sub-list for method input_type + 0, // 10: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster + 0, // 11: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster + 0, // 12: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster + 4, // 13: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction + 5, // 14: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage + 6, // 15: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty + 7, // 16: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct + 7, // 17: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct + 6, // 18: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty + 6, // 19: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty + 7, // 20: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct + 8, // 21: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate + 9, // 22: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup + 10, // 23: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag + 0, // 24: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster + 7, // 25: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct + 11, // 26: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table + 6, // 27: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty + 14, // [14:28] is the sub-list for method output_type + 0, // [0:14] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/repmanv3/cluster.pb.gw.go b/repmanv3/cluster.pb.gw.go index 51c48d4e6..c9d20d424 100644 --- a/repmanv3/cluster.pb.gw.go +++ b/repmanv3/cluster.pb.gw.go @@ -852,7 +852,7 @@ func local_request_ClusterService_PerformClusterAction_0(ctx context.Context, ma } var ( - filter_ClusterService_PerformClusterAction_1 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "action": 2, "clusterShardingName": 3}, Base: []int{1, 1, 1, 3, 2, 0, 0, 0}, Check: []int{0, 1, 2, 1, 2, 3, 5, 4}} + filter_ClusterService_PerformClusterAction_1 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "action": 2, "sharding_name": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 1, 1, 3, 4, 5}} ) func request_ClusterService_PerformClusterAction_1(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -889,14 +889,14 @@ func request_ClusterService_PerformClusterAction_1(ctx context.Context, marshale protoReq.Action = ClusterAction_Action(e) - val, ok = pathParams["cluster.clusterShardingName"] + val, ok = pathParams["sharding_name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.clusterShardingName") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "sharding_name") } - err = runtime.PopulateFieldFromPath(&protoReq, "cluster.clusterShardingName", val) + protoReq.ShardingName, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.clusterShardingName", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "sharding_name", err) } if err := req.ParseForm(); err != nil { @@ -945,14 +945,14 @@ func local_request_ClusterService_PerformClusterAction_1(ctx context.Context, ma protoReq.Action = ClusterAction_Action(e) - val, ok = pathParams["cluster.clusterShardingName"] + val, ok = pathParams["sharding_name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.clusterShardingName") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "sharding_name") } - err = runtime.PopulateFieldFromPath(&protoReq, "cluster.clusterShardingName", val) + protoReq.ShardingName, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.clusterShardingName", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "sharding_name", err) } if err := req.ParseForm(); err != nil { @@ -1889,6 +1889,51 @@ func request_ClusterService_GetTags_0(ctx context.Context, marshaler runtime.Mar } +var ( + filter_ClusterService_GetShards_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ClusterService_GetShards_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (ClusterService_GetShardsClient, runtime.ServerMetadata, error) { + var protoReq Cluster + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_GetShards_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.GetShards(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + var ( filter_ClusterService_GetQueryRules_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -2629,7 +2674,7 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/actions/{action}/{cluster.clusterShardingName}")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/actions/{action}/{sharding_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -2828,6 +2873,13 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve return }) + mux.Handle("GET", pattern_ClusterService_GetShards_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + mux.Handle("GET", pattern_ClusterService_GetQueryRules_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -3189,7 +3241,7 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/actions/{action}/{cluster.clusterShardingName}")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterAction", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/actions/{action}/{sharding_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -3405,6 +3457,26 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ClusterService_GetShards_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/GetShards", runtime.WithHTTPPathPattern("/v3/clusters/{name}/shardclusters")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_GetShards_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_GetShards_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ClusterService_GetQueryRules_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3523,7 +3595,7 @@ var ( pattern_ClusterService_PerformClusterAction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"v3", "clusters", "actions", "action", "cluster.name"}, "")) - pattern_ClusterService_PerformClusterAction_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"v3", "clusters", "cluster.name", "actions", "action", "cluster.clusterShardingName"}, "")) + pattern_ClusterService_PerformClusterAction_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"v3", "clusters", "cluster.name", "actions", "action", "sharding_name"}, "")) pattern_ClusterService_PerformClusterAction_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"v3", "clusters", "cluster.name", "actions", "action", "server.host", "server.port"}, "")) @@ -3545,6 +3617,8 @@ var ( pattern_ClusterService_GetTags_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "tags"}, "")) + pattern_ClusterService_GetShards_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "shardclusters"}, "")) + pattern_ClusterService_GetQueryRules_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "queryrules"}, "")) pattern_ClusterService_GetSchema_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "schema"}, "")) @@ -3593,6 +3667,8 @@ var ( forward_ClusterService_GetTags_0 = runtime.ForwardResponseStream + forward_ClusterService_GetShards_0 = runtime.ForwardResponseStream + forward_ClusterService_GetQueryRules_0 = runtime.ForwardResponseStream forward_ClusterService_GetSchema_0 = runtime.ForwardResponseStream diff --git a/repmanv3/cluster_grpc.pb.go b/repmanv3/cluster_grpc.pb.go index 1f4ba4e85..b21234fc2 100644 --- a/repmanv3/cluster_grpc.pb.go +++ b/repmanv3/cluster_grpc.pb.go @@ -150,6 +150,7 @@ type ClusterServiceClient interface { GetClientCertificates(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Certificate, error) GetBackups(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetBackupsClient, error) GetTags(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetTagsClient, error) + GetShards(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetShardsClient, error) GetQueryRules(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetQueryRulesClient, error) GetSchema(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetSchemaClient, error) ExecuteTableAction(ctx context.Context, in *TableAction, opts ...grpc.CallOption) (*emptypb.Empty, error) @@ -304,8 +305,40 @@ func (x *clusterServiceGetTagsClient) Recv() (*Tag, error) { return m, nil } +func (c *clusterServiceClient) GetShards(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetShardsClient, error) { + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[3], "/signal18.replication_manager.v3.ClusterService/GetShards", opts...) + if err != nil { + return nil, err + } + x := &clusterServiceGetShardsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type ClusterService_GetShardsClient interface { + Recv() (*Cluster, error) + grpc.ClientStream +} + +type clusterServiceGetShardsClient struct { + grpc.ClientStream +} + +func (x *clusterServiceGetShardsClient) Recv() (*Cluster, error) { + m := new(Cluster) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *clusterServiceClient) GetQueryRules(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetQueryRulesClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[3], "/signal18.replication_manager.v3.ClusterService/GetQueryRules", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[4], "/signal18.replication_manager.v3.ClusterService/GetQueryRules", opts...) if err != nil { return nil, err } @@ -337,7 +370,7 @@ func (x *clusterServiceGetQueryRulesClient) Recv() (*structpb.Struct, error) { } func (c *clusterServiceClient) GetSchema(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetSchemaClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[4], "/signal18.replication_manager.v3.ClusterService/GetSchema", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[5], "/signal18.replication_manager.v3.ClusterService/GetSchema", opts...) if err != nil { return nil, err } @@ -389,6 +422,7 @@ type ClusterServiceServer interface { GetClientCertificates(context.Context, *Cluster) (*Certificate, error) GetBackups(*Cluster, ClusterService_GetBackupsServer) error GetTags(*Cluster, ClusterService_GetTagsServer) error + GetShards(*Cluster, ClusterService_GetShardsServer) error GetQueryRules(*Cluster, ClusterService_GetQueryRulesServer) error GetSchema(*Cluster, ClusterService_GetSchemaServer) error ExecuteTableAction(context.Context, *TableAction) (*emptypb.Empty, error) @@ -423,6 +457,9 @@ func (UnimplementedClusterServiceServer) GetBackups(*Cluster, ClusterService_Get func (UnimplementedClusterServiceServer) GetTags(*Cluster, ClusterService_GetTagsServer) error { return status.Errorf(codes.Unimplemented, "method GetTags not implemented") } +func (UnimplementedClusterServiceServer) GetShards(*Cluster, ClusterService_GetShardsServer) error { + return status.Errorf(codes.Unimplemented, "method GetShards not implemented") +} func (UnimplementedClusterServiceServer) GetQueryRules(*Cluster, ClusterService_GetQueryRulesServer) error { return status.Errorf(codes.Unimplemented, "method GetQueryRules not implemented") } @@ -598,6 +635,27 @@ func (x *clusterServiceGetTagsServer) Send(m *Tag) error { return x.ServerStream.SendMsg(m) } +func _ClusterService_GetShards_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(Cluster) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ClusterServiceServer).GetShards(m, &clusterServiceGetShardsServer{stream}) +} + +type ClusterService_GetShardsServer interface { + Send(*Cluster) error + grpc.ServerStream +} + +type clusterServiceGetShardsServer struct { + grpc.ServerStream +} + +func (x *clusterServiceGetShardsServer) Send(m *Cluster) error { + return x.ServerStream.SendMsg(m) +} + func _ClusterService_GetQueryRules_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(Cluster) if err := stream.RecvMsg(m); err != nil { @@ -706,6 +764,11 @@ var ClusterService_ServiceDesc = grpc.ServiceDesc{ Handler: _ClusterService_GetTags_Handler, ServerStreams: true, }, + { + StreamName: "GetShards", + Handler: _ClusterService_GetShards_Handler, + ServerStreams: true, + }, { StreamName: "GetQueryRules", Handler: _ClusterService_GetQueryRules_Handler, diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index 3a6254d9a..fc6dcc75b 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -1157,8 +1157,47 @@ type Cluster struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - ClusterShardingName string `protobuf:"bytes,2,opt,name=clusterShardingName,proto3" json:"clusterShardingName,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Tenant string `protobuf:"bytes,2,opt,name=tenant,proto3" json:"tenant,omitempty"` + WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` + ServerIdList []string `protobuf:"bytes,4,rep,name=server_id_list,json=dbServers,proto3" json:"server_id_list,omitempty"` + ProxyIdList []string `protobuf:"bytes,5,rep,name=proxy_id_list,json=proxyServers,proto3" json:"proxy_id_list,omitempty"` + FailoverCtr int32 `protobuf:"varint,6,opt,name=failover_ctr,json=failoverCounter,proto3" json:"failover_ctr,omitempty"` + FailoverTs int64 `protobuf:"varint,7,opt,name=failover_ts,json=failoverLastTime,proto3" json:"failover_ts,omitempty"` + Status string `protobuf:"bytes,8,opt,name=status,json=activePassiveStatus,proto3" json:"status,omitempty"` + IsSplitBrain bool `protobuf:"varint,9,opt,name=is_split_brain,json=isSplitBrain,proto3" json:"is_split_brain,omitempty"` + IsFailedArbitrator bool `protobuf:"varint,10,opt,name=is_failed_arbitrator,json=isFailedArbitrator,proto3" json:"is_failed_arbitrator,omitempty"` + IsLostMajority bool `protobuf:"varint,11,opt,name=is_lost_majority,json=isLostMajority,proto3" json:"is_lost_majority,omitempty"` + IsDown bool `protobuf:"varint,12,opt,name=is_down,json=isDown,proto3" json:"is_down,omitempty"` + IsClusterDown bool `protobuf:"varint,13,opt,name=is_cluster_down,json=isClusterDown,proto3" json:"is_cluster_down,omitempty"` + IsAllDbUp bool `protobuf:"varint,14,opt,name=is_all_db_up,json=isAllDbUp,proto3" json:"is_all_db_up,omitempty"` + IsFailable bool `protobuf:"varint,15,opt,name=is_failable,json=isFailable,proto3" json:"is_failable,omitempty"` + IsPostgres bool `protobuf:"varint,16,opt,name=is_postgres,json=isPostgres,proto3" json:"is_postgres,omitempty"` + IsProvision bool `protobuf:"varint,17,opt,name=is_provision,json=isProvision,proto3" json:"is_provision,omitempty"` + IsNeedProxiesRestart bool `protobuf:"varint,18,opt,name=is_need_proxies_restart,json=isNeedProxyRestart,proto3" json:"is_need_proxies_restart,omitempty"` + IsNeedProxiesReprov bool `protobuf:"varint,19,opt,name=is_need_proxies_reprov,json=isNeedProxiesRestart,proto3" json:"is_need_proxies_reprov,omitempty"` + IsNeedDatabasesRestart bool `protobuf:"varint,20,opt,name=is_need_databases_restart,json=isNeedDatabasesRestart,proto3" json:"is_need_databases_restart,omitempty"` + IsNeedDatabasesRollingRestart bool `protobuf:"varint,21,opt,name=is_need_databases_rolling_restart,json=isNeedDatabasesRollingRestart,proto3" json:"is_need_databases_rolling_restart,omitempty"` + IsNeedDatabasesRollingReprov bool `protobuf:"varint,22,opt,name=is_need_databases_rolling_reprov,json=isNeedDatabasesRollingReprov,proto3" json:"is_need_databases_rolling_reprov,omitempty"` + IsNeedDatabasesReprov bool `protobuf:"varint,23,opt,name=is_need_databases_reprov,json=isNeedDatabasesReprov,proto3" json:"is_need_databases_reprov,omitempty"` + IsValidBackup bool `protobuf:"varint,24,opt,name=is_valid_backup,json=isValidBackup,proto3" json:"is_valid_backup,omitempty"` + IsNotMonitoring bool `protobuf:"varint,25,opt,name=is_not_monitoring,json=isNotMonitoring,proto3" json:"is_not_monitoring,omitempty"` + IsCapturing bool `protobuf:"varint,26,opt,name=is_capturing,json=isCapturing,proto3" json:"is_capturing,omitempty"` + CleanAll bool `protobuf:"varint,27,opt,name=clean_all,json=cleanReplication,proto3" json:"clean_all,omitempty"` + Topology string `protobuf:"bytes,28,opt,name=topology,proto3" json:"topology,omitempty"` + Uptime string `protobuf:"bytes,29,opt,name=uptime,proto3" json:"uptime,omitempty"` + UptimeFailable string `protobuf:"bytes,30,opt,name=uptime_failable,json=uptimeFailable,proto3" json:"uptime_failable,omitempty"` + UptimeSemiSync string `protobuf:"bytes,31,opt,name=uptime_semi_sync,json=uptimeSemisync,proto3" json:"uptime_semi_sync,omitempty"` + MonitorSpin string `protobuf:"bytes,32,opt,name=monitor_spin,json=monitorSpin,proto3" json:"monitor_spin,omitempty"` + DbTableSize int64 `protobuf:"varint,33,opt,name=db_table_size,json=dbTableSize,proto3" json:"db_table_size,omitempty"` + DbIndexSize int64 `protobuf:"varint,34,opt,name=db_index_size,json=dbIndexSize,proto3" json:"db_index_size,omitempty"` + Connections int32 `protobuf:"varint,35,opt,name=connections,proto3" json:"connections,omitempty"` + Qps int64 `protobuf:"varint,36,opt,name=qps,proto3" json:"qps,omitempty"` + HaveDBTLSCert bool `protobuf:"varint,37,opt,name=HaveDBTLSCert,json=haveDBTLSCert,proto3" json:"HaveDBTLSCert,omitempty"` + HaveDBTLSOldCert bool `protobuf:"varint,38,opt,name=HaveDBTLSOldCert,json=haveDBTLSOldCert,proto3" json:"HaveDBTLSOldCert,omitempty"` + WaitingRejoin int32 `protobuf:"varint,39,opt,name=WaitingRejoin,json=waitingRejoin,proto3" json:"WaitingRejoin,omitempty"` + WaitingSwitchover int32 `protobuf:"varint,40,opt,name=WaitingSwitchover,json=waitingSwitchover,proto3" json:"WaitingSwitchover,omitempty"` + WaitingFailover int32 `protobuf:"varint,41,opt,name=WaitingFailover,json=waitingFailover,proto3" json:"WaitingFailover,omitempty"` } func (x *Cluster) Reset() { @@ -1200,13 +1239,286 @@ func (x *Cluster) GetName() string { return "" } -func (x *Cluster) GetClusterShardingName() string { +func (x *Cluster) GetTenant() string { if x != nil { - return x.ClusterShardingName + return x.Tenant } return "" } +func (x *Cluster) GetWorkingDir() string { + if x != nil { + return x.WorkingDir + } + return "" +} + +func (x *Cluster) GetServerIdList() []string { + if x != nil { + return x.ServerIdList + } + return nil +} + +func (x *Cluster) GetProxyIdList() []string { + if x != nil { + return x.ProxyIdList + } + return nil +} + +func (x *Cluster) GetFailoverCtr() int32 { + if x != nil { + return x.FailoverCtr + } + return 0 +} + +func (x *Cluster) GetFailoverTs() int64 { + if x != nil { + return x.FailoverTs + } + return 0 +} + +func (x *Cluster) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *Cluster) GetIsSplitBrain() bool { + if x != nil { + return x.IsSplitBrain + } + return false +} + +func (x *Cluster) GetIsFailedArbitrator() bool { + if x != nil { + return x.IsFailedArbitrator + } + return false +} + +func (x *Cluster) GetIsLostMajority() bool { + if x != nil { + return x.IsLostMajority + } + return false +} + +func (x *Cluster) GetIsDown() bool { + if x != nil { + return x.IsDown + } + return false +} + +func (x *Cluster) GetIsClusterDown() bool { + if x != nil { + return x.IsClusterDown + } + return false +} + +func (x *Cluster) GetIsAllDbUp() bool { + if x != nil { + return x.IsAllDbUp + } + return false +} + +func (x *Cluster) GetIsFailable() bool { + if x != nil { + return x.IsFailable + } + return false +} + +func (x *Cluster) GetIsPostgres() bool { + if x != nil { + return x.IsPostgres + } + return false +} + +func (x *Cluster) GetIsProvision() bool { + if x != nil { + return x.IsProvision + } + return false +} + +func (x *Cluster) GetIsNeedProxiesRestart() bool { + if x != nil { + return x.IsNeedProxiesRestart + } + return false +} + +func (x *Cluster) GetIsNeedProxiesReprov() bool { + if x != nil { + return x.IsNeedProxiesReprov + } + return false +} + +func (x *Cluster) GetIsNeedDatabasesRestart() bool { + if x != nil { + return x.IsNeedDatabasesRestart + } + return false +} + +func (x *Cluster) GetIsNeedDatabasesRollingRestart() bool { + if x != nil { + return x.IsNeedDatabasesRollingRestart + } + return false +} + +func (x *Cluster) GetIsNeedDatabasesRollingReprov() bool { + if x != nil { + return x.IsNeedDatabasesRollingReprov + } + return false +} + +func (x *Cluster) GetIsNeedDatabasesReprov() bool { + if x != nil { + return x.IsNeedDatabasesReprov + } + return false +} + +func (x *Cluster) GetIsValidBackup() bool { + if x != nil { + return x.IsValidBackup + } + return false +} + +func (x *Cluster) GetIsNotMonitoring() bool { + if x != nil { + return x.IsNotMonitoring + } + return false +} + +func (x *Cluster) GetIsCapturing() bool { + if x != nil { + return x.IsCapturing + } + return false +} + +func (x *Cluster) GetCleanAll() bool { + if x != nil { + return x.CleanAll + } + return false +} + +func (x *Cluster) GetTopology() string { + if x != nil { + return x.Topology + } + return "" +} + +func (x *Cluster) GetUptime() string { + if x != nil { + return x.Uptime + } + return "" +} + +func (x *Cluster) GetUptimeFailable() string { + if x != nil { + return x.UptimeFailable + } + return "" +} + +func (x *Cluster) GetUptimeSemiSync() string { + if x != nil { + return x.UptimeSemiSync + } + return "" +} + +func (x *Cluster) GetMonitorSpin() string { + if x != nil { + return x.MonitorSpin + } + return "" +} + +func (x *Cluster) GetDbTableSize() int64 { + if x != nil { + return x.DbTableSize + } + return 0 +} + +func (x *Cluster) GetDbIndexSize() int64 { + if x != nil { + return x.DbIndexSize + } + return 0 +} + +func (x *Cluster) GetConnections() int32 { + if x != nil { + return x.Connections + } + return 0 +} + +func (x *Cluster) GetQps() int64 { + if x != nil { + return x.Qps + } + return 0 +} + +func (x *Cluster) GetHaveDBTLSCert() bool { + if x != nil { + return x.HaveDBTLSCert + } + return false +} + +func (x *Cluster) GetHaveDBTLSOldCert() bool { + if x != nil { + return x.HaveDBTLSOldCert + } + return false +} + +func (x *Cluster) GetWaitingRejoin() int32 { + if x != nil { + return x.WaitingRejoin + } + return 0 +} + +func (x *Cluster) GetWaitingSwitchover() int32 { + if x != nil { + return x.WaitingSwitchover + } + return 0 +} + +func (x *Cluster) GetWaitingFailover() int32 { + if x != nil { + return x.WaitingFailover + } + return 0 +} + type ClusterSetting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1291,10 +1603,11 @@ type ClusterAction struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Action ClusterAction_Action `protobuf:"varint,3,opt,name=action,proto3,enum=signal18.replication_manager.v3.ClusterAction_Action" json:"action,omitempty"` - Server *ClusterAction_Server `protobuf:"bytes,4,opt,name=server,proto3" json:"server,omitempty"` - Topology ClusterAction_ReplicationTopology `protobuf:"varint,5,opt,name=topology,proto3,enum=signal18.replication_manager.v3.ClusterAction_ReplicationTopology" json:"topology,omitempty"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Action ClusterAction_Action `protobuf:"varint,3,opt,name=action,proto3,enum=signal18.replication_manager.v3.ClusterAction_Action" json:"action,omitempty"` + Server *ClusterAction_Server `protobuf:"bytes,4,opt,name=server,proto3" json:"server,omitempty"` + Topology ClusterAction_ReplicationTopology `protobuf:"varint,5,opt,name=topology,proto3,enum=signal18.replication_manager.v3.ClusterAction_ReplicationTopology" json:"topology,omitempty"` + ShardingName string `protobuf:"bytes,6,opt,name=sharding_name,json=shardingName,proto3" json:"sharding_name,omitempty"` } func (x *ClusterAction) Reset() { @@ -1357,6 +1670,13 @@ func (x *ClusterAction) GetTopology() ClusterAction_ReplicationTopology { return ClusterAction_RT_UNSPECIFIED } +func (x *ClusterAction) GetShardingName() string { + if x != nil { + return x.ShardingName + } + return "" +} + type StatusMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2084,474 +2404,573 @@ var file_messages_proto_rawDesc = []byte{ 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4f, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, + 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xdd, 0x0c, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x21, + 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x62, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x5f, 0x63, 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, + 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x73, 0x73, + 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, + 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x69, 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x12, + 0x30, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x62, + 0x69, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, + 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x6a, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4c, + 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x69, + 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, + 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, + 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1f, 0x0a, 0x0c, + 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x62, 0x5f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x44, 0x62, 0x55, 0x70, 0x12, 0x1f, 0x0a, + 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x17, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x72, + 0x6f, 0x78, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x73, 0x5f, 0x6e, 0x65, + 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x72, 0x6f, + 0x76, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, + 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, + 0x19, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x16, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x48, 0x0a, 0x21, 0x69, 0x73, 0x5f, 0x6e, + 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, + 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x1d, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x73, 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x46, 0x0a, 0x20, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, + 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, + 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x6f, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x12, 0x37, 0x0a, 0x18, 0x69, 0x73, + 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, + 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, + 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x70, + 0x72, 0x6f, 0x76, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x69, + 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, + 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x61, + 0x70, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, + 0x73, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x09, 0x63, 0x6c, + 0x65, 0x61, 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, + 0x6c, 0x65, 0x61, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, + 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x74, + 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, + 0x74, 0x69, 0x6d, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, + 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, + 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x5f, 0x73, 0x70, 0x69, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x62, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x64, 0x62, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, + 0x0d, 0x64, 0x62, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x22, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x70, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x71, 0x70, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x48, 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, + 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, + 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x48, + 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, 0x53, 0x4f, 0x6c, 0x64, 0x43, 0x65, 0x72, 0x74, 0x18, + 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, 0x53, + 0x4f, 0x6c, 0x64, 0x43, 0x65, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x57, 0x61, 0x69, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, + 0x11, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, + 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, + 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x57, + 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x29, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, - 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, - 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, 0x0e, - 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, 0x50, - 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, - 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, - 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, - 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, 0x59, - 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, - 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, - 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, - 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, - 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x12, - 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, - 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, - 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x0c, - 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x52, - 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, - 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, - 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, 0x0a, - 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, - 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, - 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, - 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, - 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, - 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x14, - 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, - 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x1b, - 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, - 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, 0x1b, - 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, - 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, 0x12, - 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, - 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, - 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, - 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, - 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x1f, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, - 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, - 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, - 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, - 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, - 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, - 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, 0x12, - 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, - 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, 0x4d, - 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, - 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, - 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, 0x0a, - 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, - 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, 0x0a, - 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, - 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, - 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, - 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, - 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, - 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, - 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, - 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, - 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, - 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x06, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, 0x0e, 0x0a, + 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, + 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, + 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x03, + 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, + 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, + 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, 0x59, 0x10, + 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, + 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, + 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, + 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, + 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, + 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x12, 0x0a, + 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, + 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x41, + 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x0c, 0x12, + 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0d, + 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, + 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, + 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, + 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, + 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, + 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x14, 0x12, + 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, + 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, + 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x1b, 0x0a, + 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x5f, + 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, 0x1b, 0x0a, + 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, + 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, 0x12, 0x18, + 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, + 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, + 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, + 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, + 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x1f, 0x12, + 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x50, + 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, + 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, 0x0a, + 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, + 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, + 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, 0x12, 0x22, + 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, + 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, 0x4d, 0x47, + 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, + 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, + 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, 0x0a, 0x11, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, + 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x32, + 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, + 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, 0x0a, 0x25, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, + 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, + 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, + 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, + 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, + 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, + 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, + 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, + 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, + 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x43, + 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, + 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, + 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, 0x12, 0x2d, + 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x1b, 0x0a, + 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, + 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, + 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, + 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x22, 0x0a, + 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, + 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, + 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x53, + 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x41, + 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, + 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, + 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, + 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, + 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x4f, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, + 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x41, + 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, + 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, 0x12, 0x1e, + 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x48, 0x59, + 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x29, + 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x4c, 0x41, + 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x48, 0x45, + 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, + 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, 0x41, 0x53, + 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, 0x4f, 0x53, + 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, + 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, 0x43, + 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, + 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, 0x43, + 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, + 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x10, + 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, + 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, + 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, + 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, + 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, + 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, + 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, + 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, + 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, 0x10, + 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x45, + 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, + 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, 0x1a, 0x12, + 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, + 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, 0x14, 0x0a, + 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x55, 0x53, + 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, + 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1d, 0x12, + 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, + 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, + 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, + 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, + 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, + 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, + 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, 0x18, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, + 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, 0x1a, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, + 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, 0x0c, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, 0x25, 0x0a, + 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, + 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, + 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, + 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, 0x4f, 0x53, + 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, + 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, 0x1e, 0x0a, + 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, + 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, 0x0a, + 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, + 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, 0x1c, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x16, 0x0a, + 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, + 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, + 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x2e, 0x12, + 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, 0x27, 0x0a, + 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, 0x44, - 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, - 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, 0x12, - 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, - 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x1b, - 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, - 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x22, - 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, - 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, 0x4e, - 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, - 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, - 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, - 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, - 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, - 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, - 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x4f, - 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, - 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, - 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, - 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, 0x12, - 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x48, - 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, - 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x4c, - 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x48, - 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, - 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, 0x41, - 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, - 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, 0x4f, - 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, 0x0a, - 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, - 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, - 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, - 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, - 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, - 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, - 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, - 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, - 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, 0x0a, - 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, - 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x47, - 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, - 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4d, - 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, - 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, 0x1a, - 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x49, - 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, 0x14, - 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x55, - 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, - 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1d, - 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x51, - 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, - 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, - 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, - 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, 0x1c, - 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, - 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, 0x18, - 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, - 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, 0x1a, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, 0x4d, - 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, 0x0c, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, 0x25, - 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, - 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, 0x4f, - 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, - 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, 0x1e, - 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, - 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, 0x1c, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, - 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x16, - 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, - 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, - 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x2e, - 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, 0x27, - 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, - 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, - 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, - 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, - 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, - 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, - 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, - 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, 0x12, - 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, - 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, - 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, - 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x38, - 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, - 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, - 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, 0x22, - 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, - 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, - 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x12, - 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x54, - 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, - 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0x8e, 0x0c, 0x0a, - 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, - 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, + 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, + 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, + 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, + 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, + 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, + 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, 0x12, 0x16, + 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, + 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, + 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, + 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, + 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x38, 0x12, + 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, + 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, + 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, 0x22, 0xaa, + 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, + 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, 0x4c, + 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x12, 0x07, + 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, + 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, + 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0xb3, 0x0c, 0x0a, 0x0d, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, - 0x1a, 0xc1, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, + 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, + 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0xc1, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, + 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, - 0x51, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, - 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, - 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, - 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, - 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, - 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, - 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, - 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, - 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, - 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, - 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, - 0x4e, 0x58, 0x10, 0x07, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, - 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, - 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, - 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, - 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, - 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, - 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, - 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, - 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, - 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, - 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, - 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, - 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, - 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, - 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, - 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, - 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, - 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, - 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, - 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, - 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, - 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, - 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, - 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, - 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, - 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, - 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, - 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, - 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, - 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, - 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, - 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, 0x07, 0x22, 0x55, 0x0a, - 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, - 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, - 0x6c, 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, - 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, - 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, - 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, - 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, - 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, - 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, - 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, - 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, - 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, - 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, - 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, - 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, - 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, - 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, - 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, - 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, - 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, - 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, - 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, - 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, - 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, + 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, + 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, + 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, + 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, + 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, + 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, + 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, + 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, + 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, + 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, + 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, + 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, + 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, + 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, + 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, + 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, + 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, + 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, + 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, + 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, + 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, + 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, + 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, + 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, + 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, + 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, + 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, + 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, + 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, + 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, + 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, + 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, + 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, + 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, + 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, + 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, + 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, + 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, + 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, + 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, + 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, + 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, + 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, + 0x07, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, + 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, + 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x22, 0x7b, 0x0a, 0x09, + 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, + 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x10, 0x01, + 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, + 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, + 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x45, 0x53, 0x10, 0x05, + 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, 0x0b, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, + 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, + 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, + 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, + 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, + 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, + 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, + 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, + 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2a, 0x55, 0x0a, 0x0d, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, + 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, + 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, + 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, + 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index 27c2beb88..f55fd944f 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -74,11 +74,262 @@ "type": "string" }, { - "name": "cluster.clusterShardingName", + "name": "cluster.tenant", "in": "query", "required": false, "type": "string" }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, { "name": "server.host", "in": "query", @@ -151,6 +402,12 @@ "MULTI_MASTER_WSREP" ], "default": "RT_UNSPECIFIED" + }, + { + "name": "shardingName", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -191,180 +448,292 @@ } }, { - "name": "cluster.clusterShardingName", + "name": "cluster.tenant", "in": "query", "required": false, "type": "string" }, { - "name": "action", + "name": "cluster.workingDir", "in": "query", "required": false, - "type": "string", - "enum": [ - "ACTION_UNSPECIFIED", - "ADD", - "ADDSERVER", - "CANCEL_ROLLING_REPROV", - "CANCEL_ROLLING_RESTART", - "CHECKSUM_ALL_TABLES", - "FAILOVER", - "MASTER_PHYSICAL_BACKUP", - "OPTIMIZE", - "RESET_FAILOVER_CONTROL", - "RESET_SLA", - "ROLLING", - "ROTATEKEYS", - "START_TRAFFIC", - "STOP_TRAFFIC", - "SWITCHOVER", - "SYSBENCH", - "WAITDATABASES", - "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP", - "PROVISION", - "UNPROVISION" - ], - "default": "ACTION_UNSPECIFIED" + "type": "string" }, { - "name": "topology", + "name": "cluster.dbServers", "in": "query", "required": false, - "type": "string", - "enum": [ - "RT_UNSPECIFIED", - "MASTER_SLAVE", - "MASTER_SLAVE_NO_GTID", - "MULTI_MASTER", - "MULTI_TIER_SLAVE", - "MAXSCALE_BINLOG", - "MULTI_MASTER_RING", - "MULTI_MASTER_WSREP" - ], - "default": "RT_UNSPECIFIED" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{cluster.name}/actions/{action}": { - "get": { - "operationId": "ClusterService_PerformClusterAction6", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "cluster.name", - "in": "path", - "required": true, - "type": "string" + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, { - "name": "action", - "in": "path", - "required": true, + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, "type": "string", - "enum": [ - "ACTION_UNSPECIFIED", - "ADD", - "ADDSERVER", - "CANCEL_ROLLING_REPROV", - "CANCEL_ROLLING_RESTART", - "CHECKSUM_ALL_TABLES", - "FAILOVER", - "MASTER_PHYSICAL_BACKUP", - "OPTIMIZE", - "RESET_FAILOVER_CONTROL", - "RESET_SLA", - "ROLLING", - "ROTATEKEYS", - "START_TRAFFIC", - "STOP_TRAFFIC", - "SWITCHOVER", - "SYSBENCH", - "WAITDATABASES", - "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP", - "PROVISION", - "UNPROVISION" - ] + "format": "int64" }, { - "name": "cluster.clusterShardingName", + "name": "cluster.activePassiveStatus", "in": "query", "required": false, "type": "string" }, { - "name": "server.host", + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", "in": "query", "required": false, "type": "string" }, { - "name": "server.port", + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", "in": "query", "required": false, "type": "string", - "format": "uint64" + "format": "int64" }, { - "name": "server.type", + "name": "cluster.dbIndexSize", "in": "query", "required": false, "type": "string", - "enum": [ - "TYPE_UNSPECIFIED", - "DATABASE", - "PROXY" - ], - "default": "TYPE_UNSPECIFIED" + "format": "int64" }, { - "name": "server.database", + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", "in": "query", "required": false, "type": "string", - "enum": [ - "DATABASE_UNSPECIFIED", - "MARIADB", - "PERCONA", - "MYSQL", - "POSTGRESQL" - ], - "default": "DATABASE_UNSPECIFIED" + "format": "int64" }, { - "name": "server.proxy", + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "action", "in": "query", "required": false, "type": "string", "enum": [ - "PROXY_UNSPECIFIED", - "MAXSCALE", - "PROXYSQL", - "SHARDPROXY", - "HAPROXY", - "MYPROXY", - "EXTPROXY", - "SPHINX" + "ACTION_UNSPECIFIED", + "ADD", + "ADDSERVER", + "CANCEL_ROLLING_REPROV", + "CANCEL_ROLLING_RESTART", + "CHECKSUM_ALL_TABLES", + "FAILOVER", + "MASTER_PHYSICAL_BACKUP", + "OPTIMIZE", + "RESET_FAILOVER_CONTROL", + "RESET_SLA", + "ROLLING", + "ROTATEKEYS", + "START_TRAFFIC", + "STOP_TRAFFIC", + "SWITCHOVER", + "SYSBENCH", + "WAITDATABASES", + "REPLICATION_BOOTSTRAP", + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" ], - "default": "PROXY_UNSPECIFIED" + "default": "ACTION_UNSPECIFIED" }, { "name": "topology", @@ -382,6 +751,12 @@ "MULTI_MASTER_WSREP" ], "default": "RT_UNSPECIFIED" + }, + { + "name": "shardingName", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -389,9 +764,9 @@ ] } }, - "/v3/clusters/{cluster.name}/actions/{action}/{cluster.clusterShardingName}": { + "/v3/clusters/{cluster.name}/actions/{action}": { "get": { - "operationId": "ClusterService_PerformClusterAction2", + "operationId": "ClusterService_PerformClusterAction6", "responses": { "200": { "description": "A successful response.", @@ -444,163 +819,275 @@ ] }, { - "name": "cluster.clusterShardingName", - "in": "path", - "required": true, + "name": "cluster.tenant", + "in": "query", + "required": false, "type": "string" }, { - "name": "server.host", + "name": "cluster.workingDir", "in": "query", "required": false, "type": "string" }, { - "name": "server.port", + "name": "cluster.dbServers", "in": "query", "required": false, - "type": "string", - "format": "uint64" + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, { - "name": "server.type", + "name": "cluster.proxyServers", "in": "query", "required": false, - "type": "string", - "enum": [ - "TYPE_UNSPECIFIED", - "DATABASE", - "PROXY" - ], - "default": "TYPE_UNSPECIFIED" + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, { - "name": "server.database", + "name": "cluster.failoverCounter", "in": "query", "required": false, - "type": "string", - "enum": [ - "DATABASE_UNSPECIFIED", - "MARIADB", - "PERCONA", - "MYSQL", - "POSTGRESQL" - ], - "default": "DATABASE_UNSPECIFIED" + "type": "integer", + "format": "int32" }, { - "name": "server.proxy", + "name": "cluster.failoverLastTime", "in": "query", "required": false, "type": "string", - "enum": [ - "PROXY_UNSPECIFIED", - "MAXSCALE", - "PROXYSQL", - "SHARDPROXY", - "HAPROXY", - "MYPROXY", - "EXTPROXY", - "SPHINX" - ], - "default": "PROXY_UNSPECIFIED" + "format": "int64" }, { - "name": "topology", + "name": "cluster.activePassiveStatus", "in": "query", "required": false, - "type": "string", - "enum": [ - "RT_UNSPECIFIED", - "MASTER_SLAVE", - "MASTER_SLAVE_NO_GTID", - "MULTI_MASTER", - "MULTI_TIER_SLAVE", - "MAXSCALE_BINLOG", - "MULTI_MASTER_RING", - "MULTI_MASTER_WSREP" - ], - "default": "RT_UNSPECIFIED" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{cluster.name}/actions/{action}/{server.host}/{server.port}": { - "get": { - "operationId": "ClusterService_PerformClusterAction3", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } + "type": "string" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "cluster.name", - "in": "path", - "required": true, + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, "type": "string" }, { - "name": "action", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "ACTION_UNSPECIFIED", - "ADD", - "ADDSERVER", - "CANCEL_ROLLING_REPROV", - "CANCEL_ROLLING_RESTART", - "CHECKSUM_ALL_TABLES", - "FAILOVER", - "MASTER_PHYSICAL_BACKUP", - "OPTIMIZE", - "RESET_FAILOVER_CONTROL", - "RESET_SLA", - "ROLLING", - "ROTATEKEYS", - "START_TRAFFIC", - "STOP_TRAFFIC", - "SWITCHOVER", - "SYSBENCH", - "WAITDATABASES", - "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP", - "PROVISION", - "UNPROVISION" - ] + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" }, { - "name": "server.host", - "in": "path", - "required": true, + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, "type": "string" }, { - "name": "server.port", - "in": "path", - "required": true, + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, "type": "string", - "format": "uint64" + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" }, { - "name": "cluster.clusterShardingName", + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "server.host", "in": "query", "required": false, "type": "string" }, + { + "name": "server.port", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, { "name": "server.type", "in": "query", @@ -660,6 +1147,12 @@ "MULTI_MASTER_WSREP" ], "default": "RT_UNSPECIFIED" + }, + { + "name": "shardingName", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -667,9 +1160,9 @@ ] } }, - "/v3/clusters/{cluster.name}/actions/{action}/{server.host}/{server.port}/{server.type}": { + "/v3/clusters/{cluster.name}/actions/{action}/{server.host}/{server.port}": { "get": { - "operationId": "ClusterService_PerformClusterAction4", + "operationId": "ClusterService_PerformClusterAction3", "responses": { "200": { "description": "A successful response.", @@ -735,562 +1228,324 @@ "format": "uint64" }, { - "name": "server.type", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "TYPE_UNSPECIFIED", - "DATABASE", - "PROXY" - ] + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" }, { - "name": "cluster.clusterShardingName", + "name": "cluster.workingDir", "in": "query", "required": false, "type": "string" }, { - "name": "server.database", + "name": "cluster.dbServers", "in": "query", "required": false, - "type": "string", - "enum": [ - "DATABASE_UNSPECIFIED", - "MARIADB", - "PERCONA", - "MYSQL", - "POSTGRESQL" - ], - "default": "DATABASE_UNSPECIFIED" + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, { - "name": "server.proxy", + "name": "cluster.proxyServers", "in": "query", "required": false, - "type": "string", - "enum": [ - "PROXY_UNSPECIFIED", - "MAXSCALE", - "PROXYSQL", - "SHARDPROXY", - "HAPROXY", - "MYPROXY", - "EXTPROXY", - "SPHINX" - ], - "default": "PROXY_UNSPECIFIED" + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, { - "name": "topology", + "name": "cluster.failoverCounter", "in": "query", "required": false, - "type": "string", - "enum": [ - "RT_UNSPECIFIED", - "MASTER_SLAVE", - "MASTER_SLAVE_NO_GTID", - "MULTI_MASTER", - "MULTI_TIER_SLAVE", - "MAXSCALE_BINLOG", - "MULTI_MASTER_RING", - "MULTI_MASTER_WSREP" - ], - "default": "RT_UNSPECIFIED" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{cluster.name}/actions/{action}/{topology}": { - "get": { - "operationId": "ClusterService_PerformClusterAction5", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "cluster.name", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "action", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "ACTION_UNSPECIFIED", - "ADD", - "ADDSERVER", - "CANCEL_ROLLING_REPROV", - "CANCEL_ROLLING_RESTART", - "CHECKSUM_ALL_TABLES", - "FAILOVER", - "MASTER_PHYSICAL_BACKUP", - "OPTIMIZE", - "RESET_FAILOVER_CONTROL", - "RESET_SLA", - "ROLLING", - "ROTATEKEYS", - "START_TRAFFIC", - "STOP_TRAFFIC", - "SWITCHOVER", - "SYSBENCH", - "WAITDATABASES", - "REPLICATION_BOOTSTRAP", - "REPLICATION_CLEANUP", - "PROVISION", - "UNPROVISION" - ] + "type": "integer", + "format": "int32" }, { - "name": "topology", - "in": "path", - "required": true, + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, "type": "string", - "enum": [ - "RT_UNSPECIFIED", - "MASTER_SLAVE", - "MASTER_SLAVE_NO_GTID", - "MULTI_MASTER", - "MULTI_TIER_SLAVE", - "MAXSCALE_BINLOG", - "MULTI_MASTER_RING", - "MULTI_MASTER_WSREP" - ] + "format": "int64" }, { - "name": "cluster.clusterShardingName", + "name": "cluster.activePassiveStatus", "in": "query", "required": false, "type": "string" }, { - "name": "server.host", + "name": "cluster.isSplitBrain", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "server.port", + "name": "cluster.isFailedArbitrator", "in": "query", "required": false, - "type": "string", - "format": "uint64" + "type": "boolean" }, { - "name": "server.type", + "name": "cluster.isLostMajority", "in": "query", "required": false, - "type": "string", - "enum": [ - "TYPE_UNSPECIFIED", - "DATABASE", - "PROXY" - ], - "default": "TYPE_UNSPECIFIED" + "type": "boolean" }, { - "name": "server.database", + "name": "cluster.isDown", "in": "query", "required": false, - "type": "string", - "enum": [ - "DATABASE_UNSPECIFIED", - "MARIADB", - "PERCONA", - "MYSQL", - "POSTGRESQL" - ], - "default": "DATABASE_UNSPECIFIED" + "type": "boolean" }, { - "name": "server.proxy", + "name": "cluster.isClusterDown", "in": "query", "required": false, - "type": "string", - "enum": [ - "PROXY_UNSPECIFIED", - "MAXSCALE", - "PROXYSQL", - "SHARDPROXY", - "HAPROXY", - "MYPROXY", - "EXTPROXY", - "SPHINX" - ], - "default": "PROXY_UNSPECIFIED" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/RESHARD_TABLE/{clusterList}": { - "get": { - "operationId": "ClusterService_ExecuteTableAction3", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } + "type": "boolean" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "cluster.name", - "in": "path", - "required": true, - "type": "string" + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" }, { - "name": "table.tableSchema", - "in": "path", - "required": true, - "type": "string" + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" }, { - "name": "table.tableName", - "in": "path", - "required": true, - "type": "string" + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" }, { - "name": "clusterList", - "in": "path", - "required": true, - "type": "string" + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" }, { - "name": "cluster.clusterShardingName", + "name": "cluster.isNeedProxyRestart", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "table.engine", + "name": "cluster.isNeedProxiesRestart", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "table.tableRows", + "name": "cluster.isNeedDatabasesRestart", "in": "query", "required": false, - "type": "string", - "format": "int64" + "type": "boolean" }, { - "name": "table.dataLength", + "name": "cluster.isNeedDatabasesRollingRestart", "in": "query", "required": false, - "type": "string", - "format": "int64" + "type": "boolean" }, { - "name": "table.indexLength", + "name": "cluster.isNeedDatabasesRollingReprov", "in": "query", "required": false, - "type": "string", - "format": "int64" + "type": "boolean" }, { - "name": "table.tableCrc", + "name": "cluster.isNeedDatabasesReprov", "in": "query", "required": false, - "type": "string", - "format": "uint64" + "type": "boolean" }, { - "name": "table.tableClusters", + "name": "cluster.isValidBackup", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "table.tableSync", + "name": "cluster.isNotMonitoring", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "action", + "name": "cluster.isCapturing", "in": "query", "required": false, - "type": "string", - "enum": [ - "ACTION_UNSPECIFIED", - "CHECKSUM_TABLE", - "MOVE_TABLE", - "RESHARD_TABLE", - "UNIVERSAL_TABLE" - ], - "default": "ACTION_UNSPECIFIED" + "type": "boolean" }, { - "name": "clusterShard", + "name": "cluster.cleanReplication", "in": "query", "required": false, - "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/{action}": { - "get": { - "operationId": "ClusterService_ExecuteTableAction", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } + "type": "boolean" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "cluster.name", - "in": "path", - "required": true, + "name": "cluster.topology", + "in": "query", + "required": false, "type": "string" }, { - "name": "table.tableSchema", - "in": "path", - "required": true, + "name": "cluster.uptime", + "in": "query", + "required": false, "type": "string" }, { - "name": "table.tableName", - "in": "path", - "required": true, + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, "type": "string" }, { - "name": "action", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "ACTION_UNSPECIFIED", - "CHECKSUM_TABLE", - "MOVE_TABLE", - "RESHARD_TABLE", - "UNIVERSAL_TABLE" - ] - }, - { - "name": "cluster.clusterShardingName", + "name": "cluster.uptimeSemisync", "in": "query", "required": false, "type": "string" }, { - "name": "table.engine", + "name": "cluster.monitorSpin", "in": "query", "required": false, "type": "string" }, { - "name": "table.tableRows", + "name": "cluster.dbTableSize", "in": "query", "required": false, "type": "string", "format": "int64" }, { - "name": "table.dataLength", + "name": "cluster.dbIndexSize", "in": "query", "required": false, "type": "string", "format": "int64" }, { - "name": "table.indexLength", + "name": "cluster.connections", "in": "query", "required": false, - "type": "string", - "format": "int64" + "type": "integer", + "format": "int32" }, { - "name": "table.tableCrc", + "name": "cluster.qps", "in": "query", "required": false, "type": "string", - "format": "uint64" - }, - { - "name": "table.tableClusters", - "in": "query", - "required": false, - "type": "string" + "format": "int64" }, { - "name": "table.tableSync", + "name": "cluster.haveDBTLSCert", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "clusterShard", + "name": "cluster.haveDBTLSOldCert", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "clusterList", + "name": "cluster.waitingRejoin", "in": "query", "required": false, - "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/{action}/{clusterShard}": { - "get": { - "operationId": "ClusterService_ExecuteTableAction2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "cluster.name", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "table.tableSchema", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "table.tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "action", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "ACTION_UNSPECIFIED", - "CHECKSUM_TABLE", - "MOVE_TABLE", - "RESHARD_TABLE", - "UNIVERSAL_TABLE" - ] + "type": "integer", + "format": "int32" }, { - "name": "clusterShard", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "cluster.clusterShardingName", + "name": "cluster.waitingSwitchover", "in": "query", "required": false, - "type": "string" + "type": "integer", + "format": "int32" }, { - "name": "table.engine", + "name": "cluster.waitingFailover", "in": "query", "required": false, - "type": "string" + "type": "integer", + "format": "int32" }, { - "name": "table.tableRows", + "name": "server.type", "in": "query", "required": false, "type": "string", - "format": "int64" + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" }, { - "name": "table.dataLength", + "name": "server.database", "in": "query", "required": false, "type": "string", - "format": "int64" + "enum": [ + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" + ], + "default": "DATABASE_UNSPECIFIED" }, { - "name": "table.indexLength", + "name": "server.proxy", "in": "query", "required": false, "type": "string", - "format": "int64" + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" }, { - "name": "table.tableCrc", + "name": "topology", "in": "query", "required": false, "type": "string", - "format": "uint64" - }, - { - "name": "table.tableClusters", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "table.tableSync", - "in": "query", - "required": false, - "type": "string" + "enum": [ + "RT_UNSPECIFIED", + "MASTER_SLAVE", + "MASTER_SLAVE_NO_GTID", + "MULTI_MASTER", + "MULTI_TIER_SLAVE", + "MAXSCALE_BINLOG", + "MULTI_MASTER_RING", + "MULTI_MASTER_WSREP" + ], + "default": "RT_UNSPECIFIED" }, { - "name": "clusterList", + "name": "shardingName", "in": "query", "required": false, "type": "string" @@ -1301,9 +1556,9 @@ ] } }, - "/v3/clusters/{cluster.name}/services/actions/{action}": { + "/v3/clusters/{cluster.name}/actions/{action}/{server.host}/{server.port}/{server.type}": { "get": { - "operationId": "ClusterService_PerformClusterAction7", + "operationId": "ClusterService_PerformClusterAction4", "responses": { "200": { "description": "A successful response.", @@ -1355,289 +1610,5929 @@ "UNPROVISION" ] }, - { - "name": "cluster.clusterShardingName", - "in": "query", - "required": false, - "type": "string" - }, { "name": "server.host", - "in": "query", - "required": false, + "in": "path", + "required": true, "type": "string" }, { "name": "server.port", - "in": "query", - "required": false, + "in": "path", + "required": true, "type": "string", "format": "uint64" }, { "name": "server.type", - "in": "query", - "required": false, + "in": "path", + "required": true, "type": "string", "enum": [ "TYPE_UNSPECIFIED", "DATABASE", "PROXY" - ], - "default": "TYPE_UNSPECIFIED" + ] }, { - "name": "server.database", + "name": "cluster.tenant", "in": "query", "required": false, - "type": "string", - "enum": [ - "DATABASE_UNSPECIFIED", - "MARIADB", - "PERCONA", - "MYSQL", - "POSTGRESQL" - ], - "default": "DATABASE_UNSPECIFIED" + "type": "string" }, { - "name": "server.proxy", + "name": "cluster.workingDir", "in": "query", "required": false, - "type": "string", - "enum": [ - "PROXY_UNSPECIFIED", - "MAXSCALE", - "PROXYSQL", - "SHARDPROXY", - "HAPROXY", - "MYPROXY", - "EXTPROXY", - "SPHINX" - ], - "default": "PROXY_UNSPECIFIED" + "type": "string" }, { - "name": "topology", + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", "in": "query", "required": false, "type": "string", - "enum": [ - "RT_UNSPECIFIED", - "MASTER_SLAVE", - "MASTER_SLAVE_NO_GTID", - "MULTI_MASTER", - "MULTI_TIER_SLAVE", - "MAXSCALE_BINLOG", - "MULTI_MASTER_RING", - "MULTI_MASTER_WSREP" - ], - "default": "RT_UNSPECIFIED" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{cluster.name}/settings/actions/set/{setting.name}/{setting.value}": { - "get": { - "operationId": "ClusterService_SetActionForClusterSettings3", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } + "format": "int64" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "cluster.name", - "in": "path", - "required": true, + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, "type": "string" }, { - "name": "setting.name", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "BACKUP_BINLOGS_KEEP", - "BACKUP_KEEP_DAILY", - "BACKUP_KEEP_HOURLY", - "BACKUP_KEEP_MONTHLY", - "BACKUP_KEEP_WEEKLY", - "BACKUP_KEEP_YEARLY", - "BACKUP_LOGICAL_TYPE", - "BACKUP_PHYSICAL_TYPE", - "DB_SERVERS_CREDENTIAL", - "DB_SERVERS_HOSTS", - "FAILOVER_LIMIT", - "FAILOVER_MAX_SLAVE_DELAY", - "MAXSCALE_SERVERS_CREDENTIAL", - "MONITORING_ADDRESS", - "PROV_DB_AGENTS", - "PROV_DB_CPU_CORES", - "PROV_DB_DISK_DEVICE", - "PROV_DB_DISK_FS", - "PROV_DB_DISK_IOPS", - "PROV_DB_DISK_POOL", - "PROV_DB_DISK_SIZE", - "PROV_DB_DISK_TYPE", - "PROV_DB_EXPIRE_LOG_DAYS", - "PROV_DB_IMAGE", - "PROV_DB_MAX_CONNECTIONS", - "PROV_DB_MEMORY", - "PROV_DB_SERVICE_TYPE", - "PROV_NET_CNI_CLUSTER", - "PROV_ORCHESTRATOR_CLUSTER", - "PROV_ORCHESTRATOR", - "PROV_PROXY_AGENTS", - "PROV_PROXY_CPU_CORES", - "PROV_PROXY_DISK_DEVICE", - "PROV_PROXY_DISK_FS", - "PROV_PROXY_DISK_POOL", - "PROV_PROXY_DISK_SIZE", - "PROV_PROXY_DISK_TYPE", - "PROV_PROXY_DOCKER_HAPROXY_IMG", - "PROV_PROXY_DOCKER_MAXSCALE_IMG", - "PROV_PROXY_DOCKER_PROXYSQL_IMG", - "PROV_PROXY_DOCKER_SHARDPROXY_IMG", - "PROV_PROXY_MEMORY", - "PROV_PROXY_SERVICE_TYPE", - "PROV_SERVICE_PLAN", - "PROV_SPHINX_IMG", - "PROXY_SERVERS_BACKEND_MAX_CONNECTIONS", - "PROXY_SERVERS_BACKEND_MAX_REPLICATION_LAG", - "PROXYSQL_SERVERS_CREDENTIAL", - "REPLICATION_CREDENTIAL", - "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP_CRON", - "SCHEDULER_DB_SERVERS_LOGS_CRON", - "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE_CRON", - "SCHEDULER_DB_SERVERS_OPTIMIZE_CRON", - "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP_CRON", - "SCHEDULER_JOBS_SSH_CRON", - "SCHEDULER_ROLLING_REPROV_CRON", - "SCHEDULER_ROLLING_RESTART_CRON", - "SCHEDULER_SLA_ROTATE_CRON", - "SHARDPROXY_SERVERS_CREDENTIAL", - "SWITCHOVER_WAIT_ROUTE_CHANGE" - ] + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" }, { - "name": "setting.value", - "in": "path", - "required": true, + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, "type": "string" }, { - "name": "cluster.clusterShardingName", + "name": "cluster.uptime", "in": "query", "required": false, "type": "string" }, { - "name": "action", + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "server.database", "in": "query", "required": false, "type": "string", "enum": [ - "UNSPECIFIED", - "DISCOVER", - "APPLY_DYNAMIC_CONFIG", - "RELOAD", - "SET", - "SWITCH", - "ADD_DB_TAG", - "DROP_DB_TAG", - "ADD_PROXY_TAG", - "DROP_PROXY_TAG" + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" ], - "default": "UNSPECIFIED" + "default": "DATABASE_UNSPECIFIED" }, { - "name": "tagValue", + "name": "server.proxy", "in": "query", "required": false, - "type": "string" + "type": "string", + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" }, { - "name": "switch.name", + "name": "topology", "in": "query", "required": false, "type": "string", "enum": [ - "UNSPECIFIED", - "AUTOREJOIN_BACKUP_BINLOG", - "AUTOREJOIN_FLASHBACK_ON_SYNC", - "AUTOREJOIN_FLASHBACK_ON_UNSYNC", - "AUTOREJOIN_FLASHBACK", - "AUTOREJOIN_LOGICAL_BACKUP", - "AUTOREJOIN_MYSQLDUMP", - "AUTOREJOIN_PHYSICAL_BACKUP", - "AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT", - "AUTOREJOIN_ZFS_FLASHBACK", - "AUTOREJOIN", - "AUTOSEED", - "BACKUP_BINLOGS", - "BACKUP_RESTIC", - "CHECK_REPLICATION_FILTERS", - "CHECK_REPLICATION_STATE", - "DATABASE_HEARTBEAT", - "FAILOVER_AT_SYNC", - "FAILOVER_EVENT_SCHEDULER", - "FAILOVER_EVENT_STATUS", - "FAILOVER_MODE", - "FAILOVER_READONLY_STATE", - "FAILOVER_RESTART_UNSAFE", - "FORCE_SLAVE_NO_GTID_MODE", - "GRAPHITE_EMBEDDED", - "GRAPHITE_METRICS", - "MONITORING_CAPTURE", - "MONITORING_INNODB_STATUS", - "MONITORING_PAUSE", - "MONITORING_PROCESSLIST", - "MONITORING_QUERIES", - "MONITORING_SAVE_CONFIG", - "MONITORING_SCHEDULER", - "MONITORING_SCHEMA_CHANGE", - "MONITORING_VARIABLE_DIFF", - "PROV_DB_APPLY_DYNAMIC_CONFIG", - "PROV_DOCKER_DAEMON_PRIVATE", - "PROV_NET_CNI", - "PROXY_SERVERS_BACKEND_COMPRESSION", - "PROXY_SERVERS_READ_ON_MASTER", - "PROXYSQL_BOOTSTRAP_HOSTGROUPS", - "PROXYSQL_BOOTSTRAP_QUERY_RULES", - "PROXYSQL_BOOTSTRAP_SERVERS", - "PROXYSQL_BOOTSTRAP_USERS", - "PROXYSQL_BOOTSTRAP_VARIABLES", - "PROXYSQL_BOOTSTRAP", - "PROXYSQL_COPY_GRANTS", - "PROXYSQL", - "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP", - "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE", - "SCHEDULER_DB_SERVERS_LOGS", - "SCHEDULER_DB_SERVERS_OPTIMIZE", - "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP", - "SCHEDULER_JOBS_SSH", - "SCHEDULER_ROLLING_REPROV", - "SCHEDULER_ROLLING_RESTART", - "SHARDPROXY_COPY_GRANTS", - "SWITCHOVER_AT_SYNC", - "TEST", - "VERBOSE" + "RT_UNSPECIFIED", + "MASTER_SLAVE", + "MASTER_SLAVE_NO_GTID", + "MULTI_MASTER", + "MULTI_TIER_SLAVE", + "MAXSCALE_BINLOG", + "MULTI_MASTER_RING", + "MULTI_MASTER_WSREP" ], - "default": "UNSPECIFIED" + "default": "RT_UNSPECIFIED" + }, + { + "name": "shardingName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/actions/{action}/{shardingName}": { + "get": { + "operationId": "ClusterService_PerformClusterAction2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "ADD", + "ADDSERVER", + "CANCEL_ROLLING_REPROV", + "CANCEL_ROLLING_RESTART", + "CHECKSUM_ALL_TABLES", + "FAILOVER", + "MASTER_PHYSICAL_BACKUP", + "OPTIMIZE", + "RESET_FAILOVER_CONTROL", + "RESET_SLA", + "ROLLING", + "ROTATEKEYS", + "START_TRAFFIC", + "STOP_TRAFFIC", + "SWITCHOVER", + "SYSBENCH", + "WAITDATABASES", + "REPLICATION_BOOTSTRAP", + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" + ] + }, + { + "name": "shardingName", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "server.host", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "server.port", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "server.type", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" + }, + { + "name": "server.database", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" + ], + "default": "DATABASE_UNSPECIFIED" + }, + { + "name": "server.proxy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "RT_UNSPECIFIED", + "MASTER_SLAVE", + "MASTER_SLAVE_NO_GTID", + "MULTI_MASTER", + "MULTI_TIER_SLAVE", + "MAXSCALE_BINLOG", + "MULTI_MASTER_RING", + "MULTI_MASTER_WSREP" + ], + "default": "RT_UNSPECIFIED" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/actions/{action}/{topology}": { + "get": { + "operationId": "ClusterService_PerformClusterAction5", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "ADD", + "ADDSERVER", + "CANCEL_ROLLING_REPROV", + "CANCEL_ROLLING_RESTART", + "CHECKSUM_ALL_TABLES", + "FAILOVER", + "MASTER_PHYSICAL_BACKUP", + "OPTIMIZE", + "RESET_FAILOVER_CONTROL", + "RESET_SLA", + "ROLLING", + "ROTATEKEYS", + "START_TRAFFIC", + "STOP_TRAFFIC", + "SWITCHOVER", + "SYSBENCH", + "WAITDATABASES", + "REPLICATION_BOOTSTRAP", + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" + ] + }, + { + "name": "topology", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RT_UNSPECIFIED", + "MASTER_SLAVE", + "MASTER_SLAVE_NO_GTID", + "MULTI_MASTER", + "MULTI_TIER_SLAVE", + "MAXSCALE_BINLOG", + "MULTI_MASTER_RING", + "MULTI_MASTER_WSREP" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "server.host", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "server.port", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "server.type", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" + }, + { + "name": "server.database", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" + ], + "default": "DATABASE_UNSPECIFIED" + }, + { + "name": "server.proxy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" + }, + { + "name": "shardingName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/RESHARD_TABLE/{clusterList}": { + "get": { + "operationId": "ClusterService_ExecuteTableAction3", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableSchema", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableName", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "clusterList", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "table.engine", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableRows", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.dataLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.indexLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.tableCrc", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "table.tableClusters", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableSync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "action", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "CHECKSUM_TABLE", + "MOVE_TABLE", + "RESHARD_TABLE", + "UNIVERSAL_TABLE" + ], + "default": "ACTION_UNSPECIFIED" + }, + { + "name": "clusterShard", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/{action}": { + "get": { + "operationId": "ClusterService_ExecuteTableAction", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableSchema", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableName", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "CHECKSUM_TABLE", + "MOVE_TABLE", + "RESHARD_TABLE", + "UNIVERSAL_TABLE" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "table.engine", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableRows", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.dataLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.indexLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.tableCrc", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "table.tableClusters", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableSync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterShard", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterList", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/schema/{table.tableSchema}/{table.tableName}/actions/{action}/{clusterShard}": { + "get": { + "operationId": "ClusterService_ExecuteTableAction2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableSchema", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "table.tableName", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "CHECKSUM_TABLE", + "MOVE_TABLE", + "RESHARD_TABLE", + "UNIVERSAL_TABLE" + ] + }, + { + "name": "clusterShard", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "table.engine", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableRows", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.dataLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.indexLength", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "table.tableCrc", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "table.tableClusters", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "table.tableSync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterList", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/services/actions/{action}": { + "get": { + "operationId": "ClusterService_PerformClusterAction7", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "ADD", + "ADDSERVER", + "CANCEL_ROLLING_REPROV", + "CANCEL_ROLLING_RESTART", + "CHECKSUM_ALL_TABLES", + "FAILOVER", + "MASTER_PHYSICAL_BACKUP", + "OPTIMIZE", + "RESET_FAILOVER_CONTROL", + "RESET_SLA", + "ROLLING", + "ROTATEKEYS", + "START_TRAFFIC", + "STOP_TRAFFIC", + "SWITCHOVER", + "SYSBENCH", + "WAITDATABASES", + "REPLICATION_BOOTSTRAP", + "REPLICATION_CLEANUP", + "PROVISION", + "UNPROVISION" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "server.host", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "server.port", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "server.type", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" + }, + { + "name": "server.database", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" + ], + "default": "DATABASE_UNSPECIFIED" + }, + { + "name": "server.proxy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "RT_UNSPECIFIED", + "MASTER_SLAVE", + "MASTER_SLAVE_NO_GTID", + "MULTI_MASTER", + "MULTI_TIER_SLAVE", + "MAXSCALE_BINLOG", + "MULTI_MASTER_RING", + "MULTI_MASTER_WSREP" + ], + "default": "RT_UNSPECIFIED" + }, + { + "name": "shardingName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/settings/actions/set/{setting.name}/{setting.value}": { + "get": { + "operationId": "ClusterService_SetActionForClusterSettings3", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "setting.name", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "BACKUP_BINLOGS_KEEP", + "BACKUP_KEEP_DAILY", + "BACKUP_KEEP_HOURLY", + "BACKUP_KEEP_MONTHLY", + "BACKUP_KEEP_WEEKLY", + "BACKUP_KEEP_YEARLY", + "BACKUP_LOGICAL_TYPE", + "BACKUP_PHYSICAL_TYPE", + "DB_SERVERS_CREDENTIAL", + "DB_SERVERS_HOSTS", + "FAILOVER_LIMIT", + "FAILOVER_MAX_SLAVE_DELAY", + "MAXSCALE_SERVERS_CREDENTIAL", + "MONITORING_ADDRESS", + "PROV_DB_AGENTS", + "PROV_DB_CPU_CORES", + "PROV_DB_DISK_DEVICE", + "PROV_DB_DISK_FS", + "PROV_DB_DISK_IOPS", + "PROV_DB_DISK_POOL", + "PROV_DB_DISK_SIZE", + "PROV_DB_DISK_TYPE", + "PROV_DB_EXPIRE_LOG_DAYS", + "PROV_DB_IMAGE", + "PROV_DB_MAX_CONNECTIONS", + "PROV_DB_MEMORY", + "PROV_DB_SERVICE_TYPE", + "PROV_NET_CNI_CLUSTER", + "PROV_ORCHESTRATOR_CLUSTER", + "PROV_ORCHESTRATOR", + "PROV_PROXY_AGENTS", + "PROV_PROXY_CPU_CORES", + "PROV_PROXY_DISK_DEVICE", + "PROV_PROXY_DISK_FS", + "PROV_PROXY_DISK_POOL", + "PROV_PROXY_DISK_SIZE", + "PROV_PROXY_DISK_TYPE", + "PROV_PROXY_DOCKER_HAPROXY_IMG", + "PROV_PROXY_DOCKER_MAXSCALE_IMG", + "PROV_PROXY_DOCKER_PROXYSQL_IMG", + "PROV_PROXY_DOCKER_SHARDPROXY_IMG", + "PROV_PROXY_MEMORY", + "PROV_PROXY_SERVICE_TYPE", + "PROV_SERVICE_PLAN", + "PROV_SPHINX_IMG", + "PROXY_SERVERS_BACKEND_MAX_CONNECTIONS", + "PROXY_SERVERS_BACKEND_MAX_REPLICATION_LAG", + "PROXYSQL_SERVERS_CREDENTIAL", + "REPLICATION_CREDENTIAL", + "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP_CRON", + "SCHEDULER_DB_SERVERS_LOGS_CRON", + "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE_CRON", + "SCHEDULER_DB_SERVERS_OPTIMIZE_CRON", + "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP_CRON", + "SCHEDULER_JOBS_SSH_CRON", + "SCHEDULER_ROLLING_REPROV_CRON", + "SCHEDULER_ROLLING_RESTART_CRON", + "SCHEDULER_SLA_ROTATE_CRON", + "SHARDPROXY_SERVERS_CREDENTIAL", + "SWITCHOVER_WAIT_ROUTE_CHANGE" + ] + }, + { + "name": "setting.value", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "action", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "DISCOVER", + "APPLY_DYNAMIC_CONFIG", + "RELOAD", + "SET", + "SWITCH", + "ADD_DB_TAG", + "DROP_DB_TAG", + "ADD_PROXY_TAG", + "DROP_PROXY_TAG" + ], + "default": "UNSPECIFIED" + }, + { + "name": "tagValue", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "switch.name", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "AUTOREJOIN_BACKUP_BINLOG", + "AUTOREJOIN_FLASHBACK_ON_SYNC", + "AUTOREJOIN_FLASHBACK_ON_UNSYNC", + "AUTOREJOIN_FLASHBACK", + "AUTOREJOIN_LOGICAL_BACKUP", + "AUTOREJOIN_MYSQLDUMP", + "AUTOREJOIN_PHYSICAL_BACKUP", + "AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT", + "AUTOREJOIN_ZFS_FLASHBACK", + "AUTOREJOIN", + "AUTOSEED", + "BACKUP_BINLOGS", + "BACKUP_RESTIC", + "CHECK_REPLICATION_FILTERS", + "CHECK_REPLICATION_STATE", + "DATABASE_HEARTBEAT", + "FAILOVER_AT_SYNC", + "FAILOVER_EVENT_SCHEDULER", + "FAILOVER_EVENT_STATUS", + "FAILOVER_MODE", + "FAILOVER_READONLY_STATE", + "FAILOVER_RESTART_UNSAFE", + "FORCE_SLAVE_NO_GTID_MODE", + "GRAPHITE_EMBEDDED", + "GRAPHITE_METRICS", + "MONITORING_CAPTURE", + "MONITORING_INNODB_STATUS", + "MONITORING_PAUSE", + "MONITORING_PROCESSLIST", + "MONITORING_QUERIES", + "MONITORING_SAVE_CONFIG", + "MONITORING_SCHEDULER", + "MONITORING_SCHEMA_CHANGE", + "MONITORING_VARIABLE_DIFF", + "PROV_DB_APPLY_DYNAMIC_CONFIG", + "PROV_DOCKER_DAEMON_PRIVATE", + "PROV_NET_CNI", + "PROXY_SERVERS_BACKEND_COMPRESSION", + "PROXY_SERVERS_READ_ON_MASTER", + "PROXYSQL_BOOTSTRAP_HOSTGROUPS", + "PROXYSQL_BOOTSTRAP_QUERY_RULES", + "PROXYSQL_BOOTSTRAP_SERVERS", + "PROXYSQL_BOOTSTRAP_USERS", + "PROXYSQL_BOOTSTRAP_VARIABLES", + "PROXYSQL_BOOTSTRAP", + "PROXYSQL_COPY_GRANTS", + "PROXYSQL", + "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP", + "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE", + "SCHEDULER_DB_SERVERS_LOGS", + "SCHEDULER_DB_SERVERS_OPTIMIZE", + "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP", + "SCHEDULER_JOBS_SSH", + "SCHEDULER_ROLLING_REPROV", + "SCHEDULER_ROLLING_RESTART", + "SHARDPROXY_COPY_GRANTS", + "SWITCHOVER_AT_SYNC", + "TEST", + "VERBOSE" + ], + "default": "UNSPECIFIED" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/settings/actions/switch/{switch.name}": { + "get": { + "operationId": "ClusterService_SetActionForClusterSettings4", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "switch.name", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "AUTOREJOIN_BACKUP_BINLOG", + "AUTOREJOIN_FLASHBACK_ON_SYNC", + "AUTOREJOIN_FLASHBACK_ON_UNSYNC", + "AUTOREJOIN_FLASHBACK", + "AUTOREJOIN_LOGICAL_BACKUP", + "AUTOREJOIN_MYSQLDUMP", + "AUTOREJOIN_PHYSICAL_BACKUP", + "AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT", + "AUTOREJOIN_ZFS_FLASHBACK", + "AUTOREJOIN", + "AUTOSEED", + "BACKUP_BINLOGS", + "BACKUP_RESTIC", + "CHECK_REPLICATION_FILTERS", + "CHECK_REPLICATION_STATE", + "DATABASE_HEARTBEAT", + "FAILOVER_AT_SYNC", + "FAILOVER_EVENT_SCHEDULER", + "FAILOVER_EVENT_STATUS", + "FAILOVER_MODE", + "FAILOVER_READONLY_STATE", + "FAILOVER_RESTART_UNSAFE", + "FORCE_SLAVE_NO_GTID_MODE", + "GRAPHITE_EMBEDDED", + "GRAPHITE_METRICS", + "MONITORING_CAPTURE", + "MONITORING_INNODB_STATUS", + "MONITORING_PAUSE", + "MONITORING_PROCESSLIST", + "MONITORING_QUERIES", + "MONITORING_SAVE_CONFIG", + "MONITORING_SCHEDULER", + "MONITORING_SCHEMA_CHANGE", + "MONITORING_VARIABLE_DIFF", + "PROV_DB_APPLY_DYNAMIC_CONFIG", + "PROV_DOCKER_DAEMON_PRIVATE", + "PROV_NET_CNI", + "PROXY_SERVERS_BACKEND_COMPRESSION", + "PROXY_SERVERS_READ_ON_MASTER", + "PROXYSQL_BOOTSTRAP_HOSTGROUPS", + "PROXYSQL_BOOTSTRAP_QUERY_RULES", + "PROXYSQL_BOOTSTRAP_SERVERS", + "PROXYSQL_BOOTSTRAP_USERS", + "PROXYSQL_BOOTSTRAP_VARIABLES", + "PROXYSQL_BOOTSTRAP", + "PROXYSQL_COPY_GRANTS", + "PROXYSQL", + "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP", + "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE", + "SCHEDULER_DB_SERVERS_LOGS", + "SCHEDULER_DB_SERVERS_OPTIMIZE", + "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP", + "SCHEDULER_JOBS_SSH", + "SCHEDULER_ROLLING_REPROV", + "SCHEDULER_ROLLING_RESTART", + "SHARDPROXY_COPY_GRANTS", + "SWITCHOVER_AT_SYNC", + "TEST", + "VERBOSE" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "action", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "DISCOVER", + "APPLY_DYNAMIC_CONFIG", + "RELOAD", + "SET", + "SWITCH", + "ADD_DB_TAG", + "DROP_DB_TAG", + "ADD_PROXY_TAG", + "DROP_PROXY_TAG" + ], + "default": "UNSPECIFIED" + }, + { + "name": "tagValue", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "setting.name", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "BACKUP_BINLOGS_KEEP", + "BACKUP_KEEP_DAILY", + "BACKUP_KEEP_HOURLY", + "BACKUP_KEEP_MONTHLY", + "BACKUP_KEEP_WEEKLY", + "BACKUP_KEEP_YEARLY", + "BACKUP_LOGICAL_TYPE", + "BACKUP_PHYSICAL_TYPE", + "DB_SERVERS_CREDENTIAL", + "DB_SERVERS_HOSTS", + "FAILOVER_LIMIT", + "FAILOVER_MAX_SLAVE_DELAY", + "MAXSCALE_SERVERS_CREDENTIAL", + "MONITORING_ADDRESS", + "PROV_DB_AGENTS", + "PROV_DB_CPU_CORES", + "PROV_DB_DISK_DEVICE", + "PROV_DB_DISK_FS", + "PROV_DB_DISK_IOPS", + "PROV_DB_DISK_POOL", + "PROV_DB_DISK_SIZE", + "PROV_DB_DISK_TYPE", + "PROV_DB_EXPIRE_LOG_DAYS", + "PROV_DB_IMAGE", + "PROV_DB_MAX_CONNECTIONS", + "PROV_DB_MEMORY", + "PROV_DB_SERVICE_TYPE", + "PROV_NET_CNI_CLUSTER", + "PROV_ORCHESTRATOR_CLUSTER", + "PROV_ORCHESTRATOR", + "PROV_PROXY_AGENTS", + "PROV_PROXY_CPU_CORES", + "PROV_PROXY_DISK_DEVICE", + "PROV_PROXY_DISK_FS", + "PROV_PROXY_DISK_POOL", + "PROV_PROXY_DISK_SIZE", + "PROV_PROXY_DISK_TYPE", + "PROV_PROXY_DOCKER_HAPROXY_IMG", + "PROV_PROXY_DOCKER_MAXSCALE_IMG", + "PROV_PROXY_DOCKER_PROXYSQL_IMG", + "PROV_PROXY_DOCKER_SHARDPROXY_IMG", + "PROV_PROXY_MEMORY", + "PROV_PROXY_SERVICE_TYPE", + "PROV_SERVICE_PLAN", + "PROV_SPHINX_IMG", + "PROXY_SERVERS_BACKEND_MAX_CONNECTIONS", + "PROXY_SERVERS_BACKEND_MAX_REPLICATION_LAG", + "PROXYSQL_SERVERS_CREDENTIAL", + "REPLICATION_CREDENTIAL", + "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP_CRON", + "SCHEDULER_DB_SERVERS_LOGS_CRON", + "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE_CRON", + "SCHEDULER_DB_SERVERS_OPTIMIZE_CRON", + "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP_CRON", + "SCHEDULER_JOBS_SSH_CRON", + "SCHEDULER_ROLLING_REPROV_CRON", + "SCHEDULER_ROLLING_RESTART_CRON", + "SCHEDULER_SLA_ROTATE_CRON", + "SHARDPROXY_SERVERS_CREDENTIAL", + "SWITCHOVER_WAIT_ROUTE_CHANGE" + ], + "default": "UNSPECIFIED" + }, + { + "name": "setting.value", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/settings/actions/{action}": { + "get": { + "operationId": "ClusterService_SetActionForClusterSettings", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "DISCOVER", + "APPLY_DYNAMIC_CONFIG", + "RELOAD", + "SET", + "SWITCH", + "ADD_DB_TAG", + "DROP_DB_TAG", + "ADD_PROXY_TAG", + "DROP_PROXY_TAG" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "tagValue", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "setting.name", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "BACKUP_BINLOGS_KEEP", + "BACKUP_KEEP_DAILY", + "BACKUP_KEEP_HOURLY", + "BACKUP_KEEP_MONTHLY", + "BACKUP_KEEP_WEEKLY", + "BACKUP_KEEP_YEARLY", + "BACKUP_LOGICAL_TYPE", + "BACKUP_PHYSICAL_TYPE", + "DB_SERVERS_CREDENTIAL", + "DB_SERVERS_HOSTS", + "FAILOVER_LIMIT", + "FAILOVER_MAX_SLAVE_DELAY", + "MAXSCALE_SERVERS_CREDENTIAL", + "MONITORING_ADDRESS", + "PROV_DB_AGENTS", + "PROV_DB_CPU_CORES", + "PROV_DB_DISK_DEVICE", + "PROV_DB_DISK_FS", + "PROV_DB_DISK_IOPS", + "PROV_DB_DISK_POOL", + "PROV_DB_DISK_SIZE", + "PROV_DB_DISK_TYPE", + "PROV_DB_EXPIRE_LOG_DAYS", + "PROV_DB_IMAGE", + "PROV_DB_MAX_CONNECTIONS", + "PROV_DB_MEMORY", + "PROV_DB_SERVICE_TYPE", + "PROV_NET_CNI_CLUSTER", + "PROV_ORCHESTRATOR_CLUSTER", + "PROV_ORCHESTRATOR", + "PROV_PROXY_AGENTS", + "PROV_PROXY_CPU_CORES", + "PROV_PROXY_DISK_DEVICE", + "PROV_PROXY_DISK_FS", + "PROV_PROXY_DISK_POOL", + "PROV_PROXY_DISK_SIZE", + "PROV_PROXY_DISK_TYPE", + "PROV_PROXY_DOCKER_HAPROXY_IMG", + "PROV_PROXY_DOCKER_MAXSCALE_IMG", + "PROV_PROXY_DOCKER_PROXYSQL_IMG", + "PROV_PROXY_DOCKER_SHARDPROXY_IMG", + "PROV_PROXY_MEMORY", + "PROV_PROXY_SERVICE_TYPE", + "PROV_SERVICE_PLAN", + "PROV_SPHINX_IMG", + "PROXY_SERVERS_BACKEND_MAX_CONNECTIONS", + "PROXY_SERVERS_BACKEND_MAX_REPLICATION_LAG", + "PROXYSQL_SERVERS_CREDENTIAL", + "REPLICATION_CREDENTIAL", + "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP_CRON", + "SCHEDULER_DB_SERVERS_LOGS_CRON", + "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE_CRON", + "SCHEDULER_DB_SERVERS_OPTIMIZE_CRON", + "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP_CRON", + "SCHEDULER_JOBS_SSH_CRON", + "SCHEDULER_ROLLING_REPROV_CRON", + "SCHEDULER_ROLLING_RESTART_CRON", + "SCHEDULER_SLA_ROTATE_CRON", + "SHARDPROXY_SERVERS_CREDENTIAL", + "SWITCHOVER_WAIT_ROUTE_CHANGE" + ], + "default": "UNSPECIFIED" + }, + { + "name": "setting.value", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "switch.name", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "AUTOREJOIN_BACKUP_BINLOG", + "AUTOREJOIN_FLASHBACK_ON_SYNC", + "AUTOREJOIN_FLASHBACK_ON_UNSYNC", + "AUTOREJOIN_FLASHBACK", + "AUTOREJOIN_LOGICAL_BACKUP", + "AUTOREJOIN_MYSQLDUMP", + "AUTOREJOIN_PHYSICAL_BACKUP", + "AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT", + "AUTOREJOIN_ZFS_FLASHBACK", + "AUTOREJOIN", + "AUTOSEED", + "BACKUP_BINLOGS", + "BACKUP_RESTIC", + "CHECK_REPLICATION_FILTERS", + "CHECK_REPLICATION_STATE", + "DATABASE_HEARTBEAT", + "FAILOVER_AT_SYNC", + "FAILOVER_EVENT_SCHEDULER", + "FAILOVER_EVENT_STATUS", + "FAILOVER_MODE", + "FAILOVER_READONLY_STATE", + "FAILOVER_RESTART_UNSAFE", + "FORCE_SLAVE_NO_GTID_MODE", + "GRAPHITE_EMBEDDED", + "GRAPHITE_METRICS", + "MONITORING_CAPTURE", + "MONITORING_INNODB_STATUS", + "MONITORING_PAUSE", + "MONITORING_PROCESSLIST", + "MONITORING_QUERIES", + "MONITORING_SAVE_CONFIG", + "MONITORING_SCHEDULER", + "MONITORING_SCHEMA_CHANGE", + "MONITORING_VARIABLE_DIFF", + "PROV_DB_APPLY_DYNAMIC_CONFIG", + "PROV_DOCKER_DAEMON_PRIVATE", + "PROV_NET_CNI", + "PROXY_SERVERS_BACKEND_COMPRESSION", + "PROXY_SERVERS_READ_ON_MASTER", + "PROXYSQL_BOOTSTRAP_HOSTGROUPS", + "PROXYSQL_BOOTSTRAP_QUERY_RULES", + "PROXYSQL_BOOTSTRAP_SERVERS", + "PROXYSQL_BOOTSTRAP_USERS", + "PROXYSQL_BOOTSTRAP_VARIABLES", + "PROXYSQL_BOOTSTRAP", + "PROXYSQL_COPY_GRANTS", + "PROXYSQL", + "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP", + "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE", + "SCHEDULER_DB_SERVERS_LOGS", + "SCHEDULER_DB_SERVERS_OPTIMIZE", + "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP", + "SCHEDULER_JOBS_SSH", + "SCHEDULER_ROLLING_REPROV", + "SCHEDULER_ROLLING_RESTART", + "SHARDPROXY_COPY_GRANTS", + "SWITCHOVER_AT_SYNC", + "TEST", + "VERBOSE" + ], + "default": "UNSPECIFIED" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/settings/actions/{action}/{tagValue}": { + "get": { + "operationId": "ClusterService_SetActionForClusterSettings2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "action", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "UNSPECIFIED", + "DISCOVER", + "APPLY_DYNAMIC_CONFIG", + "RELOAD", + "SET", + "SWITCH", + "ADD_DB_TAG", + "DROP_DB_TAG", + "ADD_PROXY_TAG", + "DROP_PROXY_TAG" + ] + }, + { + "name": "tagValue", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "setting.name", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "BACKUP_BINLOGS_KEEP", + "BACKUP_KEEP_DAILY", + "BACKUP_KEEP_HOURLY", + "BACKUP_KEEP_MONTHLY", + "BACKUP_KEEP_WEEKLY", + "BACKUP_KEEP_YEARLY", + "BACKUP_LOGICAL_TYPE", + "BACKUP_PHYSICAL_TYPE", + "DB_SERVERS_CREDENTIAL", + "DB_SERVERS_HOSTS", + "FAILOVER_LIMIT", + "FAILOVER_MAX_SLAVE_DELAY", + "MAXSCALE_SERVERS_CREDENTIAL", + "MONITORING_ADDRESS", + "PROV_DB_AGENTS", + "PROV_DB_CPU_CORES", + "PROV_DB_DISK_DEVICE", + "PROV_DB_DISK_FS", + "PROV_DB_DISK_IOPS", + "PROV_DB_DISK_POOL", + "PROV_DB_DISK_SIZE", + "PROV_DB_DISK_TYPE", + "PROV_DB_EXPIRE_LOG_DAYS", + "PROV_DB_IMAGE", + "PROV_DB_MAX_CONNECTIONS", + "PROV_DB_MEMORY", + "PROV_DB_SERVICE_TYPE", + "PROV_NET_CNI_CLUSTER", + "PROV_ORCHESTRATOR_CLUSTER", + "PROV_ORCHESTRATOR", + "PROV_PROXY_AGENTS", + "PROV_PROXY_CPU_CORES", + "PROV_PROXY_DISK_DEVICE", + "PROV_PROXY_DISK_FS", + "PROV_PROXY_DISK_POOL", + "PROV_PROXY_DISK_SIZE", + "PROV_PROXY_DISK_TYPE", + "PROV_PROXY_DOCKER_HAPROXY_IMG", + "PROV_PROXY_DOCKER_MAXSCALE_IMG", + "PROV_PROXY_DOCKER_PROXYSQL_IMG", + "PROV_PROXY_DOCKER_SHARDPROXY_IMG", + "PROV_PROXY_MEMORY", + "PROV_PROXY_SERVICE_TYPE", + "PROV_SERVICE_PLAN", + "PROV_SPHINX_IMG", + "PROXY_SERVERS_BACKEND_MAX_CONNECTIONS", + "PROXY_SERVERS_BACKEND_MAX_REPLICATION_LAG", + "PROXYSQL_SERVERS_CREDENTIAL", + "REPLICATION_CREDENTIAL", + "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP_CRON", + "SCHEDULER_DB_SERVERS_LOGS_CRON", + "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE_CRON", + "SCHEDULER_DB_SERVERS_OPTIMIZE_CRON", + "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP_CRON", + "SCHEDULER_JOBS_SSH_CRON", + "SCHEDULER_ROLLING_REPROV_CRON", + "SCHEDULER_ROLLING_RESTART_CRON", + "SCHEDULER_SLA_ROTATE_CRON", + "SHARDPROXY_SERVERS_CREDENTIAL", + "SWITCHOVER_WAIT_ROUTE_CHANGE" + ], + "default": "UNSPECIFIED" + }, + { + "name": "setting.value", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "switch.name", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "AUTOREJOIN_BACKUP_BINLOG", + "AUTOREJOIN_FLASHBACK_ON_SYNC", + "AUTOREJOIN_FLASHBACK_ON_UNSYNC", + "AUTOREJOIN_FLASHBACK", + "AUTOREJOIN_LOGICAL_BACKUP", + "AUTOREJOIN_MYSQLDUMP", + "AUTOREJOIN_PHYSICAL_BACKUP", + "AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT", + "AUTOREJOIN_ZFS_FLASHBACK", + "AUTOREJOIN", + "AUTOSEED", + "BACKUP_BINLOGS", + "BACKUP_RESTIC", + "CHECK_REPLICATION_FILTERS", + "CHECK_REPLICATION_STATE", + "DATABASE_HEARTBEAT", + "FAILOVER_AT_SYNC", + "FAILOVER_EVENT_SCHEDULER", + "FAILOVER_EVENT_STATUS", + "FAILOVER_MODE", + "FAILOVER_READONLY_STATE", + "FAILOVER_RESTART_UNSAFE", + "FORCE_SLAVE_NO_GTID_MODE", + "GRAPHITE_EMBEDDED", + "GRAPHITE_METRICS", + "MONITORING_CAPTURE", + "MONITORING_INNODB_STATUS", + "MONITORING_PAUSE", + "MONITORING_PROCESSLIST", + "MONITORING_QUERIES", + "MONITORING_SAVE_CONFIG", + "MONITORING_SCHEDULER", + "MONITORING_SCHEMA_CHANGE", + "MONITORING_VARIABLE_DIFF", + "PROV_DB_APPLY_DYNAMIC_CONFIG", + "PROV_DOCKER_DAEMON_PRIVATE", + "PROV_NET_CNI", + "PROXY_SERVERS_BACKEND_COMPRESSION", + "PROXY_SERVERS_READ_ON_MASTER", + "PROXYSQL_BOOTSTRAP_HOSTGROUPS", + "PROXYSQL_BOOTSTRAP_QUERY_RULES", + "PROXYSQL_BOOTSTRAP_SERVERS", + "PROXYSQL_BOOTSTRAP_USERS", + "PROXYSQL_BOOTSTRAP_VARIABLES", + "PROXYSQL_BOOTSTRAP", + "PROXYSQL_COPY_GRANTS", + "PROXYSQL", + "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP", + "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE", + "SCHEDULER_DB_SERVERS_LOGS", + "SCHEDULER_DB_SERVERS_OPTIMIZE", + "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP", + "SCHEDULER_JOBS_SSH", + "SCHEDULER_ROLLING_REPROV", + "SCHEDULER_ROLLING_RESTART", + "SHARDPROXY_COPY_GRANTS", + "SWITCHOVER_AT_SYNC", + "TEST", + "VERBOSE" + ], + "default": "UNSPECIFIED" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/topology/{retrieve}": { + "get": { + "operationId": "ClusterService_RetrieveFromTopology", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": {}, + "error": { + "$ref": "#/definitions/rpcStatus" + } + }, + "title": "Stream result of protobufStruct" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "retrieve", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RETRIEVAL_UNSPECIFIED", + "ALERTS", + "CRASHES", + "LOGS", + "MASTER", + "PROXIES", + "SERVERS", + "SLAVES" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{name}": { + "get": { + "operationId": "ClusterService_GetCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{name}/actions/master-physical-backup": { + "get": { + "operationId": "ClusterPublicService_MasterPhysicalBackup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "ClusterPublicService" + ] + } + }, + "/v3/clusters/{name}/backups": { + "get": { + "operationId": "ClusterService_GetBackups", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/v3Backup" + }, + "error": { + "$ref": "#/definitions/rpcStatus" + } + }, + "title": "Stream result of v3Backup" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{name}/certificates": { + "get": { + "operationId": "ClusterService_GetClientCertificates", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v3Certificate" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" } ], "tags": [ @@ -1645,14 +7540,21 @@ ] } }, - "/v3/clusters/{cluster.name}/settings/actions/switch/{switch.name}": { + "/v3/clusters/{name}/queryrules": { "get": { - "operationId": "ClusterService_SetActionForClusterSettings4", + "operationId": "ClusterService_GetQueryRules", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "properties": {} + "type": "object", + "properties": { + "result": {}, + "error": { + "$ref": "#/definitions/rpcStatus" + } + }, + "title": "Stream result of protobufStruct" } }, "default": { @@ -1664,390 +7566,267 @@ }, "parameters": [ { - "name": "cluster.name", + "name": "name", "in": "path", "required": true, "type": "string" }, { - "name": "switch.name", - "in": "path", - "required": true, - "type": "string", - "enum": [ - "UNSPECIFIED", - "AUTOREJOIN_BACKUP_BINLOG", - "AUTOREJOIN_FLASHBACK_ON_SYNC", - "AUTOREJOIN_FLASHBACK_ON_UNSYNC", - "AUTOREJOIN_FLASHBACK", - "AUTOREJOIN_LOGICAL_BACKUP", - "AUTOREJOIN_MYSQLDUMP", - "AUTOREJOIN_PHYSICAL_BACKUP", - "AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT", - "AUTOREJOIN_ZFS_FLASHBACK", - "AUTOREJOIN", - "AUTOSEED", - "BACKUP_BINLOGS", - "BACKUP_RESTIC", - "CHECK_REPLICATION_FILTERS", - "CHECK_REPLICATION_STATE", - "DATABASE_HEARTBEAT", - "FAILOVER_AT_SYNC", - "FAILOVER_EVENT_SCHEDULER", - "FAILOVER_EVENT_STATUS", - "FAILOVER_MODE", - "FAILOVER_READONLY_STATE", - "FAILOVER_RESTART_UNSAFE", - "FORCE_SLAVE_NO_GTID_MODE", - "GRAPHITE_EMBEDDED", - "GRAPHITE_METRICS", - "MONITORING_CAPTURE", - "MONITORING_INNODB_STATUS", - "MONITORING_PAUSE", - "MONITORING_PROCESSLIST", - "MONITORING_QUERIES", - "MONITORING_SAVE_CONFIG", - "MONITORING_SCHEDULER", - "MONITORING_SCHEMA_CHANGE", - "MONITORING_VARIABLE_DIFF", - "PROV_DB_APPLY_DYNAMIC_CONFIG", - "PROV_DOCKER_DAEMON_PRIVATE", - "PROV_NET_CNI", - "PROXY_SERVERS_BACKEND_COMPRESSION", - "PROXY_SERVERS_READ_ON_MASTER", - "PROXYSQL_BOOTSTRAP_HOSTGROUPS", - "PROXYSQL_BOOTSTRAP_QUERY_RULES", - "PROXYSQL_BOOTSTRAP_SERVERS", - "PROXYSQL_BOOTSTRAP_USERS", - "PROXYSQL_BOOTSTRAP_VARIABLES", - "PROXYSQL_BOOTSTRAP", - "PROXYSQL_COPY_GRANTS", - "PROXYSQL", - "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP", - "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE", - "SCHEDULER_DB_SERVERS_LOGS", - "SCHEDULER_DB_SERVERS_OPTIMIZE", - "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP", - "SCHEDULER_JOBS_SSH", - "SCHEDULER_ROLLING_REPROV", - "SCHEDULER_ROLLING_RESTART", - "SHARDPROXY_COPY_GRANTS", - "SWITCHOVER_AT_SYNC", - "TEST", - "VERBOSE" - ] + "name": "tenant", + "in": "query", + "required": false, + "type": "string" }, { - "name": "cluster.clusterShardingName", + "name": "workingDir", "in": "query", "required": false, "type": "string" }, { - "name": "action", + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", "in": "query", "required": false, "type": "string", - "enum": [ - "UNSPECIFIED", - "DISCOVER", - "APPLY_DYNAMIC_CONFIG", - "RELOAD", - "SET", - "SWITCH", - "ADD_DB_TAG", - "DROP_DB_TAG", - "ADD_PROXY_TAG", - "DROP_PROXY_TAG" - ], - "default": "UNSPECIFIED" + "format": "int64" }, { - "name": "tagValue", + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", "in": "query", "required": false, "type": "string" }, { - "name": "setting.name", + "name": "uptimeFailable", "in": "query", "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "BACKUP_BINLOGS_KEEP", - "BACKUP_KEEP_DAILY", - "BACKUP_KEEP_HOURLY", - "BACKUP_KEEP_MONTHLY", - "BACKUP_KEEP_WEEKLY", - "BACKUP_KEEP_YEARLY", - "BACKUP_LOGICAL_TYPE", - "BACKUP_PHYSICAL_TYPE", - "DB_SERVERS_CREDENTIAL", - "DB_SERVERS_HOSTS", - "FAILOVER_LIMIT", - "FAILOVER_MAX_SLAVE_DELAY", - "MAXSCALE_SERVERS_CREDENTIAL", - "MONITORING_ADDRESS", - "PROV_DB_AGENTS", - "PROV_DB_CPU_CORES", - "PROV_DB_DISK_DEVICE", - "PROV_DB_DISK_FS", - "PROV_DB_DISK_IOPS", - "PROV_DB_DISK_POOL", - "PROV_DB_DISK_SIZE", - "PROV_DB_DISK_TYPE", - "PROV_DB_EXPIRE_LOG_DAYS", - "PROV_DB_IMAGE", - "PROV_DB_MAX_CONNECTIONS", - "PROV_DB_MEMORY", - "PROV_DB_SERVICE_TYPE", - "PROV_NET_CNI_CLUSTER", - "PROV_ORCHESTRATOR_CLUSTER", - "PROV_ORCHESTRATOR", - "PROV_PROXY_AGENTS", - "PROV_PROXY_CPU_CORES", - "PROV_PROXY_DISK_DEVICE", - "PROV_PROXY_DISK_FS", - "PROV_PROXY_DISK_POOL", - "PROV_PROXY_DISK_SIZE", - "PROV_PROXY_DISK_TYPE", - "PROV_PROXY_DOCKER_HAPROXY_IMG", - "PROV_PROXY_DOCKER_MAXSCALE_IMG", - "PROV_PROXY_DOCKER_PROXYSQL_IMG", - "PROV_PROXY_DOCKER_SHARDPROXY_IMG", - "PROV_PROXY_MEMORY", - "PROV_PROXY_SERVICE_TYPE", - "PROV_SERVICE_PLAN", - "PROV_SPHINX_IMG", - "PROXY_SERVERS_BACKEND_MAX_CONNECTIONS", - "PROXY_SERVERS_BACKEND_MAX_REPLICATION_LAG", - "PROXYSQL_SERVERS_CREDENTIAL", - "REPLICATION_CREDENTIAL", - "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP_CRON", - "SCHEDULER_DB_SERVERS_LOGS_CRON", - "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE_CRON", - "SCHEDULER_DB_SERVERS_OPTIMIZE_CRON", - "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP_CRON", - "SCHEDULER_JOBS_SSH_CRON", - "SCHEDULER_ROLLING_REPROV_CRON", - "SCHEDULER_ROLLING_RESTART_CRON", - "SCHEDULER_SLA_ROTATE_CRON", - "SHARDPROXY_SERVERS_CREDENTIAL", - "SWITCHOVER_WAIT_ROUTE_CHANGE" - ], - "default": "UNSPECIFIED" + "type": "string" }, { - "name": "setting.value", + "name": "uptimeSemisync", "in": "query", "required": false, "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{cluster.name}/settings/actions/{action}": { - "get": { - "operationId": "ClusterService_SetActionForClusterSettings", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "cluster.name", - "in": "path", - "required": true, + "name": "monitorSpin", + "in": "query", + "required": false, "type": "string" }, { - "name": "action", - "in": "path", - "required": true, + "name": "dbTableSize", + "in": "query", + "required": false, "type": "string", - "enum": [ - "UNSPECIFIED", - "DISCOVER", - "APPLY_DYNAMIC_CONFIG", - "RELOAD", - "SET", - "SWITCH", - "ADD_DB_TAG", - "DROP_DB_TAG", - "ADD_PROXY_TAG", - "DROP_PROXY_TAG" - ] + "format": "int64" }, { - "name": "cluster.clusterShardingName", + "name": "dbIndexSize", "in": "query", "required": false, - "type": "string" + "type": "string", + "format": "int64" }, { - "name": "tagValue", + "name": "connections", "in": "query", "required": false, - "type": "string" + "type": "integer", + "format": "int32" }, { - "name": "setting.name", + "name": "qps", "in": "query", "required": false, "type": "string", - "enum": [ - "UNSPECIFIED", - "BACKUP_BINLOGS_KEEP", - "BACKUP_KEEP_DAILY", - "BACKUP_KEEP_HOURLY", - "BACKUP_KEEP_MONTHLY", - "BACKUP_KEEP_WEEKLY", - "BACKUP_KEEP_YEARLY", - "BACKUP_LOGICAL_TYPE", - "BACKUP_PHYSICAL_TYPE", - "DB_SERVERS_CREDENTIAL", - "DB_SERVERS_HOSTS", - "FAILOVER_LIMIT", - "FAILOVER_MAX_SLAVE_DELAY", - "MAXSCALE_SERVERS_CREDENTIAL", - "MONITORING_ADDRESS", - "PROV_DB_AGENTS", - "PROV_DB_CPU_CORES", - "PROV_DB_DISK_DEVICE", - "PROV_DB_DISK_FS", - "PROV_DB_DISK_IOPS", - "PROV_DB_DISK_POOL", - "PROV_DB_DISK_SIZE", - "PROV_DB_DISK_TYPE", - "PROV_DB_EXPIRE_LOG_DAYS", - "PROV_DB_IMAGE", - "PROV_DB_MAX_CONNECTIONS", - "PROV_DB_MEMORY", - "PROV_DB_SERVICE_TYPE", - "PROV_NET_CNI_CLUSTER", - "PROV_ORCHESTRATOR_CLUSTER", - "PROV_ORCHESTRATOR", - "PROV_PROXY_AGENTS", - "PROV_PROXY_CPU_CORES", - "PROV_PROXY_DISK_DEVICE", - "PROV_PROXY_DISK_FS", - "PROV_PROXY_DISK_POOL", - "PROV_PROXY_DISK_SIZE", - "PROV_PROXY_DISK_TYPE", - "PROV_PROXY_DOCKER_HAPROXY_IMG", - "PROV_PROXY_DOCKER_MAXSCALE_IMG", - "PROV_PROXY_DOCKER_PROXYSQL_IMG", - "PROV_PROXY_DOCKER_SHARDPROXY_IMG", - "PROV_PROXY_MEMORY", - "PROV_PROXY_SERVICE_TYPE", - "PROV_SERVICE_PLAN", - "PROV_SPHINX_IMG", - "PROXY_SERVERS_BACKEND_MAX_CONNECTIONS", - "PROXY_SERVERS_BACKEND_MAX_REPLICATION_LAG", - "PROXYSQL_SERVERS_CREDENTIAL", - "REPLICATION_CREDENTIAL", - "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP_CRON", - "SCHEDULER_DB_SERVERS_LOGS_CRON", - "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE_CRON", - "SCHEDULER_DB_SERVERS_OPTIMIZE_CRON", - "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP_CRON", - "SCHEDULER_JOBS_SSH_CRON", - "SCHEDULER_ROLLING_REPROV_CRON", - "SCHEDULER_ROLLING_RESTART_CRON", - "SCHEDULER_SLA_ROTATE_CRON", - "SHARDPROXY_SERVERS_CREDENTIAL", - "SWITCHOVER_WAIT_ROUTE_CHANGE" - ], - "default": "UNSPECIFIED" + "format": "int64" }, { - "name": "setting.value", + "name": "haveDBTLSCert", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "switch.name", + "name": "haveDBTLSOldCert", "in": "query", "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "AUTOREJOIN_BACKUP_BINLOG", - "AUTOREJOIN_FLASHBACK_ON_SYNC", - "AUTOREJOIN_FLASHBACK_ON_UNSYNC", - "AUTOREJOIN_FLASHBACK", - "AUTOREJOIN_LOGICAL_BACKUP", - "AUTOREJOIN_MYSQLDUMP", - "AUTOREJOIN_PHYSICAL_BACKUP", - "AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT", - "AUTOREJOIN_ZFS_FLASHBACK", - "AUTOREJOIN", - "AUTOSEED", - "BACKUP_BINLOGS", - "BACKUP_RESTIC", - "CHECK_REPLICATION_FILTERS", - "CHECK_REPLICATION_STATE", - "DATABASE_HEARTBEAT", - "FAILOVER_AT_SYNC", - "FAILOVER_EVENT_SCHEDULER", - "FAILOVER_EVENT_STATUS", - "FAILOVER_MODE", - "FAILOVER_READONLY_STATE", - "FAILOVER_RESTART_UNSAFE", - "FORCE_SLAVE_NO_GTID_MODE", - "GRAPHITE_EMBEDDED", - "GRAPHITE_METRICS", - "MONITORING_CAPTURE", - "MONITORING_INNODB_STATUS", - "MONITORING_PAUSE", - "MONITORING_PROCESSLIST", - "MONITORING_QUERIES", - "MONITORING_SAVE_CONFIG", - "MONITORING_SCHEDULER", - "MONITORING_SCHEMA_CHANGE", - "MONITORING_VARIABLE_DIFF", - "PROV_DB_APPLY_DYNAMIC_CONFIG", - "PROV_DOCKER_DAEMON_PRIVATE", - "PROV_NET_CNI", - "PROXY_SERVERS_BACKEND_COMPRESSION", - "PROXY_SERVERS_READ_ON_MASTER", - "PROXYSQL_BOOTSTRAP_HOSTGROUPS", - "PROXYSQL_BOOTSTRAP_QUERY_RULES", - "PROXYSQL_BOOTSTRAP_SERVERS", - "PROXYSQL_BOOTSTRAP_USERS", - "PROXYSQL_BOOTSTRAP_VARIABLES", - "PROXYSQL_BOOTSTRAP", - "PROXYSQL_COPY_GRANTS", - "PROXYSQL", - "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP", - "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE", - "SCHEDULER_DB_SERVERS_LOGS", - "SCHEDULER_DB_SERVERS_OPTIMIZE", - "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP", - "SCHEDULER_JOBS_SSH", - "SCHEDULER_ROLLING_REPROV", - "SCHEDULER_ROLLING_RESTART", - "SHARDPROXY_COPY_GRANTS", - "SWITCHOVER_AT_SYNC", - "TEST", - "VERBOSE" - ], - "default": "UNSPECIFIED" + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" } ], "tags": [ @@ -2055,14 +7834,23 @@ ] } }, - "/v3/clusters/{cluster.name}/settings/actions/{action}/{tagValue}": { + "/v3/clusters/{name}/schema": { "get": { - "operationId": "ClusterService_SetActionForClusterSettings2", + "operationId": "ClusterService_GetSchema", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "properties": {} + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/v3Table" + }, + "error": { + "$ref": "#/definitions/rpcStatus" + } + }, + "title": "Stream result of v3Table" } }, "default": { @@ -2074,185 +7862,267 @@ }, "parameters": [ { - "name": "cluster.name", + "name": "name", "in": "path", "required": true, "type": "string" }, { - "name": "action", - "in": "path", - "required": true, + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, "type": "string", - "enum": [ - "UNSPECIFIED", - "DISCOVER", - "APPLY_DYNAMIC_CONFIG", - "RELOAD", - "SET", - "SWITCH", - "ADD_DB_TAG", - "DROP_DB_TAG", - "ADD_PROXY_TAG", - "DROP_PROXY_TAG" - ] + "format": "int64" }, { - "name": "tagValue", - "in": "path", - "required": true, + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, "type": "string" }, { - "name": "cluster.clusterShardingName", + "name": "uptime", "in": "query", "required": false, "type": "string" }, { - "name": "setting.name", + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", "in": "query", "required": false, "type": "string", - "enum": [ - "UNSPECIFIED", - "BACKUP_BINLOGS_KEEP", - "BACKUP_KEEP_DAILY", - "BACKUP_KEEP_HOURLY", - "BACKUP_KEEP_MONTHLY", - "BACKUP_KEEP_WEEKLY", - "BACKUP_KEEP_YEARLY", - "BACKUP_LOGICAL_TYPE", - "BACKUP_PHYSICAL_TYPE", - "DB_SERVERS_CREDENTIAL", - "DB_SERVERS_HOSTS", - "FAILOVER_LIMIT", - "FAILOVER_MAX_SLAVE_DELAY", - "MAXSCALE_SERVERS_CREDENTIAL", - "MONITORING_ADDRESS", - "PROV_DB_AGENTS", - "PROV_DB_CPU_CORES", - "PROV_DB_DISK_DEVICE", - "PROV_DB_DISK_FS", - "PROV_DB_DISK_IOPS", - "PROV_DB_DISK_POOL", - "PROV_DB_DISK_SIZE", - "PROV_DB_DISK_TYPE", - "PROV_DB_EXPIRE_LOG_DAYS", - "PROV_DB_IMAGE", - "PROV_DB_MAX_CONNECTIONS", - "PROV_DB_MEMORY", - "PROV_DB_SERVICE_TYPE", - "PROV_NET_CNI_CLUSTER", - "PROV_ORCHESTRATOR_CLUSTER", - "PROV_ORCHESTRATOR", - "PROV_PROXY_AGENTS", - "PROV_PROXY_CPU_CORES", - "PROV_PROXY_DISK_DEVICE", - "PROV_PROXY_DISK_FS", - "PROV_PROXY_DISK_POOL", - "PROV_PROXY_DISK_SIZE", - "PROV_PROXY_DISK_TYPE", - "PROV_PROXY_DOCKER_HAPROXY_IMG", - "PROV_PROXY_DOCKER_MAXSCALE_IMG", - "PROV_PROXY_DOCKER_PROXYSQL_IMG", - "PROV_PROXY_DOCKER_SHARDPROXY_IMG", - "PROV_PROXY_MEMORY", - "PROV_PROXY_SERVICE_TYPE", - "PROV_SERVICE_PLAN", - "PROV_SPHINX_IMG", - "PROXY_SERVERS_BACKEND_MAX_CONNECTIONS", - "PROXY_SERVERS_BACKEND_MAX_REPLICATION_LAG", - "PROXYSQL_SERVERS_CREDENTIAL", - "REPLICATION_CREDENTIAL", - "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP_CRON", - "SCHEDULER_DB_SERVERS_LOGS_CRON", - "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE_CRON", - "SCHEDULER_DB_SERVERS_OPTIMIZE_CRON", - "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP_CRON", - "SCHEDULER_JOBS_SSH_CRON", - "SCHEDULER_ROLLING_REPROV_CRON", - "SCHEDULER_ROLLING_RESTART_CRON", - "SCHEDULER_SLA_ROTATE_CRON", - "SHARDPROXY_SERVERS_CREDENTIAL", - "SWITCHOVER_WAIT_ROUTE_CHANGE" - ], - "default": "UNSPECIFIED" + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" }, { - "name": "setting.value", + "name": "haveDBTLSOldCert", "in": "query", "required": false, - "type": "string" + "type": "boolean" }, { - "name": "switch.name", + "name": "waitingRejoin", "in": "query", "required": false, - "type": "string", - "enum": [ - "UNSPECIFIED", - "AUTOREJOIN_BACKUP_BINLOG", - "AUTOREJOIN_FLASHBACK_ON_SYNC", - "AUTOREJOIN_FLASHBACK_ON_UNSYNC", - "AUTOREJOIN_FLASHBACK", - "AUTOREJOIN_LOGICAL_BACKUP", - "AUTOREJOIN_MYSQLDUMP", - "AUTOREJOIN_PHYSICAL_BACKUP", - "AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT", - "AUTOREJOIN_ZFS_FLASHBACK", - "AUTOREJOIN", - "AUTOSEED", - "BACKUP_BINLOGS", - "BACKUP_RESTIC", - "CHECK_REPLICATION_FILTERS", - "CHECK_REPLICATION_STATE", - "DATABASE_HEARTBEAT", - "FAILOVER_AT_SYNC", - "FAILOVER_EVENT_SCHEDULER", - "FAILOVER_EVENT_STATUS", - "FAILOVER_MODE", - "FAILOVER_READONLY_STATE", - "FAILOVER_RESTART_UNSAFE", - "FORCE_SLAVE_NO_GTID_MODE", - "GRAPHITE_EMBEDDED", - "GRAPHITE_METRICS", - "MONITORING_CAPTURE", - "MONITORING_INNODB_STATUS", - "MONITORING_PAUSE", - "MONITORING_PROCESSLIST", - "MONITORING_QUERIES", - "MONITORING_SAVE_CONFIG", - "MONITORING_SCHEDULER", - "MONITORING_SCHEMA_CHANGE", - "MONITORING_VARIABLE_DIFF", - "PROV_DB_APPLY_DYNAMIC_CONFIG", - "PROV_DOCKER_DAEMON_PRIVATE", - "PROV_NET_CNI", - "PROXY_SERVERS_BACKEND_COMPRESSION", - "PROXY_SERVERS_READ_ON_MASTER", - "PROXYSQL_BOOTSTRAP_HOSTGROUPS", - "PROXYSQL_BOOTSTRAP_QUERY_RULES", - "PROXYSQL_BOOTSTRAP_SERVERS", - "PROXYSQL_BOOTSTRAP_USERS", - "PROXYSQL_BOOTSTRAP_VARIABLES", - "PROXYSQL_BOOTSTRAP", - "PROXYSQL_COPY_GRANTS", - "PROXYSQL", - "SCHEDULER_DB_SERVERS_LOGICAL_BACKUP", - "SCHEDULER_DB_SERVERS_LOGS_TABLE_ROTATE", - "SCHEDULER_DB_SERVERS_LOGS", - "SCHEDULER_DB_SERVERS_OPTIMIZE", - "SCHEDULER_DB_SERVERS_PHYSICAL_BACKUP", - "SCHEDULER_JOBS_SSH", - "SCHEDULER_ROLLING_REPROV", - "SCHEDULER_ROLLING_RESTART", - "SHARDPROXY_COPY_GRANTS", - "SWITCHOVER_AT_SYNC", - "TEST", - "VERBOSE" - ], - "default": "UNSPECIFIED" + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" } ], "tags": [ @@ -2260,21 +8130,14 @@ ] } }, - "/v3/clusters/{cluster.name}/topology/{retrieve}": { + "/v3/clusters/{name}/settings": { "get": { - "operationId": "ClusterService_RetrieveFromTopology", + "operationId": "ClusterService_GetSettingsForCluster", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": {}, - "error": { - "$ref": "#/definitions/rpcStatus" - } - }, - "title": "Stream result of protobufStruct" + "type": "object" } }, "default": { @@ -2286,114 +8149,277 @@ }, "parameters": [ { - "name": "cluster.name", + "name": "name", "in": "path", "required": true, "type": "string" }, { - "name": "retrieve", - "in": "path", - "required": true, + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, "type": "string", - "enum": [ - "RETRIEVAL_UNSPECIFIED", - "ALERTS", - "CRASHES", - "LOGS", - "MASTER", - "PROXIES", - "SERVERS", - "SLAVES" - ] + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" }, { - "name": "cluster.clusterShardingName", + "name": "haveDBTLSCert", "in": "query", "required": false, - "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{name}": { - "get": { - "operationId": "ClusterService_GetCluster", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } + "type": "boolean" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "name", - "in": "path", - "required": true, - "type": "string" + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" }, { - "name": "clusterShardingName", + "name": "waitingRejoin", "in": "query", "required": false, - "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{name}/actions/master-physical-backup": { - "get": { - "operationId": "ClusterPublicService_MasterPhysicalBackup", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } + "type": "integer", + "format": "int32" }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "name", - "in": "path", - "required": true, - "type": "string" + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" }, { - "name": "clusterShardingName", + "name": "waitingFailover", "in": "query", "required": false, - "type": "string" + "type": "integer", + "format": "int32" } ], "tags": [ - "ClusterPublicService" + "ClusterService" ] } }, - "/v3/clusters/{name}/backups": { + "/v3/clusters/{name}/shardclusters": { "get": { - "operationId": "ClusterService_GetBackups", + "operationId": "ClusterService_GetShards", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2401,13 +8427,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/v3Backup" + "$ref": "#/definitions/v3Cluster" }, "error": { "$ref": "#/definitions/rpcStatus" } }, - "title": "Stream result of v3Backup" + "title": "Stream result of v3Cluster" } }, "default": { @@ -2425,46 +8451,261 @@ "type": "string" }, { - "name": "clusterShardingName", + "name": "tenant", "in": "query", "required": false, "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{name}/certificates": { - "get": { - "operationId": "ClusterService_GetClientCertificates", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v3Certificate" - } }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "name", - "in": "path", - "required": true, - "type": "string" + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" }, { - "name": "clusterShardingName", + "name": "waitingSwitchover", "in": "query", "required": false, - "type": "string" + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" } ], "tags": [ @@ -2472,21 +8713,14 @@ ] } }, - "/v3/clusters/{name}/queryrules": { + "/v3/clusters/{name}/status": { "get": { - "operationId": "ClusterService_GetQueryRules", + "operationId": "ClusterPublicService_ClusterStatus", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": {}, - "error": { - "$ref": "#/definitions/rpcStatus" - } - }, - "title": "Stream result of protobufStruct" + "$ref": "#/definitions/v3StatusMessage" } }, "default": { @@ -2504,127 +8738,261 @@ "type": "string" }, { - "name": "clusterShardingName", + "name": "tenant", "in": "query", "required": false, "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{name}/schema": { - "get": { - "operationId": "ClusterService_GetSchema", - "responses": { - "200": { - "description": "A successful response.(streaming responses)", - "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/v3Table" - }, - "error": { - "$ref": "#/definitions/rpcStatus" - } - }, - "title": "Stream result of v3Table" - } }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "name", - "in": "path", - "required": true, + "name": "workingDir", + "in": "query", + "required": false, "type": "string" }, { - "name": "clusterShardingName", + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", "in": "query", "required": false, "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{name}/settings": { - "get": { - "operationId": "ClusterService_GetSettingsForCluster", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "name", - "in": "path", - "required": true, + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, "type": "string" }, { - "name": "clusterShardingName", + "name": "uptime", "in": "query", "required": false, "type": "string" - } - ], - "tags": [ - "ClusterService" - ] - } - }, - "/v3/clusters/{name}/status": { - "get": { - "operationId": "ClusterPublicService_ClusterStatus", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v3StatusMessage" - } }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ { - "name": "name", - "in": "path", - "required": true, - "type": "string" + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" }, { - "name": "clusterShardingName", + "name": "waitingSwitchover", "in": "query", "required": false, - "type": "string" + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" } ], "tags": [ @@ -2666,10 +9034,261 @@ "type": "string" }, { - "name": "clusterShardingName", + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", "in": "query", "required": false, "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" } ], "tags": [ @@ -3009,8 +9628,140 @@ "name": { "type": "string" }, - "clusterShardingName": { + "tenant": { + "type": "string" + }, + "workingDir": { + "type": "string" + }, + "dbServers": { + "type": "array", + "items": { + "type": "string" + } + }, + "proxyServers": { + "type": "array", + "items": { + "type": "string" + } + }, + "failoverCounter": { + "type": "integer", + "format": "int32" + }, + "failoverLastTime": { + "type": "string", + "format": "int64" + }, + "activePassiveStatus": { + "type": "string" + }, + "isSplitBrain": { + "type": "boolean" + }, + "isFailedArbitrator": { + "type": "boolean" + }, + "isLostMajority": { + "type": "boolean" + }, + "isDown": { + "type": "boolean" + }, + "isClusterDown": { + "type": "boolean" + }, + "isAllDbUp": { + "type": "boolean" + }, + "isFailable": { + "type": "boolean" + }, + "isPostgres": { + "type": "boolean" + }, + "isProvision": { + "type": "boolean" + }, + "isNeedProxyRestart": { + "type": "boolean" + }, + "isNeedProxiesRestart": { + "type": "boolean" + }, + "isNeedDatabasesRestart": { + "type": "boolean" + }, + "isNeedDatabasesRollingRestart": { + "type": "boolean" + }, + "isNeedDatabasesRollingReprov": { + "type": "boolean" + }, + "isNeedDatabasesReprov": { + "type": "boolean" + }, + "isValidBackup": { + "type": "boolean" + }, + "isNotMonitoring": { + "type": "boolean" + }, + "isCapturing": { + "type": "boolean" + }, + "cleanReplication": { + "type": "boolean" + }, + "topology": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "uptimeFailable": { + "type": "string" + }, + "uptimeSemisync": { + "type": "string" + }, + "monitorSpin": { "type": "string" + }, + "dbTableSize": { + "type": "string", + "format": "int64" + }, + "dbIndexSize": { + "type": "string", + "format": "int64" + }, + "connections": { + "type": "integer", + "format": "int32" + }, + "qps": { + "type": "string", + "format": "int64" + }, + "haveDBTLSCert": { + "type": "boolean" + }, + "haveDBTLSOldCert": { + "type": "boolean" + }, + "waitingRejoin": { + "type": "integer", + "format": "int32" + }, + "waitingSwitchover": { + "type": "integer", + "format": "int32" + }, + "waitingFailover": { + "type": "integer", + "format": "int32" } } }, diff --git a/repmanv3/service.desc b/repmanv3/service.desc index a68c36d36514109b51536ef68e2d41c42652f540..a85e884ced74873ba81b515d7348b0aca063721c 100644 GIT binary patch delta 1809 zcmZ{kON%2_6vs)*&U9{)PI9LocgC6SJf>ed_&`AhM40YojM~#SRjq=X@+NidzBAQT zvF=UM5v0I{Ah;Q_5y6F@As;~e0=jTF;6fBZH-fH27oK~nDu!WPCG|hQ^S_UC&i&%# zJ8qG0I}fa1@;{Ux{I(vil7bci4>Zd+ayvyk{h}MBGzz2pGB|ZT88HikB$W7E0>gk9TV5tSW znrZvtAkZQLtdvQvR_qc`mR-xFL$36RJQuKLL20fBiY?-nFY}(3LvhTNf*%J%^afdy z%2j<|#@g*hTn4NN^rBss$^ljH8I3+imH{(M2+!qFSL%rCFk%E*D%Bkf-JV704yi$g zA1dvh^Lt?=^_Z2Ah6N8nzMHCaja&lKi^EaC%19KXI)E>_MXC_#`2z*Vc0B`B5U5DC zpQy-f5ZJBDec$!E?x4?>5GqP_+xHK;Z}m+H0WjO=U0<*&#!0ekqZl9tq7VBzjf7&g zj5tmeD6&}t>NS)~h5@T10k+4PL|-6lfCK`r$kbH|<${;yk!BQWxThnCLdM0|P9pS0 zvYI5t^I2vcb{Ui4;B~ZyR+FMfwz}o1KQxjbR|6b>Xb+3X;%cN1?tO&-Ap`J>J&?$WukyuJ(GilhfFkvaE#JP0UIOwsBdC~#dsOCKBsbSJ#!W&4HQq2L0wn$uo z;ek%_g{$O;f;9oM?2^|#F`5GsK!%ZlCoU4El`*dw4VeZh^}-+!@YaNZVr?K6?0JdS zi1k5Vu^X6c{=y?v>F{_c4)#tCoqYlGvI)UOyK=_oM5tk{lL>G79)ep4)@ER;8_RdN z)KFzx+za8%+qjX+XkMf@Nj;^U(Hm0t&dk%xb`Y(ns58m}@TOH$+!O)XU1X~%o5|B# zxzk#1I{m6{=Qhpbug-YnnehrZRNTDlMZ27dN1#prq)(Uff3s<0{b4Tu)AID6jZgEr zhm%iQ?-l>DKK}maN&XLO@_Xx9>lOO)q}hIkX4z=@(YvqHj*+Kdwm-MZpXEsLRiPcT i>g4OKo0D(0c1dd&ZQ8Us`LVH5GO_e&oj$+)YyMxhn?>*d delta 162 zcmX?~I4gviYnIJK=4Xul6JN_28gL0G=ad$gq!tBdBo?J)=B4{3=B7$8DKKhq24R!h z?7^Ncz}UBWgLn|*W_3wzZl+)2n?qD?F)}?8-fW=O$;9|#@-B@8&UTij%TFdVHLy%p g*3@VA5%QY+P*YC=YL_0mott|#&oOU)rTdf#01FX1m;e9( diff --git a/server/repmanv3.go b/server/repmanv3.go index cbed4f36e..0514f37ef 100644 --- a/server/repmanv3.go +++ b/server/repmanv3.go @@ -530,10 +530,27 @@ func (s *ReplicationManager) SetActionForClusterSettings(ctx context.Context, in return res, nil } +func (s *ReplicationManager) GetShards(in *v3.Cluster, stream v3.ClusterService_GetShardsServer) error { + user, mycluster, err := s.getClusterAndUser(stream.Context(), in) + if err != nil { + return err + } + + if err = user.Granted(config.GrantClusterSharding); err != nil { + return err + } + + for _, c := range mycluster.ShardProxyGetShardClusters() { + stream.Send(cluster.ClusterToProtoCluster(c)) + } + + return nil +} + func (s *ReplicationManager) PerformClusterAction(ctx context.Context, in *v3.ClusterAction) (res *emptypb.Empty, err error) { // WARNING: this one cannot be validated for ACL, as there is no cluster to validate against // special case, the clustername doesn't exist yet - if in.Cluster.ClusterShardingName == "" { + if in.ShardingName == "" { if in.Action == v3.ClusterAction_ADD { err = s.AddCluster(in.Cluster.Name, "") if err != nil { @@ -560,7 +577,7 @@ func (s *ReplicationManager) PerformClusterAction(ctx context.Context, in *v3.Cl if err = user.Granted(config.GrantProvCluster); err != nil { return nil, err } - err = s.AddCluster(in.Cluster.ClusterShardingName, in.Cluster.Name) + err = s.AddCluster(in.ShardingName, in.Cluster.Name) if err != nil { return nil, v3.NewError(codes.Unknown, err).Err() } diff --git a/signal18/replication-manager/v3/cluster.proto b/signal18/replication-manager/v3/cluster.proto index e6f742169..f30834774 100644 --- a/signal18/replication-manager/v3/cluster.proto +++ b/signal18/replication-manager/v3/cluster.proto @@ -70,7 +70,7 @@ service ClusterService { get: "/v3/clusters/actions/{action}/{cluster.name}" additional_bindings { // /api/clusters/{clusterName}/actions/add/{clusterShardingName} - get: "/v3/clusters/{cluster.name}/actions/{action}/{cluster.clusterShardingName}" + get: "/v3/clusters/{cluster.name}/actions/{action}/{sharding_name}" } additional_bindings { // /api/clusters/{clusterName}/actions/addserver/{host}/{port} @@ -151,6 +151,13 @@ service ClusterService { }; } + rpc GetShards(Cluster) returns (stream Cluster) { + option (google.api.http) = { + // /api/clusters/{clusterName}/shardclusters + get: "/v3/clusters/{name}/shardclusters" + }; + } + rpc GetQueryRules(Cluster) returns (stream google.protobuf.Struct) { option (google.api.http) = { // /api/clusters/{clusterName}/queryrules diff --git a/signal18/replication-manager/v3/messages.proto b/signal18/replication-manager/v3/messages.proto index be9347652..bc722321d 100644 --- a/signal18/replication-manager/v3/messages.proto +++ b/signal18/replication-manager/v3/messages.proto @@ -15,8 +15,65 @@ message ErrorResource { } message Cluster { - string name = 1; - string clusterShardingName = 2; + string name = 1 [ json_name = "name" ]; + string tenant = 2 [ json_name = "tenant" ]; + string working_dir = 3 [ json_name = "workingDir" ]; + repeated string server_id_list = 4 [ json_name = "dbServers" ]; + repeated string proxy_id_list = 5 [ json_name = "proxyServers" ]; + int32 failover_ctr = 6 [ json_name = "failoverCounter" ]; + int64 failover_ts = 7 [ json_name = "failoverLastTime" ]; + string status = 8 [ json_name = "activePassiveStatus" ]; + bool is_split_brain = 9 [ json_name = "isSplitBrain" ]; + bool is_failed_arbitrator = 10 [ json_name = "isFailedArbitrator" ]; + bool is_lost_majority = 11 [ json_name = "isLostMajority" ]; + bool is_down = 12 [ json_name = "isDown" ]; + bool is_cluster_down = 13 [ json_name = "isClusterDown" ]; + bool is_all_db_up = 14 [ json_name = "isAllDbUp" ]; + bool is_failable = 15 [ json_name = "isFailable" ]; + bool is_postgres = 16 [ json_name = "isPostgres" ]; + bool is_provision = 17 [ json_name = "isProvision" ]; + bool is_need_proxies_restart = 18 [ json_name = "isNeedProxyRestart" ]; + bool is_need_proxies_reprov = 19 [ json_name = "isNeedProxiesRestart" ]; + bool is_need_databases_restart = 20 [ json_name = "isNeedDatabasesRestart" ]; + bool is_need_databases_rolling_restart = 21 + [ json_name = "isNeedDatabasesRollingRestart" ]; + bool is_need_databases_rolling_reprov = 22 + [ json_name = "isNeedDatabasesRollingReprov" ]; + bool is_need_databases_reprov = 23 [ json_name = "isNeedDatabasesReprov" ]; + bool is_valid_backup = 24 [ json_name = "isValidBackup" ]; + bool is_not_monitoring = 25 [ json_name = "isNotMonitoring" ]; + bool is_capturing = 26 [ json_name = "isCapturing" ]; + bool clean_all = 27 [ json_name = "cleanReplication" ]; + string topology = 28 [ json_name = "topology" ]; + string uptime = 29 [ json_name = "uptime" ]; + string uptime_failable = 30 [ json_name = "uptimeFailable" ]; + string uptime_semi_sync = 31 [ json_name = "uptimeSemisync" ]; + string monitor_spin = 32 [ json_name = "monitorSpin" ]; + int64 db_table_size = 33 [ json_name = "dbTableSize" ]; + int64 db_index_size = 34 [ json_name = "dbIndexSize" ]; + int32 connections = 35 [ json_name = "connections" ]; + int64 qps = 36 [ json_name = "qps" ]; + bool HaveDBTLSCert = 37 [ json_name = "haveDBTLSCert" ]; + bool HaveDBTLSOldCert = 38 [ json_name = "haveDBTLSOldCert" ]; + int32 WaitingRejoin = 39 [ json_name = "waitingRejoin" ]; + int32 WaitingSwitchover = 40 [ json_name = "waitingSwitchover" ]; + int32 WaitingFailover = 41 [ json_name = "waitingFailover" ]; + // crashList Crashes = 42 [json_name="dbServersCrashes"]; + // config.Config Conf = 43 [json_name="config"]; + // configurator.Configurator Configurator = 44 [json_name="configurator"]; + // []VariableDiff DiffVariables = 45 [json_name="diffVariables"]; + // s18log.HttpLog Log = 46 [json_name="log"]; + // map[string]*JobResult JobResults = 47 [json_name="jobResults"]; + // s18log.HttpLog SQLGeneralLog = 48 [json_name="sqlGeneralLog"]; + // s18log.HttpLog SQLErrorLog = 49 [json_name="sqlErrorLog"]; + // map[string]string MonitorType = 50 [json_name="monitorType"]; + // map[string]string TopologyType = 51 [json_name="topologyType"]; + // map[string]bool FSType = 52 [json_name="fsType"]; + // map[string]string DiskType = 53 [json_name="diskType"]; + // map[string]bool VMType = 54 [json_name="vmType"]; + // []Agent Agents = 55 [json_name="agents"]; + // []state.Sla SLAHistory = 56 [json_name="slaHistory"]; + // map[string]APIUser APIUsers = 57 [json_name="apiUsers"]; } message ClusterSetting { @@ -28,7 +85,7 @@ message ClusterSetting { RELOAD = 3; SET = 4; SWITCH = 5; - + ADD_DB_TAG = 10; DROP_DB_TAG = 11; ADD_PROXY_TAG = 12; @@ -111,7 +168,7 @@ message ClusterSetting { AUTOREJOIN_FLASHBACK_ON_SYNC = 2; AUTOREJOIN_FLASHBACK_ON_UNSYNC = 3; //????? AUTOREJOIN_FLASHBACK = 4; - AUTOREJOIN_LOGICAL_BACKUP = 5; + AUTOREJOIN_LOGICAL_BACKUP = 5; AUTOREJOIN_MYSQLDUMP = 6; AUTOREJOIN_PHYSICAL_BACKUP = 7; AUTOREJOIN_SLAVE_POSITIONAL_HEARTBEAT = 8; @@ -240,6 +297,7 @@ message ClusterAction { MULTI_MASTER_WSREP = 7; } ReplicationTopology topology = 5; + string sharding_name = 6; } enum ServiceStatus { @@ -249,9 +307,7 @@ enum ServiceStatus { ERRORS = 3; } -message StatusMessage { - ServiceStatus alive = 1; -} +message StatusMessage { ServiceStatus alive = 1; } message TopologyRetrieval { Cluster cluster = 1; @@ -276,7 +332,7 @@ message Certificate { message Backup { string id = 1; - string short_id = 2 [json_name="short_id"]; + string short_id = 2 [ json_name = "short_id" ]; string time = 3; string tree = 4; repeated string paths = 5; @@ -330,13 +386,13 @@ message TableAction { } message Table { - string table_schema = 1 [json_name="tableSchema"]; - string table_name = 2 [json_name="tableName"]; - string engine = 3 [json_name="engine"]; - int64 table_rows = 4 [json_name="tableRows"]; - int64 data_length = 5 [json_name="dataLength"]; - int64 index_length = 6 [json_name="indexLength"]; - uint64 table_crc = 7 [json_name="tableCrc"]; - string table_clusters = 8 [json_name="tableClusters"]; - string table_sync = 9 [json_name="tableSync"]; + string table_schema = 1 [ json_name = "tableSchema" ]; + string table_name = 2 [ json_name = "tableName" ]; + string engine = 3 [ json_name = "engine" ]; + int64 table_rows = 4 [ json_name = "tableRows" ]; + int64 data_length = 5 [ json_name = "dataLength" ]; + int64 index_length = 6 [ json_name = "indexLength" ]; + uint64 table_crc = 7 [ json_name = "tableCrc" ]; + string table_clusters = 8 [ json_name = "tableClusters" ]; + string table_sync = 9 [ json_name = "tableSync" ]; } \ No newline at end of file From 7d4625b3d9c7a0be48ea785ba2b66698d55b0acb Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Tue, 3 May 2022 00:52:08 +0200 Subject: [PATCH 03/13] Implement more fields for the Cluster --- Makefile | 6 + cluster/cluster.go | 19 +- cluster/cluster_fail.go | 25 +- cluster/cluster_get.go | 33 +- cluster/srv_rejoin.go | 45 +- {cluster => repmanv3}/crash.go | 68 +- repmanv3/messages.pb.go | 1456 +++++++++-------- repmanv3/repmanv3.swagger.json | 55 + repmanv3/service.desc | Bin 12495 -> 13028 bytes server/repmanv3.go | 2 +- .../replication-manager/v3/messages.proto | 25 +- utils/gtid/gtid.go | 34 +- utils/gtid/gtid.pb.go | 165 ++ 13 files changed, 1174 insertions(+), 759 deletions(-) rename {cluster => repmanv3}/crash.go (51%) create mode 100644 utils/gtid/gtid.pb.go diff --git a/Makefile b/Makefile index 7bda74f68..7c4297cb1 100755 --- a/Makefile +++ b/Makefile @@ -79,3 +79,9 @@ proto: --openapiv2_opt merge_file_name=repmanv3 \ -orepmanv3/service.desc \ ${PROTO_DIR}/cluster.proto ${PROTO_DIR}/messages.proto + + @protoc/bin/protoc \ + -I ${PROTO_DIR} \ + --go_opt=paths=source_relative \ + --go_out=utils/gtid \ + ${PROTO_DIR}/gtid.proto diff --git a/cluster/cluster.go b/cluster/cluster.go index c632346a5..b93a4993b 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -60,7 +60,7 @@ type Cluster struct { WorkingDir string `json:"workingDir"` Servers serverList `json:"-"` ServerIdList []string `json:"dbServers"` - Crashes crashList `json:"dbServersCrashes"` + Crashes v3.CrashList `json:"dbServersCrashes"` Proxies proxyList `json:"-"` ProxyIdList []string `json:"proxyServers"` FailoverCtr int `json:"failoverCounter"` @@ -213,11 +213,12 @@ func ClusterToProtoCluster(c *Cluster) *v3.Cluster { DbIndexSize: c.DBIndexSize, Connections: int32(c.Connections), Qps: c.QPS, - HaveDBTLSCert: c.HaveDBTLSCert, - HaveDBTLSOldCert: c.HaveDBTLSOldCert, + HaveDbtlsCert: c.HaveDBTLSCert, + HaveDbtlsOldCert: c.HaveDBTLSOldCert, WaitingRejoin: int32(c.WaitingRejoin), WaitingSwitchover: int32(c.WaitingSwitchover), WaitingFailover: int32(c.WaitingFailover), + Crashes: c.Crashes, } return out @@ -388,7 +389,7 @@ func (cluster *Cluster) Init(conf config.Config, cfgGroup string, tlog *s18log.T cluster.LoadAPIUsers() // createKeys do nothing yet cluster.createKeys() - cluster.GetPersitentState() + cluster.GetPersistentState() cluster.newServerList() err = cluster.newProxyList() @@ -642,11 +643,11 @@ func (cluster *Cluster) Stop() { func (cluster *Cluster) Save() error { type Save struct { - Servers string `json:"servers"` - Crashes crashList `json:"crashes"` - SLA state.Sla `json:"sla"` - SLAHistory []state.Sla `json:"slaHistory"` - IsAllDbUp bool `json:"provisioned"` + Servers string `json:"servers"` + Crashes v3.CrashList `json:"crashes"` + SLA state.Sla `json:"sla"` + SLAHistory []state.Sla `json:"slaHistory"` + IsAllDbUp bool `json:"provisioned"` } var clsave Save diff --git a/cluster/cluster_fail.go b/cluster/cluster_fail.go index fddcbf15c..62c04d09d 100644 --- a/cluster/cluster_fail.go +++ b/cluster/cluster_fail.go @@ -19,6 +19,7 @@ import ( "strings" "time" + v3 "github.com/signal18/replication-manager/repmanv3" "github.com/signal18/replication-manager/utils/dbhelper" "github.com/signal18/replication-manager/utils/gtid" "github.com/signal18/replication-manager/utils/state" @@ -136,9 +137,9 @@ func (cluster *Cluster) MasterFailover(fail bool) bool { // If it's a switchover, use MASTER_POS_WAIT to sync. // If it's a failover, wait for the SQL thread to read all relay logs. // If maxsclale we should wait for relay catch via old style - crash := new(Crash) - crash.URL = cluster.oldMaster.URL - crash.ElectedMasterURL = cluster.master.URL + crash := new(v3.Cluster_Crash) + crash.Url = cluster.oldMaster.URL + crash.ElectedMasterUrl = cluster.master.URL // if switchover on MariaDB Wait GTID /* if fail == false && cluster.Conf.MxsBinlogOn == false && cluster.master.DBVersion.IsMariaDB() { @@ -173,13 +174,13 @@ func (cluster *Cluster) MasterFailover(fail bool) bool { if cluster.master.DBVersion.IsMariaDB() { if cluster.Conf.MxsBinlogOn { // cluster.master.FailoverIOGtid = cluster.master.CurrentGtid - crash.FailoverIOGtid = cluster.master.CurrentGtid + crash.SetFailoverIOGtid(*cluster.master.CurrentGtid) } else { // cluster.master.FailoverIOGtid = gtid.NewList(ms.GtidIOPos.String) - crash.FailoverIOGtid = gtid.NewList(ms.GtidIOPos.String) + crash.SetFailoverIOGtid(*gtid.NewList(ms.GtidIOPos.String)) } } else if cluster.master.DBVersion.IsMySQLOrPerconaGreater57() && cluster.master.HasGTIDReplication() { - crash.FailoverIOGtid = gtid.NewMySQLList(ms.ExecutedGtidSet.String) + crash.SetFailoverIOGtid(*gtid.NewMySQLList(ms.ExecutedGtidSet.String)) } cluster.master.FailoverSemiSyncSlaveStatus = cluster.master.SemiSyncSlaveStatus crash.FailoverSemiSyncSlaveStatus = cluster.master.SemiSyncSlaveStatus @@ -1184,9 +1185,9 @@ func (cluster *Cluster) VMasterFailover(fail bool) bool { // If it's a switchover, use MASTER_POS_WAIT to sync. // If it's a failover, wait for the SQL thread to read all relay logs. // If maxsclale we should wait for relay catch via old style - crash := new(Crash) - crash.URL = cluster.oldMaster.URL - crash.ElectedMasterURL = cluster.master.URL + crash := new(v3.Cluster_Crash) + crash.Url = cluster.oldMaster.URL + crash.ElectedMasterUrl = cluster.master.URL cluster.LogPrintf(LvlInfo, "Waiting for candidate master to apply relay log") err = cluster.master.ReadAllRelayLogs() @@ -1208,13 +1209,13 @@ func (cluster *Cluster) VMasterFailover(fail bool) bool { if cluster.master.DBVersion.IsMariaDB() { if cluster.Conf.MxsBinlogOn { // cluster.master.FailoverIOGtid = cluster.master.CurrentGtid - crash.FailoverIOGtid = cluster.master.CurrentGtid + crash.SetFailoverIOGtid(*cluster.master.CurrentGtid) } else { // cluster.master.FailoverIOGtid = gtid.NewList(ms.GtidIOPos.String) - crash.FailoverIOGtid = gtid.NewList(ms.GtidIOPos.String) + crash.SetFailoverIOGtid(*gtid.NewList(ms.GtidIOPos.String)) } } else if cluster.master.DBVersion.IsMySQLOrPerconaGreater57() && cluster.master.HasGTIDReplication() { - crash.FailoverIOGtid = gtid.NewMySQLList(ms.ExecutedGtidSet.String) + crash.SetFailoverIOGtid(*gtid.NewMySQLList(ms.ExecutedGtidSet.String)) } cluster.master.FailoverSemiSyncSlaveStatus = cluster.master.SemiSyncSlaveStatus crash.FailoverSemiSyncSlaveStatus = cluster.master.SemiSyncSlaveStatus diff --git a/cluster/cluster_get.go b/cluster/cluster_get.go index 06d8981ae..41ae62d0e 100644 --- a/cluster/cluster_get.go +++ b/cluster/cluster_get.go @@ -81,13 +81,13 @@ func (cluster *Cluster) GetDomainHeadCluster() string { return "" } -func (cluster *Cluster) GetPersitentState() error { +func (cluster *Cluster) GetPersistentState() error { type Save struct { - Servers string `json:"servers"` - Crashes crashList `json:"crashes"` - SLA state.Sla `json:"sla"` - SLAHistory []state.Sla `json:"slaHistory"` + Servers string `json:"servers"` + Crashes v3.CrashList `json:"crashes"` + SLA state.Sla `json:"sla"` + SLAHistory []state.Sla `json:"slaHistory"` } var clsave Save @@ -720,3 +720,26 @@ func (cluster *Cluster) GetClientCertificates() (map[string]string, error) { certs["caCert"] = caCert return certs, nil } + +func (cluster *Cluster) getCrashFromJoiner(URL string) *v3.Cluster_Crash { + for _, cr := range cluster.Crashes { + if cr.Url == URL { + return cr + } + } + return nil +} + +func (cluster *Cluster) getCrashFromMaster(URL string) *v3.Cluster_Crash { + for _, cr := range cluster.Crashes { + if cr.ElectedMasterUrl == URL { + return cr + } + } + return nil +} + +// GetCluster_Crashes return Cluster_Crashes +func (cluster *Cluster) GetCrashes() v3.CrashList { + return cluster.Crashes +} diff --git a/cluster/srv_rejoin.go b/cluster/srv_rejoin.go index b340505d3..5d21cc3f6 100644 --- a/cluster/srv_rejoin.go +++ b/cluster/srv_rejoin.go @@ -19,6 +19,7 @@ import ( "strings" "time" + v3 "github.com/signal18/replication-manager/repmanv3" "github.com/signal18/replication-manager/utils/dbhelper" "github.com/signal18/replication-manager/utils/misc" "github.com/signal18/replication-manager/utils/state" @@ -181,9 +182,9 @@ func (server *ServerMonitor) ReseedMasterSST() error { return nil } -func (server *ServerMonitor) rejoinMasterSync(crash *Crash) error { +func (server *ServerMonitor) rejoinMasterSync(crash *v3.Cluster_Crash) error { if server.HasGTIDReplication() { - server.ClusterGroup.LogPrintf("INFO", "Found same or lower GTID %s and new elected master was %s", server.CurrentGtid.Sprint(), crash.FailoverIOGtid.Sprint()) + server.ClusterGroup.LogPrintf("INFO", "Found same or lower GTID %s and new elected master was %s", server.CurrentGtid.Sprint(), crash.GetFailoverIOGtid().Sprint()) } else { server.ClusterGroup.LogPrintf("INFO", "Found same or lower sequence %s , %s", server.BinaryLogFile, server.BinaryLogPos) } @@ -244,7 +245,7 @@ func (server *ServerMonitor) rejoinMasterSync(crash *Crash) error { return err } -func (server *ServerMonitor) rejoinMasterFlashBack(crash *Crash) error { +func (server *ServerMonitor) rejoinMasterFlashBack(crash *v3.Cluster_Crash) error { realmaster := server.ClusterGroup.master if server.ClusterGroup.Conf.MxsBinlogOn || server.ClusterGroup.Conf.MultiTierSlave { realmaster = server.ClusterGroup.GetRelayServer() @@ -276,8 +277,8 @@ func (server *ServerMonitor) rejoinMasterFlashBack(crash *Crash) error { server.ClusterGroup.LogPrintf("ERROR", "Error starting client: %s at %s", err, strings.Replace(clientCmd.Path, server.ClusterGroup.rplPass, "XXXX", -1)) return err } - logs, err := dbhelper.SetGTIDSlavePos(server.Conn, crash.FailoverIOGtid.Sprint()) - server.ClusterGroup.LogSQL(logs, err, server.URL, "Rejoin", LvlInfo, "SET GLOBAL gtid_slave_pos = \"%s\"", crash.FailoverIOGtid.Sprint()) + logs, err := dbhelper.SetGTIDSlavePos(server.Conn, crash.GetFailoverIOGtid().Sprint()) + server.ClusterGroup.LogSQL(logs, err, server.URL, "Rejoin", LvlInfo, "SET GLOBAL gtid_slave_pos = \"%s\"", crash.GetFailoverIOGtid().Sprint()) if err != nil { return err } @@ -337,7 +338,7 @@ func (server *ServerMonitor) RejoinDirectDump() error { return nil } -func (server *ServerMonitor) rejoinMasterIncremental(crash *Crash) error { +func (server *ServerMonitor) rejoinMasterIncremental(crash *v3.Cluster_Crash) error { server.ClusterGroup.LogPrintf("INFO", "Rejoin master incremental %s", server.URL) server.ClusterGroup.LogPrintf("INFO", "Crash info %s", crash) server.Refresh() @@ -346,9 +347,9 @@ func (server *ServerMonitor) rejoinMasterIncremental(crash *Crash) error { server.ClusterGroup.LogSQL(logs, err, server.URL, "Rejoin", LvlErr, "Failed to set read only on server %s, %s ", server.URL, err) } - if crash.FailoverIOGtid != nil { + if crash.FailoverIoGtids != nil { server.ClusterGroup.LogPrintf("INFO", "Rejoined GTID sequence %d", server.CurrentGtid.GetSeqServerIdNos(uint64(server.ServerID))) - server.ClusterGroup.LogPrintf("INFO", "Crash Saved GTID sequence %d for master id %d", crash.FailoverIOGtid.GetSeqServerIdNos(uint64(server.ServerID)), uint64(server.ServerID)) + server.ClusterGroup.LogPrintf("INFO", "Crash Saved GTID sequence %d for master id %d", crash.GetFailoverIOGtid().GetSeqServerIdNos(uint64(server.ServerID)), uint64(server.ServerID)) } if server.isReplicationAheadOfMasterElection(crash) == false || server.ClusterGroup.Conf.MxsBinlogOn { server.rejoinMasterSync(crash) @@ -360,19 +361,19 @@ func (server *ServerMonitor) rejoinMasterIncremental(crash *Crash) error { return errors.New("Incremental canceled caused by old style replication") } } - if crash.FailoverIOGtid != nil { + if crash.FailoverIoGtids != nil { // server.ClusterGroup.master.FailoverIOGtid.GetSeqServerIdNos(uint64(server.ServerID)) == 0 // lookup in crash recorded is the current master - if crash.FailoverIOGtid.GetSeqServerIdNos(uint64(server.ServerID)) == 0 { + if crash.GetFailoverIOGtid().GetSeqServerIdNos(uint64(server.ServerID)) == 0 { server.ClusterGroup.LogPrintf("INFO", "Cascading failover, consider we cannot flashback") server.ClusterGroup.canFlashBack = false } else { - server.ClusterGroup.LogPrintf("INFO", "Found server ID in rejoining ID %s and crash FailoverIOGtid %s Master %s", server.ServerID, crash.FailoverIOGtid.Sprint(), server.ClusterGroup.master.URL) + server.ClusterGroup.LogPrintf("INFO", "Found server ID in rejoining ID %s and crash FailoverIOGtid %s Master %s", server.ServerID, crash.GetFailoverIOGtid().Sprint(), server.ClusterGroup.master.URL) } } else { server.ClusterGroup.LogPrintf("INFO", "Old server GTID for flashback not found") } - if crash.FailoverIOGtid != nil && server.ClusterGroup.canFlashBack == true && server.ClusterGroup.Conf.AutorejoinFlashback == true && server.ClusterGroup.Conf.AutorejoinBackupBinlog == true { + if crash.FailoverIoGtids != nil && server.ClusterGroup.canFlashBack == true && server.ClusterGroup.Conf.AutorejoinFlashback == true && server.ClusterGroup.Conf.AutorejoinBackupBinlog == true { err := server.rejoinMasterFlashBack(crash) if err == nil { return nil @@ -536,19 +537,19 @@ func (server *ServerMonitor) rejoinSlave(ss dbhelper.SlaveStatus) error { return nil } -func (server *ServerMonitor) isReplicationAheadOfMasterElection(crash *Crash) bool { +func (server *ServerMonitor) isReplicationAheadOfMasterElection(crash *v3.Cluster_Crash) bool { if server.UsedGtidAtElection(crash) { // CurrentGtid fetch from show global variables GTID_CURRENT_POS // FailoverIOGtid is fetch at failover from show slave status of the new master // If server-id can't be found in FailoverIOGtid can state cascading master failover - if crash.FailoverIOGtid.GetSeqServerIdNos(uint64(server.ServerID)) == 0 { + if crash.GetFailoverIOGtid().GetSeqServerIdNos(uint64(server.ServerID)) == 0 { server.ClusterGroup.LogPrintf("INFO", "Cascading failover, found empty GTID, forcing full state transfer") return true } - if server.CurrentGtid.GetSeqServerIdNos(uint64(server.ServerID)) > crash.FailoverIOGtid.GetSeqServerIdNos(uint64(server.ServerID)) { - server.ClusterGroup.LogPrintf("INFO", "Rejoining node seq %d, master seq %d", server.CurrentGtid.GetSeqServerIdNos(uint64(server.ServerID)), crash.FailoverIOGtid.GetSeqServerIdNos(uint64(server.ServerID))) + if server.CurrentGtid.GetSeqServerIdNos(uint64(server.ServerID)) > crash.GetFailoverIOGtid().GetSeqServerIdNos(uint64(server.ServerID)) { + server.ClusterGroup.LogPrintf("INFO", "Rejoining node seq %d, master seq %d", server.CurrentGtid.GetSeqServerIdNos(uint64(server.ServerID)), crash.GetFailoverIOGtid().GetSeqServerIdNos(uint64(server.ServerID))) return true } return false @@ -579,16 +580,16 @@ func (server *ServerMonitor) deletefiles(path string, f os.FileInfo, err error) return } -func (server *ServerMonitor) saveBinlog(crash *Crash) error { +func (server *ServerMonitor) saveBinlog(crash *v3.Cluster_Crash) error { t := time.Now() backupdir := server.ClusterGroup.Conf.WorkingDir + "/" + server.ClusterGroup.Name + "/crash-bin-" + t.Format("20060102150405") - server.ClusterGroup.LogPrintf("INFO", "Rejoin old Master %s , backing up lost event to %s", crash.URL, backupdir) + server.ClusterGroup.LogPrintf("INFO", "Rejoin old Master %s , backing up lost event to %s", crash.Url, backupdir) os.Mkdir(backupdir, 0777) os.Rename(server.ClusterGroup.Conf.WorkingDir+"/"+server.ClusterGroup.Name+"-server"+strconv.FormatUint(uint64(server.ServerID), 10)+"-"+crash.FailoverMasterLogFile, backupdir+"/"+server.ClusterGroup.Name+"-server"+strconv.FormatUint(uint64(server.ServerID), 10)+"-"+crash.FailoverMasterLogFile) return nil } -func (server *ServerMonitor) backupBinlog(crash *Crash) error { +func (server *ServerMonitor) backupBinlog(crash *v3.Cluster_Crash) error { if _, err := os.Stat(server.ClusterGroup.GetMysqlBinlogPath()); os.IsNotExist(err) { server.ClusterGroup.LogPrintf("ERROR", "mysqlbinlog does not exist %s check binary path", server.ClusterGroup.GetMysqlBinlogPath()) @@ -660,7 +661,7 @@ func (cluster *Cluster) RejoinFixRelay(slave *ServerMonitor, relay *ServerMonito } // UseGtid check is replication use gtid -func (server *ServerMonitor) UsedGtidAtElection(crash *Crash) bool { +func (server *ServerMonitor) UsedGtidAtElection(crash *v3.Cluster_Crash) bool { /* ss, errss := server.GetSlaveStatus(server.ReplicationSourceName) if errss != nil { @@ -671,11 +672,11 @@ func (server *ServerMonitor) UsedGtidAtElection(crash *Crash) bool { server.ClusterGroup.LogPrintf(LvlInfo, "Rejoin server using GTID %s", ss.UsingGtid.String) */ - if crash.FailoverIOGtid == nil { + if crash.FailoverIoGtids == nil { server.ClusterGroup.LogPrintf(LvlInfo, "Rejoin server cannot find a saved master election GTID") return false } - if len(crash.FailoverIOGtid.GetSeqNos()) > 0 { + if len(crash.GetFailoverIOGtid().GetSeqNos()) > 0 { server.ClusterGroup.LogPrintf(LvlInfo, "Rejoin server found a crash GTID greater than 0 ") return true } diff --git a/cluster/crash.go b/repmanv3/crash.go similarity index 51% rename from cluster/crash.go rename to repmanv3/crash.go index bf92e6fd4..168392ebf 100644 --- a/cluster/crash.go +++ b/repmanv3/crash.go @@ -6,7 +6,7 @@ // Redistribution/Reuse of this code is permitted under the GNU v3 license, as // an additional term, ALL code must carry the original Author(s) credit in comment form. // See LICENSE in this directory for the integral text. -package cluster +package repmanv3 import ( "encoding/json" @@ -17,55 +17,39 @@ import ( "github.com/signal18/replication-manager/utils/gtid" ) -// Crash will store informations on a crash based on the replication stream -// swagger:response crash -type Crash struct { - URL string - FailoverMasterLogFile string - FailoverMasterLogPos string - NewMasterLogFile string - NewMasterLogPos string - FailoverSemiSyncSlaveStatus bool - FailoverIOGtid *gtid.List - ElectedMasterURL string -} - -// Collection of Crash reports -// swagger:response crashList -type crashList []*Crash +// Cluster_Crash will store informations on a Cluster_Crash based on the replication stream +// swagger:response Cluster_Crash +// type Cluster_Crash struct { +// URL string +// FailoverMasterLogFile string +// FailoverMasterLogPos string +// NewMasterLogFile string +// NewMasterLogPos string +// FailoverSemiSyncSlaveStatus bool +// FailoverIOGtid *gtid.List +// ElectedMasterURL string +// } -func (cluster *Cluster) newCrash(*Crash) (*Crash, error) { - crash := new(Crash) - return crash, nil -} +// Collection of Cluster_Crash reports +type CrashList []*Cluster_Crash -func (cluster *Cluster) getCrashFromJoiner(URL string) *Crash { - for _, cr := range cluster.Crashes { - if cr.URL == URL { - return cr - } +func (crash *Cluster_Crash) GetFailoverIOGtid() (l gtid.List) { + for _, g := range crash.FailoverIoGtids { + l = append(l, *g) } - return nil + return l } -func (cluster *Cluster) getCrashFromMaster(URL string) *Crash { - for _, cr := range cluster.Crashes { - if cr.ElectedMasterURL == URL { - return cr - } +func (crash *Cluster_Crash) SetFailoverIOGtid(l gtid.List) { + for _, g := range l { + crash.FailoverIoGtids = append(crash.FailoverIoGtids, &g) } - return nil -} - -// GetCrashes return crashes -func (cluster *Cluster) GetCrashes() crashList { - return cluster.Crashes } -func (crash *Crash) delete(cl *crashList) { +func (crash *Cluster_Crash) delete(cl *CrashList) { lsm := *cl for k, s := range lsm { - if crash.URL == s.URL { + if crash.Url == s.Url { lsm[k] = lsm[len(lsm)-1] lsm[len(lsm)-1] = nil lsm = lsm[:len(lsm)-1] @@ -75,7 +59,7 @@ func (crash *Crash) delete(cl *crashList) { *cl = lsm } -func (crash *Crash) Save(path string) error { +func (crash *Cluster_Crash) Save(path string) error { saveJson, _ := json.MarshalIndent(crash, "", "\t") err := ioutil.WriteFile(path, saveJson, 0644) if err != nil { @@ -84,7 +68,7 @@ func (crash *Crash) Save(path string) error { return nil } -func (crash *Crash) Purge(path string, keep int) error { +func (crash *Cluster_Crash) Purge(path string, keep int) error { drop := make(map[string]int) files, err := ioutil.ReadDir(path) diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index fc6dcc75b..3d93bef59 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -7,6 +7,7 @@ package repmanv3 import ( + gtid "github.com/signal18/replication-manager/utils/gtid" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -1157,47 +1158,48 @@ type Cluster struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Tenant string `protobuf:"bytes,2,opt,name=tenant,proto3" json:"tenant,omitempty"` - WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` - ServerIdList []string `protobuf:"bytes,4,rep,name=server_id_list,json=dbServers,proto3" json:"server_id_list,omitempty"` - ProxyIdList []string `protobuf:"bytes,5,rep,name=proxy_id_list,json=proxyServers,proto3" json:"proxy_id_list,omitempty"` - FailoverCtr int32 `protobuf:"varint,6,opt,name=failover_ctr,json=failoverCounter,proto3" json:"failover_ctr,omitempty"` - FailoverTs int64 `protobuf:"varint,7,opt,name=failover_ts,json=failoverLastTime,proto3" json:"failover_ts,omitempty"` - Status string `protobuf:"bytes,8,opt,name=status,json=activePassiveStatus,proto3" json:"status,omitempty"` - IsSplitBrain bool `protobuf:"varint,9,opt,name=is_split_brain,json=isSplitBrain,proto3" json:"is_split_brain,omitempty"` - IsFailedArbitrator bool `protobuf:"varint,10,opt,name=is_failed_arbitrator,json=isFailedArbitrator,proto3" json:"is_failed_arbitrator,omitempty"` - IsLostMajority bool `protobuf:"varint,11,opt,name=is_lost_majority,json=isLostMajority,proto3" json:"is_lost_majority,omitempty"` - IsDown bool `protobuf:"varint,12,opt,name=is_down,json=isDown,proto3" json:"is_down,omitempty"` - IsClusterDown bool `protobuf:"varint,13,opt,name=is_cluster_down,json=isClusterDown,proto3" json:"is_cluster_down,omitempty"` - IsAllDbUp bool `protobuf:"varint,14,opt,name=is_all_db_up,json=isAllDbUp,proto3" json:"is_all_db_up,omitempty"` - IsFailable bool `protobuf:"varint,15,opt,name=is_failable,json=isFailable,proto3" json:"is_failable,omitempty"` - IsPostgres bool `protobuf:"varint,16,opt,name=is_postgres,json=isPostgres,proto3" json:"is_postgres,omitempty"` - IsProvision bool `protobuf:"varint,17,opt,name=is_provision,json=isProvision,proto3" json:"is_provision,omitempty"` - IsNeedProxiesRestart bool `protobuf:"varint,18,opt,name=is_need_proxies_restart,json=isNeedProxyRestart,proto3" json:"is_need_proxies_restart,omitempty"` - IsNeedProxiesReprov bool `protobuf:"varint,19,opt,name=is_need_proxies_reprov,json=isNeedProxiesRestart,proto3" json:"is_need_proxies_reprov,omitempty"` - IsNeedDatabasesRestart bool `protobuf:"varint,20,opt,name=is_need_databases_restart,json=isNeedDatabasesRestart,proto3" json:"is_need_databases_restart,omitempty"` - IsNeedDatabasesRollingRestart bool `protobuf:"varint,21,opt,name=is_need_databases_rolling_restart,json=isNeedDatabasesRollingRestart,proto3" json:"is_need_databases_rolling_restart,omitempty"` - IsNeedDatabasesRollingReprov bool `protobuf:"varint,22,opt,name=is_need_databases_rolling_reprov,json=isNeedDatabasesRollingReprov,proto3" json:"is_need_databases_rolling_reprov,omitempty"` - IsNeedDatabasesReprov bool `protobuf:"varint,23,opt,name=is_need_databases_reprov,json=isNeedDatabasesReprov,proto3" json:"is_need_databases_reprov,omitempty"` - IsValidBackup bool `protobuf:"varint,24,opt,name=is_valid_backup,json=isValidBackup,proto3" json:"is_valid_backup,omitempty"` - IsNotMonitoring bool `protobuf:"varint,25,opt,name=is_not_monitoring,json=isNotMonitoring,proto3" json:"is_not_monitoring,omitempty"` - IsCapturing bool `protobuf:"varint,26,opt,name=is_capturing,json=isCapturing,proto3" json:"is_capturing,omitempty"` - CleanAll bool `protobuf:"varint,27,opt,name=clean_all,json=cleanReplication,proto3" json:"clean_all,omitempty"` - Topology string `protobuf:"bytes,28,opt,name=topology,proto3" json:"topology,omitempty"` - Uptime string `protobuf:"bytes,29,opt,name=uptime,proto3" json:"uptime,omitempty"` - UptimeFailable string `protobuf:"bytes,30,opt,name=uptime_failable,json=uptimeFailable,proto3" json:"uptime_failable,omitempty"` - UptimeSemiSync string `protobuf:"bytes,31,opt,name=uptime_semi_sync,json=uptimeSemisync,proto3" json:"uptime_semi_sync,omitempty"` - MonitorSpin string `protobuf:"bytes,32,opt,name=monitor_spin,json=monitorSpin,proto3" json:"monitor_spin,omitempty"` - DbTableSize int64 `protobuf:"varint,33,opt,name=db_table_size,json=dbTableSize,proto3" json:"db_table_size,omitempty"` - DbIndexSize int64 `protobuf:"varint,34,opt,name=db_index_size,json=dbIndexSize,proto3" json:"db_index_size,omitempty"` - Connections int32 `protobuf:"varint,35,opt,name=connections,proto3" json:"connections,omitempty"` - Qps int64 `protobuf:"varint,36,opt,name=qps,proto3" json:"qps,omitempty"` - HaveDBTLSCert bool `protobuf:"varint,37,opt,name=HaveDBTLSCert,json=haveDBTLSCert,proto3" json:"HaveDBTLSCert,omitempty"` - HaveDBTLSOldCert bool `protobuf:"varint,38,opt,name=HaveDBTLSOldCert,json=haveDBTLSOldCert,proto3" json:"HaveDBTLSOldCert,omitempty"` - WaitingRejoin int32 `protobuf:"varint,39,opt,name=WaitingRejoin,json=waitingRejoin,proto3" json:"WaitingRejoin,omitempty"` - WaitingSwitchover int32 `protobuf:"varint,40,opt,name=WaitingSwitchover,json=waitingSwitchover,proto3" json:"WaitingSwitchover,omitempty"` - WaitingFailover int32 `protobuf:"varint,41,opt,name=WaitingFailover,json=waitingFailover,proto3" json:"WaitingFailover,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Tenant string `protobuf:"bytes,2,opt,name=tenant,proto3" json:"tenant,omitempty"` + WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` + ServerIdList []string `protobuf:"bytes,4,rep,name=server_id_list,json=dbServers,proto3" json:"server_id_list,omitempty"` + ProxyIdList []string `protobuf:"bytes,5,rep,name=proxy_id_list,json=proxyServers,proto3" json:"proxy_id_list,omitempty"` + FailoverCtr int32 `protobuf:"varint,6,opt,name=failover_ctr,json=failoverCounter,proto3" json:"failover_ctr,omitempty"` + FailoverTs int64 `protobuf:"varint,7,opt,name=failover_ts,json=failoverLastTime,proto3" json:"failover_ts,omitempty"` + Status string `protobuf:"bytes,8,opt,name=status,json=activePassiveStatus,proto3" json:"status,omitempty"` + IsSplitBrain bool `protobuf:"varint,9,opt,name=is_split_brain,json=isSplitBrain,proto3" json:"is_split_brain,omitempty"` + IsFailedArbitrator bool `protobuf:"varint,10,opt,name=is_failed_arbitrator,json=isFailedArbitrator,proto3" json:"is_failed_arbitrator,omitempty"` + IsLostMajority bool `protobuf:"varint,11,opt,name=is_lost_majority,json=isLostMajority,proto3" json:"is_lost_majority,omitempty"` + IsDown bool `protobuf:"varint,12,opt,name=is_down,json=isDown,proto3" json:"is_down,omitempty"` + IsClusterDown bool `protobuf:"varint,13,opt,name=is_cluster_down,json=isClusterDown,proto3" json:"is_cluster_down,omitempty"` + IsAllDbUp bool `protobuf:"varint,14,opt,name=is_all_db_up,json=isAllDbUp,proto3" json:"is_all_db_up,omitempty"` + IsFailable bool `protobuf:"varint,15,opt,name=is_failable,json=isFailable,proto3" json:"is_failable,omitempty"` + IsPostgres bool `protobuf:"varint,16,opt,name=is_postgres,json=isPostgres,proto3" json:"is_postgres,omitempty"` + IsProvision bool `protobuf:"varint,17,opt,name=is_provision,json=isProvision,proto3" json:"is_provision,omitempty"` + IsNeedProxiesRestart bool `protobuf:"varint,18,opt,name=is_need_proxies_restart,json=isNeedProxyRestart,proto3" json:"is_need_proxies_restart,omitempty"` + IsNeedProxiesReprov bool `protobuf:"varint,19,opt,name=is_need_proxies_reprov,json=isNeedProxiesRestart,proto3" json:"is_need_proxies_reprov,omitempty"` + IsNeedDatabasesRestart bool `protobuf:"varint,20,opt,name=is_need_databases_restart,json=isNeedDatabasesRestart,proto3" json:"is_need_databases_restart,omitempty"` + IsNeedDatabasesRollingRestart bool `protobuf:"varint,21,opt,name=is_need_databases_rolling_restart,json=isNeedDatabasesRollingRestart,proto3" json:"is_need_databases_rolling_restart,omitempty"` + IsNeedDatabasesRollingReprov bool `protobuf:"varint,22,opt,name=is_need_databases_rolling_reprov,json=isNeedDatabasesRollingReprov,proto3" json:"is_need_databases_rolling_reprov,omitempty"` + IsNeedDatabasesReprov bool `protobuf:"varint,23,opt,name=is_need_databases_reprov,json=isNeedDatabasesReprov,proto3" json:"is_need_databases_reprov,omitempty"` + IsValidBackup bool `protobuf:"varint,24,opt,name=is_valid_backup,json=isValidBackup,proto3" json:"is_valid_backup,omitempty"` + IsNotMonitoring bool `protobuf:"varint,25,opt,name=is_not_monitoring,json=isNotMonitoring,proto3" json:"is_not_monitoring,omitempty"` + IsCapturing bool `protobuf:"varint,26,opt,name=is_capturing,json=isCapturing,proto3" json:"is_capturing,omitempty"` + CleanAll bool `protobuf:"varint,27,opt,name=clean_all,json=cleanReplication,proto3" json:"clean_all,omitempty"` + Topology string `protobuf:"bytes,28,opt,name=topology,proto3" json:"topology,omitempty"` + Uptime string `protobuf:"bytes,29,opt,name=uptime,proto3" json:"uptime,omitempty"` + UptimeFailable string `protobuf:"bytes,30,opt,name=uptime_failable,json=uptimeFailable,proto3" json:"uptime_failable,omitempty"` + UptimeSemiSync string `protobuf:"bytes,31,opt,name=uptime_semi_sync,json=uptimeSemisync,proto3" json:"uptime_semi_sync,omitempty"` + MonitorSpin string `protobuf:"bytes,32,opt,name=monitor_spin,json=monitorSpin,proto3" json:"monitor_spin,omitempty"` + DbTableSize int64 `protobuf:"varint,33,opt,name=db_table_size,json=dbTableSize,proto3" json:"db_table_size,omitempty"` + DbIndexSize int64 `protobuf:"varint,34,opt,name=db_index_size,json=dbIndexSize,proto3" json:"db_index_size,omitempty"` + Connections int32 `protobuf:"varint,35,opt,name=connections,proto3" json:"connections,omitempty"` + Qps int64 `protobuf:"varint,36,opt,name=qps,proto3" json:"qps,omitempty"` + HaveDbtlsCert bool `protobuf:"varint,37,opt,name=have_dbtls_cert,json=haveDBTLSCert,proto3" json:"have_dbtls_cert,omitempty"` + HaveDbtlsOldCert bool `protobuf:"varint,38,opt,name=have_dbtls_old_cert,json=haveDBTLSOldCert,proto3" json:"have_dbtls_old_cert,omitempty"` + WaitingRejoin int32 `protobuf:"varint,39,opt,name=waiting_rejoin,json=waitingRejoin,proto3" json:"waiting_rejoin,omitempty"` + WaitingSwitchover int32 `protobuf:"varint,40,opt,name=waiting_switchover,json=waitingSwitchover,proto3" json:"waiting_switchover,omitempty"` + WaitingFailover int32 `protobuf:"varint,41,opt,name=waiting_failover,json=waitingFailover,proto3" json:"waiting_failover,omitempty"` + Crashes []*Cluster_Crash `protobuf:"bytes,42,rep,name=crashes,json=dbServersCrashes,proto3" json:"crashes,omitempty"` } func (x *Cluster) Reset() { @@ -1484,16 +1486,16 @@ func (x *Cluster) GetQps() int64 { return 0 } -func (x *Cluster) GetHaveDBTLSCert() bool { +func (x *Cluster) GetHaveDbtlsCert() bool { if x != nil { - return x.HaveDBTLSCert + return x.HaveDbtlsCert } return false } -func (x *Cluster) GetHaveDBTLSOldCert() bool { +func (x *Cluster) GetHaveDbtlsOldCert() bool { if x != nil { - return x.HaveDBTLSOldCert + return x.HaveDbtlsOldCert } return false } @@ -1519,6 +1521,13 @@ func (x *Cluster) GetWaitingFailover() int32 { return 0 } +func (x *Cluster) GetCrashes() []*Cluster_Crash { + if x != nil { + return x.Crashes + } + return nil +} + type ClusterSetting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2206,6 +2215,109 @@ func (x *Table) GetTableSync() string { return "" } +type Cluster_Crash struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=url,json=URL,proto3" json:"url,omitempty"` + FailoverMasterLogFile string `protobuf:"bytes,2,opt,name=failover_master_log_file,json=FailoverMasterLogFile,proto3" json:"failover_master_log_file,omitempty"` + FailoverMasterLogPos string `protobuf:"bytes,3,opt,name=failover_master_log_pos,json=FailoverMasterLogPos,proto3" json:"failover_master_log_pos,omitempty"` + NewMasterLogFile string `protobuf:"bytes,4,opt,name=new_master_log_file,json=NewMasterLogFile,proto3" json:"new_master_log_file,omitempty"` + NewMasterLogPos string `protobuf:"bytes,5,opt,name=new_master_log_pos,json=NewMasterLogPos,proto3" json:"new_master_log_pos,omitempty"` + FailoverSemiSyncSlaveStatus bool `protobuf:"varint,6,opt,name=failover_semi_sync_slave_status,json=FailoverSemiSyncSlaveStatus,proto3" json:"failover_semi_sync_slave_status,omitempty"` + FailoverIoGtids []*gtid.Gtid `protobuf:"bytes,7,rep,name=failover_io_gtids,json=FailoverIOGtid,proto3" json:"failover_io_gtids,omitempty"` + ElectedMasterUrl string `protobuf:"bytes,8,opt,name=elected_master_url,json=ElectedMasterURL,proto3" json:"elected_master_url,omitempty"` +} + +func (x *Cluster_Crash) Reset() { + *x = Cluster_Crash{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Cluster_Crash) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cluster_Crash) ProtoMessage() {} + +func (x *Cluster_Crash) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Cluster_Crash.ProtoReflect.Descriptor instead. +func (*Cluster_Crash) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *Cluster_Crash) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Cluster_Crash) GetFailoverMasterLogFile() string { + if x != nil { + return x.FailoverMasterLogFile + } + return "" +} + +func (x *Cluster_Crash) GetFailoverMasterLogPos() string { + if x != nil { + return x.FailoverMasterLogPos + } + return "" +} + +func (x *Cluster_Crash) GetNewMasterLogFile() string { + if x != nil { + return x.NewMasterLogFile + } + return "" +} + +func (x *Cluster_Crash) GetNewMasterLogPos() string { + if x != nil { + return x.NewMasterLogPos + } + return "" +} + +func (x *Cluster_Crash) GetFailoverSemiSyncSlaveStatus() bool { + if x != nil { + return x.FailoverSemiSyncSlaveStatus + } + return false +} + +func (x *Cluster_Crash) GetFailoverIoGtids() []*gtid.Gtid { + if x != nil { + return x.FailoverIoGtids + } + return nil +} + +func (x *Cluster_Crash) GetElectedMasterUrl() string { + if x != nil { + return x.ElectedMasterUrl + } + return "" +} + type ClusterSetting_Setting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2218,7 +2330,7 @@ type ClusterSetting_Setting struct { func (x *ClusterSetting_Setting) Reset() { *x = ClusterSetting_Setting{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2231,7 +2343,7 @@ func (x *ClusterSetting_Setting) String() string { func (*ClusterSetting_Setting) ProtoMessage() {} func (x *ClusterSetting_Setting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2272,7 +2384,7 @@ type ClusterSetting_Switch struct { func (x *ClusterSetting_Switch) Reset() { *x = ClusterSetting_Switch{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2285,7 +2397,7 @@ func (x *ClusterSetting_Switch) String() string { func (*ClusterSetting_Switch) ProtoMessage() {} func (x *ClusterSetting_Switch) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2323,7 +2435,7 @@ type ClusterAction_Server struct { func (x *ClusterAction_Server) Reset() { *x = ClusterAction_Server{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[14] + mi := &file_messages_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2336,7 +2448,7 @@ func (x *ClusterAction_Server) String() string { func (*ClusterAction_Server) ProtoMessage() {} func (x *ClusterAction_Server) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[14] + mi := &file_messages_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2393,584 +2505,618 @@ var file_messages_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x22, 0x6f, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x22, 0x41, 0x0a, 0x0d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xdd, 0x0c, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x21, - 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x62, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x5f, 0x63, 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, - 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x73, 0x73, - 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, - 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x69, 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x12, - 0x30, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x62, - 0x69, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, - 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x6a, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4c, - 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x69, - 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, - 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, - 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1f, 0x0a, 0x0c, - 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x62, 0x5f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x44, 0x62, 0x55, 0x70, 0x12, 0x1f, 0x0a, - 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x12, - 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x17, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x78, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x73, 0x5f, 0x6e, 0x65, - 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x72, 0x6f, - 0x76, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, - 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, - 0x19, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x16, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x48, 0x0a, 0x21, 0x69, 0x73, 0x5f, 0x6e, - 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x1d, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x73, 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x46, 0x0a, 0x20, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, - 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, - 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x6f, 0x6c, - 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x12, 0x37, 0x0a, 0x18, 0x69, 0x73, - 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, - 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, - 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x70, - 0x72, 0x6f, 0x76, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x69, - 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, - 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x61, - 0x70, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, - 0x73, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x09, 0x63, 0x6c, - 0x65, 0x61, 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, - 0x6c, 0x65, 0x61, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x74, - 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, - 0x74, 0x69, 0x6d, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, - 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, - 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, - 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x5f, 0x73, 0x70, 0x69, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x62, 0x5f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x64, 0x62, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, - 0x0d, 0x64, 0x62, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x22, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x70, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x03, 0x71, 0x70, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x48, 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, - 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, - 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x48, - 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, 0x53, 0x4f, 0x6c, 0x64, 0x43, 0x65, 0x72, 0x74, 0x18, - 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, 0x53, - 0x4f, 0x6c, 0x64, 0x43, 0x65, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x57, 0x61, 0x69, 0x74, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, - 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, - 0x11, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, - 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, - 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x57, - 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x29, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x69, 0x67, + 0x33, 0x1a, 0x0a, 0x67, 0x74, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, + 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x41, + 0x0a, 0x0d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x73, 0x22, 0xe6, 0x10, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x21, 0x0a, 0x0e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x64, 0x62, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, + 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0b, 0x66, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, + 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x73, 0x70, 0x6c, 0x69, + 0x74, 0x5f, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, + 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, + 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, + 0x10, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4c, 0x6f, 0x73, 0x74, 0x4d, + 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x64, 0x6f, + 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x44, 0x6f, 0x77, 0x6e, + 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, + 0x6f, 0x77, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1f, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, + 0x6c, 0x6c, 0x5f, 0x64, 0x62, 0x5f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x44, 0x62, 0x55, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, + 0x66, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x69, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x69, 0x73, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, + 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, + 0x0a, 0x17, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, + 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x12, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, + 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x19, 0x69, 0x73, 0x5f, + 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, + 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, + 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x48, 0x0a, 0x21, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x1d, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, + 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x46, + 0x0a, 0x20, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x70, 0x72, + 0x6f, 0x76, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x12, 0x37, 0x0a, 0x18, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, + 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x72, + 0x6f, 0x76, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x12, + 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x6e, 0x6f, + 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x19, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, + 0x69, 0x6e, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x61, 0x70, + 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x09, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x5f, + 0x61, 0x6c, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x6c, 0x65, 0x61, 0x6e, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x74, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, + 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x70, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x1f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, + 0x6e, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x70, + 0x69, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x53, 0x70, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x62, 0x5f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x62, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x62, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x64, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x71, 0x70, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x71, 0x70, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x68, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x62, 0x74, 0x6c, 0x73, 0x5f, + 0x63, 0x65, 0x72, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, 0x76, 0x65, + 0x44, 0x42, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x68, 0x61, 0x76, + 0x65, 0x5f, 0x64, 0x62, 0x74, 0x6c, 0x73, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x65, 0x72, 0x74, + 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, + 0x53, 0x4f, 0x6c, 0x64, 0x43, 0x65, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x61, 0x69, 0x74, + 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x12, + 0x2d, 0x0a, 0x12, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x77, 0x61, 0x69, + 0x74, 0x69, 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x29, + 0x0a, 0x10, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, + 0x67, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x07, 0x63, 0x72, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x06, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, 0x0e, 0x0a, - 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, - 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, - 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, - 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, - 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x03, - 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, - 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, 0x59, 0x10, - 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, - 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, - 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, - 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, - 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x12, 0x0a, - 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, - 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x41, - 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x0c, 0x12, - 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0d, - 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, - 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, - 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, - 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, - 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, - 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x14, 0x12, - 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, - 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, - 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x1b, 0x0a, - 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x5f, - 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, 0x1b, 0x0a, - 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, - 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, 0x12, 0x18, - 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, - 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, - 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, - 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, - 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x1f, 0x12, - 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x50, - 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, - 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, 0x0a, - 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, - 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, - 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, - 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, 0x12, 0x22, - 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, - 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, 0x4d, 0x47, - 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, - 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, - 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, 0x0a, 0x11, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, - 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x32, - 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, - 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, 0x0a, 0x25, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, - 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, - 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, - 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, - 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, 0x49, - 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, - 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, - 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, - 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, - 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x43, - 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, - 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, - 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, 0x12, 0x2d, - 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, - 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x1b, 0x0a, - 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, - 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, - 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, - 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x22, 0x0a, - 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, - 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, - 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x53, - 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x41, - 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, - 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, - 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, - 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, - 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, - 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x4f, 0x52, - 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x41, - 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, - 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, - 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, 0x12, 0x1e, - 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x48, 0x59, - 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x29, - 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x4c, 0x41, - 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x48, 0x45, - 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, - 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, 0x41, 0x53, - 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x52, - 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, 0x4f, 0x53, - 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, - 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, - 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, 0x43, - 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, - 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x10, - 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, - 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, - 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, - 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, - 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, - 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, - 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, - 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, - 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, 0x10, - 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x45, - 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, - 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, 0x1a, 0x12, - 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, - 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, 0x14, 0x0a, - 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x55, 0x53, - 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, - 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1d, 0x12, - 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, - 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, - 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, - 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, - 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, - 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, 0x18, 0x4d, - 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, - 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, 0x1a, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, - 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, 0x0c, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, 0x25, 0x0a, - 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, - 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, - 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, - 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, - 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, 0x4f, 0x53, - 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, - 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, 0x1e, 0x0a, - 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, - 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, 0x0a, - 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, - 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, 0x1c, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, - 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x16, 0x0a, - 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, - 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, - 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x2e, 0x12, - 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, 0x27, 0x0a, - 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, - 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, - 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, - 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, - 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, - 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, - 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, - 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, 0x12, 0x16, - 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, - 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, - 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, - 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, - 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x38, 0x12, - 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, - 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, - 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, 0x22, 0xaa, - 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, - 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, 0x4c, - 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x12, 0x07, - 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, - 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, - 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, 0x5f, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0xb3, 0x0c, 0x0a, 0x0d, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x61, 0x73, 0x68, 0x52, 0x10, 0x64, 0x62, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x73, 0x43, 0x72, 0x61, 0x73, 0x68, 0x65, 0x73, 0x1a, 0xab, 0x03, 0x0a, + 0x05, 0x43, 0x72, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, + 0x65, 0x12, 0x35, 0x0a, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x14, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x77, 0x5f, + 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x5f, 0x6d, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, + 0x67, 0x50, 0x6f, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x53, + 0x6c, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x66, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6f, 0x5f, 0x67, 0x74, 0x69, 0x64, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x74, 0x69, 0x64, 0x52, 0x0e, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x4f, 0x47, 0x74, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x12, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x55, 0x52, 0x4c, 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, - 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, + 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x37, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0xc1, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, - 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x1a, 0xd6, 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, + 0x0b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, + 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, + 0x4b, 0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, + 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, + 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, + 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, + 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, + 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, + 0x45, 0x4b, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, + 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, + 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, + 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x08, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, + 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, + 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, + 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, + 0x49, 0x4d, 0x49, 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, + 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, + 0x49, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, + 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, + 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, + 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, + 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, + 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, + 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, + 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, + 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, + 0x4f, 0x4c, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, + 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, + 0x50, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, + 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, + 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, + 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, + 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, + 0x59, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, + 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, + 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, + 0x53, 0x54, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, + 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, + 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, + 0x54, 0x53, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, + 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, + 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, + 0x10, 0x22, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, + 0x53, 0x49, 0x5a, 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, + 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, + 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, + 0x47, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, + 0x45, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, + 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, + 0x30, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, + 0x34, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, + 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, + 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, + 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, + 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, + 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, + 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, + 0x4f, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, + 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, + 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, + 0x4e, 0x10, 0x3c, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, + 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, + 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, + 0x10, 0x3d, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, + 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, + 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, + 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, + 0x10, 0x3f, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, + 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, + 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, + 0x52, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, + 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, + 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, + 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, + 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, + 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, + 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, + 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, + 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, + 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, + 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, + 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, + 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, + 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, + 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, + 0x50, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, + 0x50, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x41, 0x4c, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, + 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, + 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, + 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, + 0x41, 0x55, 0x54, 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, + 0x0a, 0x0d, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, + 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, + 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, + 0x12, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, + 0x45, 0x41, 0x54, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, + 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, + 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, + 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, + 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, + 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, + 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, + 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, + 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, + 0x15, 0x0a, 0x11, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, + 0x44, 0x44, 0x45, 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, + 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, + 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, + 0x52, 0x45, 0x10, 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, + 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x10, 0x1b, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, + 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, + 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, + 0x53, 0x54, 0x10, 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, + 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, + 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, + 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, + 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, + 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, + 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, + 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, + 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, + 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, + 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, + 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, + 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, + 0x10, 0x25, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, + 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, + 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, + 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, + 0x54, 0x52, 0x41, 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, + 0x10, 0x29, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, + 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, + 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, + 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, + 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, + 0x10, 0x2c, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, + 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, + 0x54, 0x53, 0x10, 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, + 0x10, 0x2f, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, + 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, + 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, + 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, + 0x4f, 0x54, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, + 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, + 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, + 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, + 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, + 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, + 0x50, 0x10, 0x34, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, + 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, + 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, + 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, + 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, + 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, + 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, + 0x54, 0x53, 0x10, 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, + 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, + 0x54, 0x45, 0x53, 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, + 0x45, 0x10, 0x3b, 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, + 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, + 0x14, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, + 0x44, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, + 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, + 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, + 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, + 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, + 0x22, 0xb3, 0x0c, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0xc1, 0x04, 0x0a, 0x06, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x08, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, + 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, + 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, + 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, + 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, + 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, + 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, + 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, + 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, + 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, 0xb2, 0x03, + 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, + 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, + 0x56, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, + 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, + 0x17, 0x0a, 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, + 0x4f, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, + 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, + 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, + 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, + 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, + 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, + 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, + 0x54, 0x45, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, + 0x54, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, + 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, + 0x0a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, + 0x08, 0x53, 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, + 0x41, 0x49, 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, + 0x0a, 0x15, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, + 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, + 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, + 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, + 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, + 0x10, 0x16, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, + 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, + 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, + 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, + 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, + 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, + 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, + 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, + 0x0a, 0x12, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, + 0x53, 0x52, 0x45, 0x50, 0x10, 0x07, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, + 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, + 0x65, 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, + 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, + 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, + 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, + 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, + 0x49, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, + 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, + 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, + 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, - 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, - 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, - 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, - 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, - 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, - 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, - 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, - 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, - 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, - 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, - 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, - 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, - 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, - 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, - 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, - 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, - 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, - 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, - 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, - 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, - 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, - 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, - 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, - 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, - 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, - 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, - 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, - 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, - 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, - 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, - 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, - 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, - 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, - 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, - 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, - 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, - 0x07, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, - 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, - 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x22, 0x7b, 0x0a, 0x09, - 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, - 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x10, 0x01, - 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, - 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, - 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x45, 0x53, 0x10, 0x05, - 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, - 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, 0x0b, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, - 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, - 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, - 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, - 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, - 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, - 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, - 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, - 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, - 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2a, 0x55, 0x0a, 0x0d, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, - 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, - 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, - 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, - 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, - 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, + 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, + 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, + 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, + 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, + 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, + 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -2986,7 +3132,7 @@ func file_messages_proto_rawDescGZIP() []byte { } var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_messages_proto_goTypes = []interface{}{ (ServiceStatus)(0), // 0: signal18.replication_manager.v3.ServiceStatus (ClusterSetting_Action)(0), // 1: signal18.replication_manager.v3.ClusterSetting.Action @@ -3011,36 +3157,40 @@ var file_messages_proto_goTypes = []interface{}{ (*Tag)(nil), // 20: signal18.replication_manager.v3.Tag (*TableAction)(nil), // 21: signal18.replication_manager.v3.TableAction (*Table)(nil), // 22: signal18.replication_manager.v3.Table - (*ClusterSetting_Setting)(nil), // 23: signal18.replication_manager.v3.ClusterSetting.Setting - (*ClusterSetting_Switch)(nil), // 24: signal18.replication_manager.v3.ClusterSetting.Switch - (*ClusterAction_Server)(nil), // 25: signal18.replication_manager.v3.ClusterAction.Server + (*Cluster_Crash)(nil), // 23: signal18.replication_manager.v3.Cluster.Crash + (*ClusterSetting_Setting)(nil), // 24: signal18.replication_manager.v3.ClusterSetting.Setting + (*ClusterSetting_Switch)(nil), // 25: signal18.replication_manager.v3.ClusterSetting.Switch + (*ClusterAction_Server)(nil), // 26: signal18.replication_manager.v3.ClusterAction.Server + (*gtid.Gtid)(nil), // 27: signal18.replication_manager.v3.Gtid } var file_messages_proto_depIdxs = []int32{ 12, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource - 13, // 1: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster - 1, // 2: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action - 23, // 3: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting - 24, // 4: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch - 13, // 5: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 4, // 6: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action - 25, // 7: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server - 5, // 8: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology - 0, // 9: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus - 13, // 10: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster - 9, // 11: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval - 13, // 12: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 22, // 13: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table - 10, // 14: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action - 2, // 15: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName - 3, // 16: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - 6, // 17: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type - 7, // 18: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database - 8, // 19: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy - 20, // [20:20] is the sub-list for method output_type - 20, // [20:20] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 23, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash + 13, // 2: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster + 1, // 3: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action + 24, // 4: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting + 25, // 5: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch + 13, // 6: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 4, // 7: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action + 26, // 8: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server + 5, // 9: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology + 0, // 10: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus + 13, // 11: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster + 9, // 12: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval + 13, // 13: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 22, // 14: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table + 10, // 15: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action + 27, // 16: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid + 2, // 17: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName + 3, // 18: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName + 6, // 19: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type + 7, // 20: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database + 8, // 21: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy + 22, // [22:22] is the sub-list for method output_type + 22, // [22:22] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_messages_proto_init() } @@ -3194,7 +3344,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterSetting_Setting); i { + switch v := v.(*Cluster_Crash); i { case 0: return &v.state case 1: @@ -3206,7 +3356,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterSetting_Switch); i { + switch v := v.(*ClusterSetting_Setting); i { case 0: return &v.state case 1: @@ -3218,6 +3368,18 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClusterSetting_Switch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterAction_Server); i { case 0: return &v.state @@ -3236,7 +3398,7 @@ func file_messages_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_messages_proto_rawDesc, NumEnums: 11, - NumMessages: 15, + NumMessages: 16, NumExtensions: 0, NumServices: 0, }, diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index f55fd944f..4104a27e8 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -9342,6 +9342,38 @@ ], "default": "TYPE_UNSPECIFIED" }, + "ClusterCrash": { + "type": "object", + "properties": { + "URL": { + "type": "string" + }, + "FailoverMasterLogFile": { + "type": "string" + }, + "FailoverMasterLogPos": { + "type": "string" + }, + "NewMasterLogFile": { + "type": "string" + }, + "NewMasterLogPos": { + "type": "string" + }, + "FailoverSemiSyncSlaveStatus": { + "type": "boolean" + }, + "FailoverIOGtid": { + "type": "array", + "items": { + "$ref": "#/definitions/v3Gtid" + } + }, + "ElectedMasterURL": { + "type": "string" + } + } + }, "ClusterSettingSetting": { "type": "object", "properties": { @@ -9762,6 +9794,12 @@ "waitingFailover": { "type": "integer", "format": "int32" + }, + "dbServersCrashes": { + "type": "array", + "items": { + "$ref": "#/definitions/ClusterCrash" + } } } }, @@ -9809,6 +9847,23 @@ ], "default": "UNSPECIFIED" }, + "v3Gtid": { + "type": "object", + "properties": { + "domainId": { + "type": "string", + "format": "uint64" + }, + "serverId": { + "type": "string", + "format": "uint64" + }, + "seqNo": { + "type": "string", + "format": "uint64" + } + } + }, "v3ServiceStatus": { "type": "string", "enum": [ diff --git a/repmanv3/service.desc b/repmanv3/service.desc index a85e884ced74873ba81b515d7348b0aca063721c..1b07969d1eb451f39150ec63a5ec69beb017a159 100644 GIT binary patch delta 639 zcmZXS%}(1u6omzD;xLe42C9yrYN;R)pk&b>v0%r4rL+w;T~;Gw-xwn&gM0^~u2`}| zs{9x%5JEf$4*}|?ufU=+6O5p&>^b*4_s%``wSNm`a?>D{HX!;DVD@vmHb^2FhxLP0 zNb&pARsSF7;_qo;d4>${`A5LRU6~*cAeF2-*;gyMWi79*>@>VpCDKJQ`iK)r$b;;> z`1)g&RJwjF<4(j=*cWk!%_@7rE#IrI5tW_h7-o0Hsi8UI`cI~*nszuiccRfgtAVqTq96z&2!Msz4SchrC`qbb7*ZSc$=n`QqKTd?= zdD};+9*Kx}D^7s*8|>xAef_H`H$=3diu5yi_0)LWa~=p}mNAY!Gd2b4cskI1HtU74 zINzZAbj$*w|KWN-!O+8x=_aV=Yvk?2r4ZUN$6uX*W1_zsN?#r#D=KTroyhOzDauoj zry0*6v`I!Dy2OI(zX6$TlCG+x->qya#jWHmzI@kb`kqioAdnE|%ju{~y}j0ZmELYD K_scE&WbPjnw9*X# delta 155 zcmaEodOnev>zv0#X2XdNTbb_iZ2aEGYNo=)>ycQN>f#jQ6YQK?R3f3Oz^K6y#G8RE zD5S+D09WOolj1!20Go^ Date: Tue, 3 May 2022 01:35:58 +0200 Subject: [PATCH 04/13] Add maps to v3.Cluster --- cluster/cluster.go | 5 + repmanv3/messages.pb.go | 1151 +++++++++-------- repmanv3/repmanv3.swagger.json | 31 + repmanv3/service.desc | Bin 13028 -> 13770 bytes .../replication-manager/v3/messages.proto | 11 +- 5 files changed, 668 insertions(+), 530 deletions(-) diff --git a/cluster/cluster.go b/cluster/cluster.go index b93a4993b..aad29f801 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -219,6 +219,11 @@ func ClusterToProtoCluster(c *Cluster) *v3.Cluster { WaitingSwitchover: int32(c.WaitingSwitchover), WaitingFailover: int32(c.WaitingFailover), Crashes: c.Crashes, + MonitorType: c.MonitorType, + TopologyType: c.TopologyType, + FsType: c.FSType, + DiskType: c.DiskType, + VmType: c.VMType, } return out diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index 3d93bef59..e7586d40a 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -1200,6 +1200,18 @@ type Cluster struct { WaitingSwitchover int32 `protobuf:"varint,40,opt,name=waiting_switchover,json=waitingSwitchover,proto3" json:"waiting_switchover,omitempty"` WaitingFailover int32 `protobuf:"varint,41,opt,name=waiting_failover,json=waitingFailover,proto3" json:"waiting_failover,omitempty"` Crashes []*Cluster_Crash `protobuf:"bytes,42,rep,name=crashes,json=dbServersCrashes,proto3" json:"crashes,omitempty"` + // config.Config Conf = 43 [json_name="config"]; + // configurator.Configurator Configurator = 44 [json_name="configurator"]; + // []VariableDiff DiffVariables = 45 [json_name="diffVariables"]; + // s18log.HttpLog Log = 46 [json_name="log"]; + // map[string]*JobResult JobResults = 47 [json_name="jobResults"]; + // s18log.HttpLog SQLGeneralLog = 48 [json_name="sqlGeneralLog"]; + // s18log.HttpLog SQLErrorLog = 49 [json_name="sqlErrorLog"]; + MonitorType map[string]string `protobuf:"bytes,50,rep,name=monitor_type,json=monitorType,proto3" json:"monitor_type,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TopologyType map[string]string `protobuf:"bytes,51,rep,name=topology_type,json=topologyType,proto3" json:"topology_type,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + FsType map[string]bool `protobuf:"bytes,52,rep,name=fs_type,json=fsType,proto3" json:"fs_type,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + DiskType map[string]string `protobuf:"bytes,53,rep,name=disk_type,json=diskType,proto3" json:"disk_type,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VmType map[string]bool `protobuf:"bytes,54,rep,name=vm_type,json=vmType,proto3" json:"vm_type,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *Cluster) Reset() { @@ -1528,6 +1540,41 @@ func (x *Cluster) GetCrashes() []*Cluster_Crash { return nil } +func (x *Cluster) GetMonitorType() map[string]string { + if x != nil { + return x.MonitorType + } + return nil +} + +func (x *Cluster) GetTopologyType() map[string]string { + if x != nil { + return x.TopologyType + } + return nil +} + +func (x *Cluster) GetFsType() map[string]bool { + if x != nil { + return x.FsType + } + return nil +} + +func (x *Cluster) GetDiskType() map[string]string { + if x != nil { + return x.DiskType + } + return nil +} + +func (x *Cluster) GetVmType() map[string]bool { + if x != nil { + return x.VmType + } + return nil +} + type ClusterSetting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2330,7 +2377,7 @@ type ClusterSetting_Setting struct { func (x *ClusterSetting_Setting) Reset() { *x = ClusterSetting_Setting{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2343,7 +2390,7 @@ func (x *ClusterSetting_Setting) String() string { func (*ClusterSetting_Setting) ProtoMessage() {} func (x *ClusterSetting_Setting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2384,7 +2431,7 @@ type ClusterSetting_Switch struct { func (x *ClusterSetting_Switch) Reset() { *x = ClusterSetting_Switch{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[14] + mi := &file_messages_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2397,7 +2444,7 @@ func (x *ClusterSetting_Switch) String() string { func (*ClusterSetting_Switch) ProtoMessage() {} func (x *ClusterSetting_Switch) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[14] + mi := &file_messages_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2435,7 +2482,7 @@ type ClusterAction_Server struct { func (x *ClusterAction_Server) Reset() { *x = ClusterAction_Server{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[15] + mi := &file_messages_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2448,7 +2495,7 @@ func (x *ClusterAction_Server) String() string { func (*ClusterAction_Server) ProtoMessage() {} func (x *ClusterAction_Server) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[15] + mi := &file_messages_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2517,7 +2564,7 @@ var file_messages_proto_rawDesc = []byte{ 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x22, 0xe6, 0x10, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, + 0x73, 0x22, 0xcc, 0x16, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, @@ -2624,499 +2671,545 @@ var file_messages_proto_rawDesc = []byte{ 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x61, 0x73, 0x68, 0x52, 0x10, 0x64, 0x62, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x73, 0x43, 0x72, 0x61, 0x73, 0x68, 0x65, 0x73, 0x1a, 0xab, 0x03, 0x0a, - 0x05, 0x43, 0x72, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, - 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, - 0x65, 0x12, 0x35, 0x0a, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x14, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, - 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x77, 0x5f, - 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, - 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x5f, 0x6d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, - 0x67, 0x50, 0x6f, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x53, - 0x6c, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x66, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6f, 0x5f, 0x67, 0x74, 0x69, 0x64, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x74, 0x69, 0x64, 0x52, 0x0e, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x4f, 0x47, 0x74, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x12, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x55, 0x52, 0x4c, 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, - 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x72, 0x76, 0x65, 0x72, 0x73, 0x43, 0x72, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x0c, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x32, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x0d, 0x74, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x33, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, - 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x66, + 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x53, 0x0a, 0x09, 0x64, 0x69, + 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x4d, 0x0a, 0x07, 0x76, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x36, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xab, + 0x03, 0x0a, 0x05, 0x43, 0x72, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, + 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, + 0x69, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, + 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, + 0x77, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x65, 0x77, + 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x6c, 0x61, + 0x76, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x1b, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, + 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x11, + 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6f, 0x5f, 0x67, 0x74, 0x69, 0x64, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x74, 0x69, 0x64, 0x52, 0x0e, + 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x4f, 0x47, 0x74, 0x69, 0x64, 0x12, 0x2c, + 0x0a, 0x12, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6c, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x55, 0x52, 0x4c, 0x1a, 0x3e, 0x0a, 0x10, + 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, + 0x0b, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, + 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x1a, 0xd6, 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, - 0x0b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, - 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, - 0x4b, 0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, - 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, - 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, - 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, - 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, - 0x45, 0x4b, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, - 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x08, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, - 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, - 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, - 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, - 0x49, 0x4d, 0x49, 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, - 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, - 0x41, 0x59, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, - 0x49, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, - 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, - 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, - 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, - 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, - 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, - 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, - 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, - 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, - 0x4f, 0x4c, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, - 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, - 0x50, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, - 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, - 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, - 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, - 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, - 0x59, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, - 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, - 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, - 0x53, 0x54, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, - 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, - 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, - 0x54, 0x53, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, - 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, - 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, - 0x10, 0x22, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, + 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, + 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, + 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, + 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, + 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, + 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, + 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, + 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, + 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, + 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, + 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, + 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, + 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, + 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, + 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, + 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, + 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, + 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, + 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, + 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, + 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, + 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, + 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, + 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, + 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, + 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, + 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, + 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, + 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, + 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, + 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, + 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, + 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, + 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, - 0x53, 0x49, 0x5a, 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, - 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, - 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, - 0x47, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, - 0x45, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, - 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, - 0x30, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, - 0x34, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, - 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, - 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, - 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, - 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, - 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, - 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, - 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, - 0x4f, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, - 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, - 0x4e, 0x10, 0x3c, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, - 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, - 0x10, 0x3d, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, - 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, - 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, - 0x10, 0x3f, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, - 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, - 0x52, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, - 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, - 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, - 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, - 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, - 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, - 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, - 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, - 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, - 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, - 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, - 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, - 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, - 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, - 0x50, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, - 0x4e, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, - 0x4e, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, - 0x41, 0x4c, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, - 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, - 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, - 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, - 0x41, 0x55, 0x54, 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, - 0x0a, 0x0d, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, - 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, - 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, - 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, - 0x12, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, - 0x45, 0x41, 0x54, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, - 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, - 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, - 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, - 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, - 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, - 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, - 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, - 0x15, 0x0a, 0x11, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, - 0x44, 0x44, 0x45, 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, - 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, - 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, - 0x52, 0x45, 0x10, 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, - 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x10, 0x1b, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, - 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, - 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, - 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, - 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, - 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, - 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, - 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, - 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, - 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, - 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, - 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, - 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, - 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, - 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, - 0x10, 0x25, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, - 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, - 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, - 0x50, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, - 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, - 0x10, 0x29, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, - 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, - 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, - 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, - 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, - 0x10, 0x2c, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, - 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, - 0x54, 0x53, 0x10, 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, - 0x10, 0x2f, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, - 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, - 0x4f, 0x54, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, - 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, - 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, - 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, + 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, + 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, + 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, + 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, + 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, + 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, + 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, + 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, + 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, + 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, + 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, + 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, + 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, + 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, + 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, + 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, + 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, + 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x10, 0x34, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, - 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, - 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, - 0x54, 0x53, 0x10, 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, - 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, - 0x54, 0x45, 0x53, 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, - 0x45, 0x10, 0x3b, 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, - 0x14, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, - 0x44, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, - 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, - 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, - 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, - 0x22, 0xb3, 0x0c, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0xc1, 0x04, 0x0a, 0x06, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, + 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, + 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, + 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, + 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, + 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, + 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, + 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, + 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, + 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, + 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, + 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, + 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, + 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, + 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, + 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, + 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, + 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, + 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, + 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, + 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, + 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, + 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, + 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, + 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, + 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, + 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, + 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, + 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, + 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, + 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, + 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, + 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, + 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, + 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, + 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, + 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, + 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, + 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, + 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, + 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, + 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, + 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, + 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, + 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, + 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, + 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, + 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, + 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, + 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, + 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, + 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, + 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, + 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, + 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, + 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, + 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, + 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, + 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, + 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, + 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, + 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, + 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, + 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, + 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, + 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, + 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, + 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, + 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, + 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, + 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, + 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, + 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, + 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, + 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, + 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, + 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, + 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, + 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, + 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, + 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, + 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, + 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, + 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, + 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, + 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, + 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, + 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, + 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, + 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, + 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, + 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, + 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0xb3, 0x0c, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x06, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, + 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x1a, + 0xc1, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x51, + 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, + 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, + 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, + 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, + 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, + 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, + 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, + 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, + 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, + 0x58, 0x10, 0x07, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, + 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, + 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, + 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, + 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, + 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, + 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, + 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, + 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, + 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, + 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, + 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, + 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, + 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, + 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, + 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, + 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, + 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, + 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, + 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, + 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, + 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, + 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, + 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, + 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, + 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, + 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, + 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, + 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, + 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, + 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, + 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, 0x07, 0x22, 0x55, 0x0a, 0x0d, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, + 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, + 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, + 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x08, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, - 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, - 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, - 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, - 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, - 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, - 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, - 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, - 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, - 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, 0xb2, 0x03, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, + 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, + 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, + 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, + 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, + 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, + 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, + 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, + 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, + 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, - 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, - 0x56, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, - 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, - 0x17, 0x0a, 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, - 0x4f, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, - 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, - 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, - 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, - 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, - 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, - 0x54, 0x45, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, - 0x54, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, - 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, - 0x0a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, - 0x08, 0x53, 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, - 0x41, 0x49, 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, - 0x0a, 0x15, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, - 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, - 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, - 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, - 0x10, 0x16, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, - 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, - 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, - 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, - 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, - 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, - 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, - 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, - 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, - 0x0a, 0x12, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, - 0x53, 0x52, 0x45, 0x50, 0x10, 0x07, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, - 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, - 0x65, 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, - 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, - 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, - 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, - 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, - 0x49, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, - 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, - 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, - 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, - 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, - 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, - 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, - 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, - 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, - 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, - 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, + 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, + 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, + 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, + 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, + 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, + 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, + 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, + 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3132,7 +3225,7 @@ func file_messages_proto_rawDescGZIP() []byte { } var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_messages_proto_goTypes = []interface{}{ (ServiceStatus)(0), // 0: signal18.replication_manager.v3.ServiceStatus (ClusterSetting_Action)(0), // 1: signal18.replication_manager.v3.ClusterSetting.Action @@ -3158,39 +3251,49 @@ var file_messages_proto_goTypes = []interface{}{ (*TableAction)(nil), // 21: signal18.replication_manager.v3.TableAction (*Table)(nil), // 22: signal18.replication_manager.v3.Table (*Cluster_Crash)(nil), // 23: signal18.replication_manager.v3.Cluster.Crash - (*ClusterSetting_Setting)(nil), // 24: signal18.replication_manager.v3.ClusterSetting.Setting - (*ClusterSetting_Switch)(nil), // 25: signal18.replication_manager.v3.ClusterSetting.Switch - (*ClusterAction_Server)(nil), // 26: signal18.replication_manager.v3.ClusterAction.Server - (*gtid.Gtid)(nil), // 27: signal18.replication_manager.v3.Gtid + nil, // 24: signal18.replication_manager.v3.Cluster.MonitorTypeEntry + nil, // 25: signal18.replication_manager.v3.Cluster.TopologyTypeEntry + nil, // 26: signal18.replication_manager.v3.Cluster.FsTypeEntry + nil, // 27: signal18.replication_manager.v3.Cluster.DiskTypeEntry + nil, // 28: signal18.replication_manager.v3.Cluster.VmTypeEntry + (*ClusterSetting_Setting)(nil), // 29: signal18.replication_manager.v3.ClusterSetting.Setting + (*ClusterSetting_Switch)(nil), // 30: signal18.replication_manager.v3.ClusterSetting.Switch + (*ClusterAction_Server)(nil), // 31: signal18.replication_manager.v3.ClusterAction.Server + (*gtid.Gtid)(nil), // 32: signal18.replication_manager.v3.Gtid } var file_messages_proto_depIdxs = []int32{ 12, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource 23, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash - 13, // 2: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster - 1, // 3: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action - 24, // 4: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting - 25, // 5: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch - 13, // 6: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 4, // 7: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action - 26, // 8: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server - 5, // 9: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology - 0, // 10: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus - 13, // 11: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster - 9, // 12: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval - 13, // 13: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 22, // 14: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table - 10, // 15: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action - 27, // 16: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid - 2, // 17: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName - 3, // 18: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - 6, // 19: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type - 7, // 20: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database - 8, // 21: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy - 22, // [22:22] is the sub-list for method output_type - 22, // [22:22] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 24, // 2: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry + 25, // 3: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry + 26, // 4: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry + 27, // 5: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry + 28, // 6: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry + 13, // 7: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster + 1, // 8: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action + 29, // 9: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting + 30, // 10: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch + 13, // 11: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 4, // 12: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action + 31, // 13: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server + 5, // 14: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology + 0, // 15: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus + 13, // 16: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster + 9, // 17: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval + 13, // 18: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 22, // 19: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table + 10, // 20: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action + 32, // 21: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid + 2, // 22: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName + 3, // 23: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName + 6, // 24: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type + 7, // 25: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database + 8, // 26: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy + 27, // [27:27] is the sub-list for method output_type + 27, // [27:27] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_messages_proto_init() } @@ -3355,7 +3458,7 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_messages_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterSetting_Setting); i { case 0: return &v.state @@ -3367,7 +3470,7 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_messages_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterSetting_Switch); i { case 0: return &v.state @@ -3379,7 +3482,7 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_messages_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterAction_Server); i { case 0: return &v.state @@ -3398,7 +3501,7 @@ func file_messages_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_messages_proto_rawDesc, NumEnums: 11, - NumMessages: 16, + NumMessages: 21, NumExtensions: 0, NumServices: 0, }, diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index 4104a27e8..b4cf0c215 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -9800,6 +9800,37 @@ "items": { "$ref": "#/definitions/ClusterCrash" } + }, + "monitorType": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "config.Config Conf = 43 [json_name=\"config\"];\nconfigurator.Configurator Configurator = 44 [json_name=\"configurator\"];\n[]VariableDiff DiffVariables = 45 [json_name=\"diffVariables\"];\ns18log.HttpLog Log = 46 [json_name=\"log\"];\nmap[string]*JobResult JobResults = 47 [json_name=\"jobResults\"];\ns18log.HttpLog SQLGeneralLog = 48 [json_name=\"sqlGeneralLog\"];\ns18log.HttpLog SQLErrorLog = 49 [json_name=\"sqlErrorLog\"];" + }, + "topologyType": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "fsType": { + "type": "object", + "additionalProperties": { + "type": "boolean" + } + }, + "diskType": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "vmType": { + "type": "object", + "additionalProperties": { + "type": "boolean" + } } } }, diff --git a/repmanv3/service.desc b/repmanv3/service.desc index 1b07969d1eb451f39150ec63a5ec69beb017a159..ee99f2fdb00b98aff16a549bb3caca1a0652a4aa 100644 GIT binary patch delta 599 zcmaEodMcZl>txVG=1)v##5R84!6qRT!^M-EpO;yZUldj}gY{a0^cw4hK&23xd0?u+x_!CW z(~2SbOu+g~K>9TG+=>x8*wVlpplo{$?6?Hby(=WZ#hjg5DZ!|~sKFToVhV|Hv6dy~l%`5B zfyE#kD<%s@DSIwK3@;OJKt0d|OD=9C&lA$i5rky9H5V^RND$J@iL4oDZ#@&7=1)w|1U7!(!L~V(a~ monitor_type = 50 [ json_name = "monitorType" ]; + map topology_type = 51 [ json_name = "topologyType" ]; + map fs_type = 52 [ json_name = "fsType" ]; + map disk_type = 53 [ json_name = "diskType" ]; + map vm_type = 54 [ json_name = "vmType" ]; // []Agent Agents = 55 [json_name="agents"]; // []state.Sla SLAHistory = 56 [json_name="slaHistory"]; // map[string]APIUser APIUsers = 57 [json_name="apiUsers"]; From 89bed2dd021a542ce6886a2b4667a4737a63bc86 Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Tue, 31 May 2022 00:42:20 +0200 Subject: [PATCH 05/13] Initial work for PerformClusterTest --- regtest/regtest.go | 61 +- regtest/regtest_test.go | 79 +++ repmanv3/cluster.pb.go | 235 ++++---- repmanv3/cluster.pb.gw.go | 143 +++++ repmanv3/cluster_grpc.pb.go | 36 ++ repmanv3/messages.pb.go | 552 +++++++++++++++--- repmanv3/repmanv3.swagger.json | 403 +++++++++++++ repmanv3/service.desc | Bin 13770 -> 16231 bytes repmanv3/tools.go | 8 + server/regtest.go | 143 +---- server/repmanv3.go | 43 +- signal18/replication-manager/v3/cluster.proto | 83 ++- .../replication-manager/v3/messages.proto | 54 ++ 13 files changed, 1451 insertions(+), 389 deletions(-) create mode 100644 regtest/regtest_test.go diff --git a/regtest/regtest.go b/regtest/regtest.go index c74b12d33..b7650cab1 100644 --- a/regtest/regtest.go +++ b/regtest/regtest.go @@ -6,56 +6,15 @@ import ( "io/ioutil" "os" "path/filepath" + "sort" "strings" + "unicode" "github.com/signal18/replication-manager/cluster" "github.com/signal18/replication-manager/utils/misc" -) -var tests = []string{ - "testSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync", - "testSwitchoverLongTransactionNoRplCheckNoSemiSync", - "testSwitchoverLongQueryNoRplCheckNoSemiSync", - "testSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync", - "testSwitchoverReadOnlyNoRplCheck", - "testSwitchoverNoReadOnlyNoRplCheck", - "testSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck", - "testSwitchover2TimesReplicationOkSemiSyncNoRplCheck", - "testSwitchoverBackPreferedMasterNoRplCheckSemiSync", - "testSwitchoverAllSlavesStopRplCheckNoSemiSync", - "testSwitchoverAllSlavesStopNoSemiSyncNoRplCheck", - "testSwitchoverAllSlavesDelayRplCheckNoSemiSync", - "testSwitchoverAllSlavesDelayNoRplChecksNoSemiSync", - "testFailoverSemisyncAutoRejoinSafeMSMXMS", - "testFailoverSemisyncAutoRejoinSafeMSXMSM", - "testFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS", - "testFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS", - "testFailoverSemisyncAutoRejoinUnsafeMSMXMS", - "testFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS", - "testFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM", - "testFailoverSemisyncAutoRejoinUnsafeMSXMSM", - "testFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS", - "testFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM", - "testFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS", - "testFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM", - "testFailoverAssyncAutoRejoinRelay", - "testFailoverAssyncAutoRejoinNoGtid", - "testFailoverAllSlavesDelayNoRplChecksNoSemiSync", - "testFailoverAllSlavesDelayRplChecksNoSemiSync", - "testFailoverNoRplChecksNoSemiSync", - "testFailoverNoRplChecksNoSemiSyncMasterHeartbeat", - "testFailoverNumberFailureLimitReach", - "testFailoverTimeNotReach", - "testFailoverManual", - "testFailoverAssyncAutoRejoinFlashback", - "testFailoverSemisyncAutoRejoinFlashback", - "testFailoverAssyncAutoRejoinNowrites", - "testFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM", - "testFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM", - "testFailoverSemisyncSlavekilledAutoRejoin", - "testSlaReplAllSlavesStopNoSemiSync", - "testSlaReplAllSlavesDelayNoSemiSync", -} + v3 "github.com/signal18/replication-manager/repmanv3" +) const recoverTime = 8 const LvlErr = "ERROR" @@ -65,6 +24,18 @@ type RegTest struct { } func (regtest *RegTest) GetTests() []string { + var tests []string + // the testnames are now stored inside the protobuf message + for _, testname := range v3.ClusterTest_Test_name { + if testname != v3.ClusterTest_All.String() && + testname != v3.ClusterTest_Suite.String() && + testname != v3.ClusterTest_Unspecified.String() { + t := []rune(testname) + t[0] = unicode.ToLower(t[0]) + tests = append(tests, string(t)) + } + } + sort.Strings(tests) return tests } diff --git a/regtest/regtest_test.go b/regtest/regtest_test.go new file mode 100644 index 000000000..2351bbb6a --- /dev/null +++ b/regtest/regtest_test.go @@ -0,0 +1,79 @@ +package regtest + +import ( + "sort" + "testing" + + "github.com/google/go-cmp/cmp" +) + +// these came from regtest.go and was originally called var tests +// has been sorted and the first letter uppercased +var testNames = []string{ + "testSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync", + "testSwitchoverLongTransactionNoRplCheckNoSemiSync", + "testSwitchoverLongQueryNoRplCheckNoSemiSync", + "testSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync", + "testSwitchoverReadOnlyNoRplCheck", + "testSwitchoverNoReadOnlyNoRplCheck", + "testSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck", + "testSwitchover2TimesReplicationOkSemiSyncNoRplCheck", + "testSwitchoverBackPreferedMasterNoRplCheckSemiSync", + "testSwitchoverAllSlavesStopRplCheckNoSemiSync", + "testSwitchoverAllSlavesStopNoSemiSyncNoRplCheck", + "testSwitchoverAllSlavesDelayRplCheckNoSemiSync", + "testSwitchoverAllSlavesDelayNoRplChecksNoSemiSync", + "testFailoverSemisyncAutoRejoinSafeMSMXMS", + "testFailoverSemisyncAutoRejoinSafeMSXMSM", + "testFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS", + "testFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS", + "testFailoverSemisyncAutoRejoinUnsafeMSMXMS", + "testFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS", + "testFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM", + "testFailoverSemisyncAutoRejoinUnsafeMSXMSM", + "testFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS", + "testFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM", + "testFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS", + "testFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM", + "testFailoverAssyncAutoRejoinRelay", + "testFailoverAssyncAutoRejoinNoGtid", + "testFailoverAllSlavesDelayNoRplChecksNoSemiSync", + "testFailoverAllSlavesDelayRplChecksNoSemiSync", + "testFailoverNoRplChecksNoSemiSync", + "testFailoverNoRplChecksNoSemiSyncMasterHeartbeat", + "testFailoverNumberFailureLimitReach", + "testFailoverTimeNotReach", + "testFailoverManual", + "testFailoverAssyncAutoRejoinFlashback", + "testFailoverSemisyncAutoRejoinFlashback", + "testFailoverAssyncAutoRejoinNowrites", + "testFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM", + "testFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM", + "testFailoverSemisyncSlavekilledAutoRejoin", + "testSlaReplAllSlavesStopNoSemiSync", + "testSlaReplAllSlavesDelayNoSemiSync", +} + +func TestRegTest_GetTests(t *testing.T) { + sort.Strings(testNames) + tests := []struct { + name string + regtest *RegTest + want []string + }{ + { + name: "All Tests", + regtest: &RegTest{}, + want: testNames, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + regtest := &RegTest{} + got := regtest.GetTests() + if diff := cmp.Diff(got, tt.want); diff != "" { + t.Errorf("RegTest.GetTests() mismatch (-want +got):\n%s", diff) + } + }) + } +} diff --git a/repmanv3/cluster.pb.go b/repmanv3/cluster.pb.go index e3363d2a7..b2052dac8 100644 --- a/repmanv3/cluster.pb.go +++ b/repmanv3/cluster.pb.go @@ -54,7 +54,7 @@ var file_cluster_proto_rawDesc = []byte{ 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2d, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, - 0x61, 0x6c, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0xe3, 0x14, 0x0a, 0x0e, 0x43, 0x6c, + 0x61, 0x6c, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0x84, 0x16, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, @@ -133,113 +133,124 @@ var file_cluster_proto_rawDesc = []byte{ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x46, 0x72, - 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x32, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x1a, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, - 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x7d, - 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, - 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x86, - 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, 0x2e, + 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x12, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, + 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x46, + 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x32, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x1a, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, + 0x12, 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, + 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x86, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, + 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x54, 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, + 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x23, 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, - 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, + 0x65, 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, - 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x28, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, - 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, - 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, 0x02, - 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, + 0x02, 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, + 0x12, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, 0x12, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, + 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, 0x6f, - 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x42, - 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, - 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, + 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, + 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_cluster_proto_goTypes = []interface{}{ (*Cluster)(nil), // 0: signal18.replication_manager.v3.Cluster (*ClusterSetting)(nil), // 1: signal18.replication_manager.v3.ClusterSetting (*ClusterAction)(nil), // 2: signal18.replication_manager.v3.ClusterAction - (*TopologyRetrieval)(nil), // 3: signal18.replication_manager.v3.TopologyRetrieval - (*TableAction)(nil), // 4: signal18.replication_manager.v3.TableAction - (*StatusMessage)(nil), // 5: signal18.replication_manager.v3.StatusMessage - (*emptypb.Empty)(nil), // 6: google.protobuf.Empty - (*structpb.Struct)(nil), // 7: google.protobuf.Struct - (*Certificate)(nil), // 8: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 9: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 10: signal18.replication_manager.v3.Tag - (*Table)(nil), // 11: signal18.replication_manager.v3.Table + (*ClusterTest)(nil), // 3: signal18.replication_manager.v3.ClusterTest + (*TopologyRetrieval)(nil), // 4: signal18.replication_manager.v3.TopologyRetrieval + (*TableAction)(nil), // 5: signal18.replication_manager.v3.TableAction + (*StatusMessage)(nil), // 6: signal18.replication_manager.v3.StatusMessage + (*emptypb.Empty)(nil), // 7: google.protobuf.Empty + (*structpb.Struct)(nil), // 8: google.protobuf.Struct + (*Certificate)(nil), // 9: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 10: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 11: signal18.replication_manager.v3.Tag + (*Table)(nil), // 12: signal18.replication_manager.v3.Table } var file_cluster_proto_depIdxs = []int32{ 0, // 0: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:input_type -> signal18.replication_manager.v3.Cluster @@ -248,30 +259,32 @@ var file_cluster_proto_depIdxs = []int32{ 0, // 3: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:input_type -> signal18.replication_manager.v3.Cluster 1, // 4: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:input_type -> signal18.replication_manager.v3.ClusterSetting 2, // 5: signal18.replication_manager.v3.ClusterService.PerformClusterAction:input_type -> signal18.replication_manager.v3.ClusterAction - 3, // 6: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:input_type -> signal18.replication_manager.v3.TopologyRetrieval - 0, // 7: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster - 0, // 8: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster - 0, // 9: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster - 0, // 10: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster - 0, // 11: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster - 0, // 12: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster - 4, // 13: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction - 5, // 14: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage - 6, // 15: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty - 7, // 16: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct - 7, // 17: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct - 6, // 18: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty - 6, // 19: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty - 7, // 20: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct - 8, // 21: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate - 9, // 22: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup - 10, // 23: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag - 0, // 24: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster - 7, // 25: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct - 11, // 26: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table - 6, // 27: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty - 14, // [14:28] is the sub-list for method output_type - 0, // [0:14] is the sub-list for method input_type + 3, // 6: signal18.replication_manager.v3.ClusterService.PerformClusterTest:input_type -> signal18.replication_manager.v3.ClusterTest + 4, // 7: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:input_type -> signal18.replication_manager.v3.TopologyRetrieval + 0, // 8: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster + 0, // 9: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster + 0, // 10: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster + 0, // 11: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster + 0, // 12: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster + 0, // 13: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster + 5, // 14: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction + 6, // 15: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage + 7, // 16: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty + 8, // 17: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct + 8, // 18: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct + 7, // 19: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty + 7, // 20: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty + 8, // 21: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct + 8, // 22: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct + 9, // 23: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate + 10, // 24: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup + 11, // 25: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag + 0, // 26: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster + 8, // 27: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct + 12, // 28: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table + 7, // 29: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty + 15, // [15:30] is the sub-list for method output_type + 0, // [0:15] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/repmanv3/cluster.pb.gw.go b/repmanv3/cluster.pb.gw.go index c9d20d424..cbffd3724 100644 --- a/repmanv3/cluster.pb.gw.go +++ b/repmanv3/cluster.pb.gw.go @@ -1671,6 +1671,102 @@ func local_request_ClusterService_PerformClusterAction_7(ctx context.Context, ma } +var ( + filter_ClusterService_PerformClusterTest_0 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "test_name": 2}, Base: []int{1, 1, 1, 2, 0, 0}, Check: []int{0, 1, 2, 1, 3, 4}} +) + +func request_ClusterService_PerformClusterTest_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ClusterTest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["test_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "test_name") + } + + e, err = runtime.Enum(val, ClusterTest_Test_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "test_name", err) + } + + protoReq.TestName = ClusterTest_Test(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_PerformClusterTest_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PerformClusterTest(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ClusterService_PerformClusterTest_0(ctx context.Context, marshaler runtime.Marshaler, server ClusterServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ClusterTest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["test_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "test_name") + } + + e, err = runtime.Enum(val, ClusterTest_Test_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "test_name", err) + } + + protoReq.TestName = ClusterTest_Test(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_PerformClusterTest_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PerformClusterTest(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_ClusterService_RetrieveFromTopology_0 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "retrieve": 2}, Base: []int{1, 1, 1, 2, 0, 0}, Check: []int{0, 1, 2, 1, 3, 4}} ) @@ -2829,6 +2925,29 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ClusterService_PerformClusterTest_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterTest", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/tests/actions/run/{test_name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ClusterService_PerformClusterTest_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_PerformClusterTest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ClusterService_RetrieveFromTopology_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -3377,6 +3496,26 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ClusterService_PerformClusterTest_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/PerformClusterTest", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/tests/actions/run/{test_name}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_PerformClusterTest_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_PerformClusterTest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ClusterService_RetrieveFromTopology_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3609,6 +3748,8 @@ var ( pattern_ClusterService_PerformClusterAction_7 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v3", "clusters", "cluster.name", "actions", "switchover"}, "")) + pattern_ClusterService_PerformClusterTest_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"v3", "clusters", "cluster.name", "tests", "actions", "run", "test_name"}, "")) + pattern_ClusterService_RetrieveFromTopology_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v3", "clusters", "cluster.name", "topology", "retrieve"}, "")) pattern_ClusterService_GetClientCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "certificates"}, "")) @@ -3659,6 +3800,8 @@ var ( forward_ClusterService_PerformClusterAction_7 = runtime.ForwardResponseMessage + forward_ClusterService_PerformClusterTest_0 = runtime.ForwardResponseMessage + forward_ClusterService_RetrieveFromTopology_0 = runtime.ForwardResponseStream forward_ClusterService_GetClientCertificates_0 = runtime.ForwardResponseMessage diff --git a/repmanv3/cluster_grpc.pb.go b/repmanv3/cluster_grpc.pb.go index b21234fc2..dee263864 100644 --- a/repmanv3/cluster_grpc.pb.go +++ b/repmanv3/cluster_grpc.pb.go @@ -146,6 +146,7 @@ type ClusterServiceClient interface { GetSettingsForCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*structpb.Struct, error) SetActionForClusterSettings(ctx context.Context, in *ClusterSetting, opts ...grpc.CallOption) (*emptypb.Empty, error) PerformClusterAction(ctx context.Context, in *ClusterAction, opts ...grpc.CallOption) (*emptypb.Empty, error) + PerformClusterTest(ctx context.Context, in *ClusterTest, opts ...grpc.CallOption) (*structpb.Struct, error) RetrieveFromTopology(ctx context.Context, in *TopologyRetrieval, opts ...grpc.CallOption) (ClusterService_RetrieveFromTopologyClient, error) GetClientCertificates(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Certificate, error) GetBackups(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetBackupsClient, error) @@ -200,6 +201,15 @@ func (c *clusterServiceClient) PerformClusterAction(ctx context.Context, in *Clu return out, nil } +func (c *clusterServiceClient) PerformClusterTest(ctx context.Context, in *ClusterTest, opts ...grpc.CallOption) (*structpb.Struct, error) { + out := new(structpb.Struct) + err := c.cc.Invoke(ctx, "/signal18.replication_manager.v3.ClusterService/PerformClusterTest", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clusterServiceClient) RetrieveFromTopology(ctx context.Context, in *TopologyRetrieval, opts ...grpc.CallOption) (ClusterService_RetrieveFromTopologyClient, error) { stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[0], "/signal18.replication_manager.v3.ClusterService/RetrieveFromTopology", opts...) if err != nil { @@ -418,6 +428,7 @@ type ClusterServiceServer interface { GetSettingsForCluster(context.Context, *Cluster) (*structpb.Struct, error) SetActionForClusterSettings(context.Context, *ClusterSetting) (*emptypb.Empty, error) PerformClusterAction(context.Context, *ClusterAction) (*emptypb.Empty, error) + PerformClusterTest(context.Context, *ClusterTest) (*structpb.Struct, error) RetrieveFromTopology(*TopologyRetrieval, ClusterService_RetrieveFromTopologyServer) error GetClientCertificates(context.Context, *Cluster) (*Certificate, error) GetBackups(*Cluster, ClusterService_GetBackupsServer) error @@ -445,6 +456,9 @@ func (UnimplementedClusterServiceServer) SetActionForClusterSettings(context.Con func (UnimplementedClusterServiceServer) PerformClusterAction(context.Context, *ClusterAction) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method PerformClusterAction not implemented") } +func (UnimplementedClusterServiceServer) PerformClusterTest(context.Context, *ClusterTest) (*structpb.Struct, error) { + return nil, status.Errorf(codes.Unimplemented, "method PerformClusterTest not implemented") +} func (UnimplementedClusterServiceServer) RetrieveFromTopology(*TopologyRetrieval, ClusterService_RetrieveFromTopologyServer) error { return status.Errorf(codes.Unimplemented, "method RetrieveFromTopology not implemented") } @@ -554,6 +568,24 @@ func _ClusterService_PerformClusterAction_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _ClusterService_PerformClusterTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClusterTest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterServiceServer).PerformClusterTest(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/signal18.replication_manager.v3.ClusterService/PerformClusterTest", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterServiceServer).PerformClusterTest(ctx, req.(*ClusterTest)) + } + return interceptor(ctx, in, info, handler) +} + func _ClusterService_RetrieveFromTopology_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(TopologyRetrieval) if err := stream.RecvMsg(m); err != nil { @@ -739,6 +771,10 @@ var ClusterService_ServiceDesc = grpc.ServiceDesc{ MethodName: "PerformClusterAction", Handler: _ClusterService_PerformClusterAction_Handler, }, + { + MethodName: "PerformClusterTest", + Handler: _ClusterService_PerformClusterTest_Handler, + }, { MethodName: "GetClientCertificates", Handler: _ClusterService_GetClientCertificates_Handler, diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index e7586d40a..766d14163 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -1043,6 +1043,181 @@ func (TableAction_Action) EnumDescriptor() ([]byte, []int) { return file_messages_proto_rawDescGZIP(), []int{10, 0} } +type ClusterTest_Test int32 + +const ( + ClusterTest_Unspecified ClusterTest_Test = 0 + ClusterTest_All ClusterTest_Test = 1 + ClusterTest_Suite ClusterTest_Test = 2 + ClusterTest_TestFailoverAllSlavesDelayNoRplChecksNoSemiSync ClusterTest_Test = 3 + ClusterTest_TestFailoverAllSlavesDelayRplChecksNoSemiSync ClusterTest_Test = 4 + ClusterTest_TestFailoverAssyncAutoRejoinFlashback ClusterTest_Test = 5 + ClusterTest_TestFailoverAssyncAutoRejoinNoGtid ClusterTest_Test = 6 + ClusterTest_TestFailoverAssyncAutoRejoinNowrites ClusterTest_Test = 7 + ClusterTest_TestFailoverAssyncAutoRejoinRelay ClusterTest_Test = 8 + ClusterTest_TestFailoverManual ClusterTest_Test = 9 + ClusterTest_TestFailoverNoRplChecksNoSemiSync ClusterTest_Test = 10 + ClusterTest_TestFailoverNoRplChecksNoSemiSyncMasterHeartbeat ClusterTest_Test = 11 + ClusterTest_TestFailoverNumberFailureLimitReach ClusterTest_Test = 12 + ClusterTest_TestFailoverSemisyncAutoRejoinFlashback ClusterTest_Test = 13 + ClusterTest_TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM ClusterTest_Test = 14 + ClusterTest_TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM ClusterTest_Test = 15 + ClusterTest_TestFailoverSemisyncAutoRejoinSafeMSMXMS ClusterTest_Test = 16 + ClusterTest_TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS ClusterTest_Test = 17 + ClusterTest_TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS ClusterTest_Test = 18 + ClusterTest_TestFailoverSemisyncAutoRejoinSafeMSXMSM ClusterTest_Test = 19 + ClusterTest_TestFailoverSemisyncAutoRejoinUnsafeMSMXMS ClusterTest_Test = 20 + ClusterTest_TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS ClusterTest_Test = 21 + ClusterTest_TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS ClusterTest_Test = 22 + ClusterTest_TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM ClusterTest_Test = 23 + ClusterTest_TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM ClusterTest_Test = 24 + ClusterTest_TestFailoverSemisyncAutoRejoinUnsafeMSXMSM ClusterTest_Test = 25 + ClusterTest_TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS ClusterTest_Test = 26 + ClusterTest_TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM ClusterTest_Test = 27 + ClusterTest_TestFailoverSemisyncSlavekilledAutoRejoin ClusterTest_Test = 28 + ClusterTest_TestFailoverTimeNotReach ClusterTest_Test = 29 + ClusterTest_TestSlaReplAllSlavesDelayNoSemiSync ClusterTest_Test = 30 + ClusterTest_TestSlaReplAllSlavesStopNoSemiSync ClusterTest_Test = 31 + ClusterTest_TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck ClusterTest_Test = 32 + ClusterTest_TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck ClusterTest_Test = 33 + ClusterTest_TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync ClusterTest_Test = 34 + ClusterTest_TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync ClusterTest_Test = 35 + ClusterTest_TestSwitchoverAllSlavesDelayRplCheckNoSemiSync ClusterTest_Test = 36 + ClusterTest_TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck ClusterTest_Test = 37 + ClusterTest_TestSwitchoverAllSlavesStopRplCheckNoSemiSync ClusterTest_Test = 38 + ClusterTest_TestSwitchoverBackPreferedMasterNoRplCheckSemiSync ClusterTest_Test = 39 + ClusterTest_TestSwitchoverLongQueryNoRplCheckNoSemiSync ClusterTest_Test = 40 + ClusterTest_TestSwitchoverLongTransactionNoRplCheckNoSemiSync ClusterTest_Test = 41 + ClusterTest_TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync ClusterTest_Test = 42 + ClusterTest_TestSwitchoverNoReadOnlyNoRplCheck ClusterTest_Test = 43 + ClusterTest_TestSwitchoverReadOnlyNoRplCheck ClusterTest_Test = 44 +) + +// Enum value maps for ClusterTest_Test. +var ( + ClusterTest_Test_name = map[int32]string{ + 0: "Unspecified", + 1: "All", + 2: "Suite", + 3: "TestFailoverAllSlavesDelayNoRplChecksNoSemiSync", + 4: "TestFailoverAllSlavesDelayRplChecksNoSemiSync", + 5: "TestFailoverAssyncAutoRejoinFlashback", + 6: "TestFailoverAssyncAutoRejoinNoGtid", + 7: "TestFailoverAssyncAutoRejoinNowrites", + 8: "TestFailoverAssyncAutoRejoinRelay", + 9: "TestFailoverManual", + 10: "TestFailoverNoRplChecksNoSemiSync", + 11: "TestFailoverNoRplChecksNoSemiSyncMasterHeartbeat", + 12: "TestFailoverNumberFailureLimitReach", + 13: "TestFailoverSemisyncAutoRejoinFlashback", + 14: "TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM", + 15: "TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM", + 16: "TestFailoverSemisyncAutoRejoinSafeMSMXMS", + 17: "TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS", + 18: "TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS", + 19: "TestFailoverSemisyncAutoRejoinSafeMSXMSM", + 20: "TestFailoverSemisyncAutoRejoinUnsafeMSMXMS", + 21: "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS", + 22: "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS", + 23: "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM", + 24: "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM", + 25: "TestFailoverSemisyncAutoRejoinUnsafeMSXMSM", + 26: "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS", + 27: "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM", + 28: "TestFailoverSemisyncSlavekilledAutoRejoin", + 29: "TestFailoverTimeNotReach", + 30: "TestSlaReplAllSlavesDelayNoSemiSync", + 31: "TestSlaReplAllSlavesStopNoSemiSync", + 32: "TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck", + 33: "TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck", + 34: "TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync", + 35: "TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync", + 36: "TestSwitchoverAllSlavesDelayRplCheckNoSemiSync", + 37: "TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck", + 38: "TestSwitchoverAllSlavesStopRplCheckNoSemiSync", + 39: "TestSwitchoverBackPreferedMasterNoRplCheckSemiSync", + 40: "TestSwitchoverLongQueryNoRplCheckNoSemiSync", + 41: "TestSwitchoverLongTransactionNoRplCheckNoSemiSync", + 42: "TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync", + 43: "TestSwitchoverNoReadOnlyNoRplCheck", + 44: "TestSwitchoverReadOnlyNoRplCheck", + } + ClusterTest_Test_value = map[string]int32{ + "Unspecified": 0, + "All": 1, + "Suite": 2, + "TestFailoverAllSlavesDelayNoRplChecksNoSemiSync": 3, + "TestFailoverAllSlavesDelayRplChecksNoSemiSync": 4, + "TestFailoverAssyncAutoRejoinFlashback": 5, + "TestFailoverAssyncAutoRejoinNoGtid": 6, + "TestFailoverAssyncAutoRejoinNowrites": 7, + "TestFailoverAssyncAutoRejoinRelay": 8, + "TestFailoverManual": 9, + "TestFailoverNoRplChecksNoSemiSync": 10, + "TestFailoverNoRplChecksNoSemiSyncMasterHeartbeat": 11, + "TestFailoverNumberFailureLimitReach": 12, + "TestFailoverSemisyncAutoRejoinFlashback": 13, + "TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM": 14, + "TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM": 15, + "TestFailoverSemisyncAutoRejoinSafeMSMXMS": 16, + "TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS": 17, + "TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS": 18, + "TestFailoverSemisyncAutoRejoinSafeMSXMSM": 19, + "TestFailoverSemisyncAutoRejoinUnsafeMSMXMS": 20, + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS": 21, + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS": 22, + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM": 23, + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM": 24, + "TestFailoverSemisyncAutoRejoinUnsafeMSXMSM": 25, + "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS": 26, + "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM": 27, + "TestFailoverSemisyncSlavekilledAutoRejoin": 28, + "TestFailoverTimeNotReach": 29, + "TestSlaReplAllSlavesDelayNoSemiSync": 30, + "TestSlaReplAllSlavesStopNoSemiSync": 31, + "TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck": 32, + "TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck": 33, + "TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync": 34, + "TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync": 35, + "TestSwitchoverAllSlavesDelayRplCheckNoSemiSync": 36, + "TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck": 37, + "TestSwitchoverAllSlavesStopRplCheckNoSemiSync": 38, + "TestSwitchoverBackPreferedMasterNoRplCheckSemiSync": 39, + "TestSwitchoverLongQueryNoRplCheckNoSemiSync": 40, + "TestSwitchoverLongTransactionNoRplCheckNoSemiSync": 41, + "TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync": 42, + "TestSwitchoverNoReadOnlyNoRplCheck": 43, + "TestSwitchoverReadOnlyNoRplCheck": 44, + } +) + +func (x ClusterTest_Test) Enum() *ClusterTest_Test { + p := new(ClusterTest_Test) + *p = x + return p +} + +func (x ClusterTest_Test) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ClusterTest_Test) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[11].Descriptor() +} + +func (ClusterTest_Test) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[11] +} + +func (x ClusterTest_Test) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ClusterTest_Test.Descriptor instead. +func (ClusterTest_Test) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{12, 0} +} + type ErrorInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2262,6 +2437,77 @@ func (x *Table) GetTableSync() string { return "" } +type ClusterTest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + TestName ClusterTest_Test `protobuf:"varint,2,opt,name=test_name,json=testName,proto3,enum=signal18.replication_manager.v3.ClusterTest_Test" json:"test_name,omitempty"` + Provision bool `protobuf:"varint,3,opt,name=provision,proto3" json:"provision,omitempty"` + Unprovision bool `protobuf:"varint,4,opt,name=unprovision,proto3" json:"unprovision,omitempty"` +} + +func (x *ClusterTest) Reset() { + *x = ClusterTest{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClusterTest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClusterTest) ProtoMessage() {} + +func (x *ClusterTest) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClusterTest.ProtoReflect.Descriptor instead. +func (*ClusterTest) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{12} +} + +func (x *ClusterTest) GetCluster() *Cluster { + if x != nil { + return x.Cluster + } + return nil +} + +func (x *ClusterTest) GetTestName() ClusterTest_Test { + if x != nil { + return x.TestName + } + return ClusterTest_Unspecified +} + +func (x *ClusterTest) GetProvision() bool { + if x != nil { + return x.Provision + } + return false +} + +func (x *ClusterTest) GetUnprovision() bool { + if x != nil { + return x.Unprovision + } + return false +} + type Cluster_Crash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2280,7 +2526,7 @@ type Cluster_Crash struct { func (x *Cluster_Crash) Reset() { *x = Cluster_Crash{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2293,7 +2539,7 @@ func (x *Cluster_Crash) String() string { func (*Cluster_Crash) ProtoMessage() {} func (x *Cluster_Crash) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2377,7 +2623,7 @@ type ClusterSetting_Setting struct { func (x *ClusterSetting_Setting) Reset() { *x = ClusterSetting_Setting{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[18] + mi := &file_messages_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2390,7 +2636,7 @@ func (x *ClusterSetting_Setting) String() string { func (*ClusterSetting_Setting) ProtoMessage() {} func (x *ClusterSetting_Setting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[18] + mi := &file_messages_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2431,7 +2677,7 @@ type ClusterSetting_Switch struct { func (x *ClusterSetting_Switch) Reset() { *x = ClusterSetting_Switch{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[19] + mi := &file_messages_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2444,7 +2690,7 @@ func (x *ClusterSetting_Switch) String() string { func (*ClusterSetting_Switch) ProtoMessage() {} func (x *ClusterSetting_Switch) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[19] + mi := &file_messages_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2482,7 +2728,7 @@ type ClusterAction_Server struct { func (x *ClusterAction_Server) Reset() { *x = ClusterAction_Server{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[20] + mi := &file_messages_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2495,7 +2741,7 @@ func (x *ClusterAction_Server) String() string { func (*ClusterAction_Server) ProtoMessage() {} func (x *ClusterAction_Server) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[20] + mi := &file_messages_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3200,16 +3446,160 @@ var file_messages_proto_rawDesc = []byte{ 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, - 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, - 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, - 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, - 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, - 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, 0xf9, 0x11, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x09, 0x74, 0x65, + 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, + 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, + 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x10, 0x0a, 0x04, 0x54, + 0x65, 0x73, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, + 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, + 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x03, 0x12, 0x31, 0x0a, + 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, + 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x04, + 0x12, 0x29, 0x0a, 0x25, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, + 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x74, 0x69, + 0x64, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x10, 0x07, 0x12, 0x25, 0x0a, + 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, + 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, + 0x61, 0x79, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, + 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, + 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, + 0x63, 0x10, 0x0a, 0x12, 0x34, 0x0a, 0x30, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, + 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, + 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, + 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x0d, 0x12, + 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, + 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, + 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x53, 0x4d, + 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x58, 0x53, 0x4d, + 0x53, 0x53, 0x4d, 0x10, 0x0f, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, + 0x53, 0x10, 0x10, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, + 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x11, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, + 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, + 0x58, 0x58, 0x52, 0x58, 0x53, 0x4d, 0x53, 0x10, 0x12, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, + 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, + 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x13, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, + 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x14, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, + 0x53, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x15, 0x12, 0x33, 0x0a, 0x2f, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, + 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, + 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x16, + 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, + 0x4d, 0x53, 0x4d, 0x10, 0x17, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, + 0x58, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x18, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, + 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, + 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x19, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, + 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, + 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x1a, 0x12, 0x32, 0x0a, + 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, + 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, + 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, + 0x1b, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x6b, 0x69, + 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x10, 0x1c, + 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x1d, 0x12, 0x27, + 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, + 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x53, 0x65, 0x6d, + 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1e, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, + 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1f, 0x12, + 0x39, 0x0a, 0x35, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, + 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, + 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x20, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x65, + 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x53, + 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x10, 0x21, 0x12, 0x40, 0x0a, 0x3c, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, + 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, + 0x79, 0x6e, 0x63, 0x10, 0x22, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x23, 0x12, 0x32, 0x0a, 0x2e, + 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, + 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x24, + 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, + 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, + 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x10, 0x25, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, + 0x53, 0x74, 0x6f, 0x70, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, + 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x26, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, + 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x27, + 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, + 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, + 0x28, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, + 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, + 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x29, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, + 0x78, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4e, 0x6f, + 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, + 0x6e, 0x63, 0x10, 0x2a, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, + 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, + 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, + 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x10, 0x2c, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, + 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3224,8 +3614,8 @@ func file_messages_proto_rawDescGZIP() []byte { return file_messages_proto_rawDescData } -var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 12) +var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 22) var file_messages_proto_goTypes = []interface{}{ (ServiceStatus)(0), // 0: signal18.replication_manager.v3.ServiceStatus (ClusterSetting_Action)(0), // 1: signal18.replication_manager.v3.ClusterSetting.Action @@ -3238,62 +3628,66 @@ var file_messages_proto_goTypes = []interface{}{ (ClusterAction_Server_Proxy)(0), // 8: signal18.replication_manager.v3.ClusterAction.Server.Proxy (TopologyRetrieval_Retrieval)(0), // 9: signal18.replication_manager.v3.TopologyRetrieval.Retrieval (TableAction_Action)(0), // 10: signal18.replication_manager.v3.TableAction.Action - (*ErrorInfo)(nil), // 11: signal18.replication_manager.v3.ErrorInfo - (*ErrorResource)(nil), // 12: signal18.replication_manager.v3.ErrorResource - (*Cluster)(nil), // 13: signal18.replication_manager.v3.Cluster - (*ClusterSetting)(nil), // 14: signal18.replication_manager.v3.ClusterSetting - (*ClusterAction)(nil), // 15: signal18.replication_manager.v3.ClusterAction - (*StatusMessage)(nil), // 16: signal18.replication_manager.v3.StatusMessage - (*TopologyRetrieval)(nil), // 17: signal18.replication_manager.v3.TopologyRetrieval - (*Certificate)(nil), // 18: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 19: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 20: signal18.replication_manager.v3.Tag - (*TableAction)(nil), // 21: signal18.replication_manager.v3.TableAction - (*Table)(nil), // 22: signal18.replication_manager.v3.Table - (*Cluster_Crash)(nil), // 23: signal18.replication_manager.v3.Cluster.Crash - nil, // 24: signal18.replication_manager.v3.Cluster.MonitorTypeEntry - nil, // 25: signal18.replication_manager.v3.Cluster.TopologyTypeEntry - nil, // 26: signal18.replication_manager.v3.Cluster.FsTypeEntry - nil, // 27: signal18.replication_manager.v3.Cluster.DiskTypeEntry - nil, // 28: signal18.replication_manager.v3.Cluster.VmTypeEntry - (*ClusterSetting_Setting)(nil), // 29: signal18.replication_manager.v3.ClusterSetting.Setting - (*ClusterSetting_Switch)(nil), // 30: signal18.replication_manager.v3.ClusterSetting.Switch - (*ClusterAction_Server)(nil), // 31: signal18.replication_manager.v3.ClusterAction.Server - (*gtid.Gtid)(nil), // 32: signal18.replication_manager.v3.Gtid + (ClusterTest_Test)(0), // 11: signal18.replication_manager.v3.ClusterTest.Test + (*ErrorInfo)(nil), // 12: signal18.replication_manager.v3.ErrorInfo + (*ErrorResource)(nil), // 13: signal18.replication_manager.v3.ErrorResource + (*Cluster)(nil), // 14: signal18.replication_manager.v3.Cluster + (*ClusterSetting)(nil), // 15: signal18.replication_manager.v3.ClusterSetting + (*ClusterAction)(nil), // 16: signal18.replication_manager.v3.ClusterAction + (*StatusMessage)(nil), // 17: signal18.replication_manager.v3.StatusMessage + (*TopologyRetrieval)(nil), // 18: signal18.replication_manager.v3.TopologyRetrieval + (*Certificate)(nil), // 19: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 20: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 21: signal18.replication_manager.v3.Tag + (*TableAction)(nil), // 22: signal18.replication_manager.v3.TableAction + (*Table)(nil), // 23: signal18.replication_manager.v3.Table + (*ClusterTest)(nil), // 24: signal18.replication_manager.v3.ClusterTest + (*Cluster_Crash)(nil), // 25: signal18.replication_manager.v3.Cluster.Crash + nil, // 26: signal18.replication_manager.v3.Cluster.MonitorTypeEntry + nil, // 27: signal18.replication_manager.v3.Cluster.TopologyTypeEntry + nil, // 28: signal18.replication_manager.v3.Cluster.FsTypeEntry + nil, // 29: signal18.replication_manager.v3.Cluster.DiskTypeEntry + nil, // 30: signal18.replication_manager.v3.Cluster.VmTypeEntry + (*ClusterSetting_Setting)(nil), // 31: signal18.replication_manager.v3.ClusterSetting.Setting + (*ClusterSetting_Switch)(nil), // 32: signal18.replication_manager.v3.ClusterSetting.Switch + (*ClusterAction_Server)(nil), // 33: signal18.replication_manager.v3.ClusterAction.Server + (*gtid.Gtid)(nil), // 34: signal18.replication_manager.v3.Gtid } var file_messages_proto_depIdxs = []int32{ - 12, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource - 23, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash - 24, // 2: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry - 25, // 3: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry - 26, // 4: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry - 27, // 5: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry - 28, // 6: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry - 13, // 7: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster + 13, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource + 25, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash + 26, // 2: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry + 27, // 3: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry + 28, // 4: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry + 29, // 5: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry + 30, // 6: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry + 14, // 7: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster 1, // 8: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action - 29, // 9: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting - 30, // 10: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch - 13, // 11: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 31, // 9: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting + 32, // 10: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch + 14, // 11: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster 4, // 12: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action - 31, // 13: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server + 33, // 13: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server 5, // 14: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology 0, // 15: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus - 13, // 16: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster + 14, // 16: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster 9, // 17: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval - 13, // 18: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 22, // 19: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table + 14, // 18: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 23, // 19: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table 10, // 20: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action - 32, // 21: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid - 2, // 22: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName - 3, // 23: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - 6, // 24: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type - 7, // 25: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database - 8, // 26: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy - 27, // [27:27] is the sub-list for method output_type - 27, // [27:27] is the sub-list for method input_type - 27, // [27:27] is the sub-list for extension type_name - 27, // [27:27] is the sub-list for extension extendee - 0, // [0:27] is the sub-list for field type_name + 14, // 21: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster + 11, // 22: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test + 34, // 23: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid + 2, // 24: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName + 3, // 25: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName + 6, // 26: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type + 7, // 27: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database + 8, // 28: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy + 29, // [29:29] is the sub-list for method output_type + 29, // [29:29] is the sub-list for method input_type + 29, // [29:29] is the sub-list for extension type_name + 29, // [29:29] is the sub-list for extension extendee + 0, // [0:29] is the sub-list for field type_name } func init() { file_messages_proto_init() } @@ -3447,6 +3841,18 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClusterTest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Cluster_Crash); i { case 0: return &v.state @@ -3458,7 +3864,7 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_messages_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterSetting_Setting); i { case 0: return &v.state @@ -3470,7 +3876,7 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_messages_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterSetting_Switch); i { case 0: return &v.state @@ -3482,7 +3888,7 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_messages_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterAction_Server); i { case 0: return &v.state @@ -3500,8 +3906,8 @@ func file_messages_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_messages_proto_rawDesc, - NumEnums: 11, - NumMessages: 21, + NumEnums: 12, + NumMessages: 22, NumExtensions: 0, NumServices: 0, }, diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index b4cf0c215..5cc28efab 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -6073,6 +6073,358 @@ ] } }, + "/v3/clusters/{cluster.name}/tests/actions/run/{testName}": { + "get": { + "operationId": "ClusterService_PerformClusterTest", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "testName", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "Unspecified", + "All", + "Suite", + "TestFailoverAllSlavesDelayNoRplChecksNoSemiSync", + "TestFailoverAllSlavesDelayRplChecksNoSemiSync", + "TestFailoverAssyncAutoRejoinFlashback", + "TestFailoverAssyncAutoRejoinNoGtid", + "TestFailoverAssyncAutoRejoinNowrites", + "TestFailoverAssyncAutoRejoinRelay", + "TestFailoverManual", + "TestFailoverNoRplChecksNoSemiSync", + "TestFailoverNoRplChecksNoSemiSyncMasterHeartbeat", + "TestFailoverNumberFailureLimitReach", + "TestFailoverSemisyncAutoRejoinFlashback", + "TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM", + "TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM", + "TestFailoverSemisyncAutoRejoinSafeMSMXMS", + "TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS", + "TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS", + "TestFailoverSemisyncAutoRejoinSafeMSXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM", + "TestFailoverSemisyncSlavekilledAutoRejoin", + "TestFailoverTimeNotReach", + "TestSlaReplAllSlavesDelayNoSemiSync", + "TestSlaReplAllSlavesStopNoSemiSync", + "TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck", + "TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck", + "TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync", + "TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync", + "TestSwitchoverAllSlavesDelayRplCheckNoSemiSync", + "TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck", + "TestSwitchoverAllSlavesStopRplCheckNoSemiSync", + "TestSwitchoverBackPreferedMasterNoRplCheckSemiSync", + "TestSwitchoverLongQueryNoRplCheckNoSemiSync", + "TestSwitchoverLongTransactionNoRplCheckNoSemiSync", + "TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync", + "TestSwitchoverNoReadOnlyNoRplCheck", + "TestSwitchoverReadOnlyNoRplCheck" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "provision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "unprovision", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "ClusterService" + ] + } + }, "/v3/clusters/{cluster.name}/topology/{retrieve}": { "get": { "operationId": "ClusterService_RetrieveFromTopology", @@ -9393,6 +9745,57 @@ } } }, + "ClusterTestTest": { + "type": "string", + "enum": [ + "Unspecified", + "All", + "Suite", + "TestFailoverAllSlavesDelayNoRplChecksNoSemiSync", + "TestFailoverAllSlavesDelayRplChecksNoSemiSync", + "TestFailoverAssyncAutoRejoinFlashback", + "TestFailoverAssyncAutoRejoinNoGtid", + "TestFailoverAssyncAutoRejoinNowrites", + "TestFailoverAssyncAutoRejoinRelay", + "TestFailoverManual", + "TestFailoverNoRplChecksNoSemiSync", + "TestFailoverNoRplChecksNoSemiSyncMasterHeartbeat", + "TestFailoverNumberFailureLimitReach", + "TestFailoverSemisyncAutoRejoinFlashback", + "TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM", + "TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM", + "TestFailoverSemisyncAutoRejoinSafeMSMXMS", + "TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS", + "TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS", + "TestFailoverSemisyncAutoRejoinSafeMSXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM", + "TestFailoverSemisyncSlavekilledAutoRejoin", + "TestFailoverTimeNotReach", + "TestSlaReplAllSlavesDelayNoSemiSync", + "TestSlaReplAllSlavesStopNoSemiSync", + "TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck", + "TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck", + "TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync", + "TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync", + "TestSwitchoverAllSlavesDelayRplCheckNoSemiSync", + "TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck", + "TestSwitchoverAllSlavesStopRplCheckNoSemiSync", + "TestSwitchoverBackPreferedMasterNoRplCheckSemiSync", + "TestSwitchoverLongQueryNoRplCheckNoSemiSync", + "TestSwitchoverLongTransactionNoRplCheckNoSemiSync", + "TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync", + "TestSwitchoverNoReadOnlyNoRplCheck", + "TestSwitchoverReadOnlyNoRplCheck" + ], + "default": "Unspecified" + }, "ServerDatabase": { "type": "string", "enum": [ diff --git a/repmanv3/service.desc b/repmanv3/service.desc index ee99f2fdb00b98aff16a549bb3caca1a0652a4aa..fb0a63a7454a19453c80df4f040bb8afe8c48410 100644 GIT binary patch delta 2338 zcma);O-~a+7{{e8N*@%)Q4tXo3rL}8r3l8CgNSbjwrID;-psO{+OgZ+W?xWZbffVD zm^9wJ_z?_=2NRE8yn6F&V*Ci+oY}JMY`Z|4v}tz#zkS|j{yRTve_qGod--$xOB$vA z9fkfC&9Q7^7KvpyS10Zq&qLB?|DWheoeamud(s2B`R1Fxw96G2`A?yb3-atf9))DX zG&ZP34ShJy#C?U}0v?BcM-T2Ny!+y%)CU9!{zyCs{f~63K~!3yq>K*WLl9rqG}MEW z&?`ICCN7HM1;}#sU4?4K1~HjH)|3rm-6oo{nKudzZKX=onw2+XQm68!uA(@ehYPzy zQAh&Mz*GpatWDijmmS+EkY@(f?`n!wU02i^>c!_F)u9!ndE=f<%jh6Z!{pw&=O(Mt zLWl4aoQqJpJJAcgTGWS!0E;?F(H%uY$#y=vFMuz@B@vI5NeW*Z_laWK?mAIy)Q_iO zB7`~hbz<^~I3`)8b!r!gqE^vioPlXk$S16Lk962r1#EARw_i2B^CmqZ~&K>omu(vQmNoEN5jlM2u};)E|YS3-4Z&6FT(8J zHL#5oRB;^Vz}vO{rs*sq(6jFH%1^X!G|sr;;fYYI_Ms?h56CO$WY_7rY%1)-dobL6 z4?O*;u7j{1Z}(uNopE<>9EZF>r||`ti5iY)Q#Gn-q#U>i8fE@DEXs?tPV&a~4jS{f z8iNa@;cD%6#}ksd$DQ#_sHF^qvTZa3FFcE{!Xl3+Kc}`@xTzst- z0D&c-aqM1!g?(8+C4oGLZ^Df*7%oI|G@I5vqX{t4!c%w==8JA9@9-m{xe0%SLAhbf zH~*kwH0dwm4u-`Kw=)Qeru=Q+LA9WWKZ!SfkH`XuYIBJaiC}_%qLVn^B|0X&ERXWB*byqYH4vV9#gw&IQEKB zXLcV6&+e?qot4IPL@BT7nvf;R;7J%4g0L77s=3)maHRPy{XX__WNU5aS5NHS&{ih% zH*o?#AZEod>%t)h&+*fWcdBTfT^LC&zy0~U8M}_JHb2dcj@hgaR<>2Pl{Fnb`;uSs NPCKu*(50`v{{flVIlKS> delta 37 vcmV+=0NVfOe#&bD3dvHj1GXrWwK0?e`xvuJGTH$G;}o+eH0cDhu{pK{I8G1F diff --git a/repmanv3/tools.go b/repmanv3/tools.go index 46451be39..c16d35327 100644 --- a/repmanv3/tools.go +++ b/repmanv3/tools.go @@ -43,6 +43,14 @@ func (ca *ClusterSetting) GetClusterMessage() (*Cluster, error) { return ca.Cluster, nil } +func (ca *ClusterTest) GetClusterMessage() (*Cluster, error) { + if ca.Cluster == nil { + return nil, NewError(codes.InvalidArgument, ErrClusterNotSet).Err() + } + + return ca.Cluster, nil +} + func (c *Cluster) GetClusterMessage() (*Cluster, error) { if c == nil { return nil, NewError(codes.InvalidArgument, ErrClusterNotSet).Err() diff --git a/server/regtest.go b/server/regtest.go index f48205f74..74a1cf1f7 100644 --- a/server/regtest.go +++ b/server/regtest.go @@ -7,8 +7,10 @@ package server import ( + "reflect" "sort" "strings" + "unicode" "github.com/signal18/replication-manager/cluster" "github.com/signal18/replication-manager/regtest" @@ -67,132 +69,27 @@ func (repman *ReplicationManager) RunAllTests(cl *cluster.Cluster, testExp strin } } test.ConfigFile = cl.GetConf().ConfigFile - if test.Name == "testFailoverManual" { - res = regtest.TestFailoverSemisyncAutoRejoinSafeMSMXMS(cl, test.ConfigFile, &test) + + // the testnames are stored in first letter lowercase for legacy reasons + // inside the test configs they are stored as such + // we need to uppercase the first letter so we can call the method + // directly via reflect + t := []rune(test.Name) + t[0] = unicode.ToUpper(t[0]) + if m := reflect.ValueOf(regtest).MethodByName(string(t)); m.IsValid() { + params := []reflect.Value{ + reflect.ValueOf(cl), + reflect.ValueOf(test.ConfigFile), + reflect.ValueOf(&test), + } + + m.Call(params) } - if test.Name == "testFailoverSemisyncAutoRejoinSafeMSMXMS" { + + if test.Name == "testFailoverManual" { res = regtest.TestFailoverSemisyncAutoRejoinSafeMSMXMS(cl, test.ConfigFile, &test) } - if test.Name == "testFailoverSemisyncAutoRejoinSafeMSXMSM" { - res = regtest.TestFailoverSemisyncAutoRejoinSafeMSXMSM(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS" { - res = regtest.TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS" { - res = regtest.TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinUnsafeMSMXMS" { - res = regtest.TestFailoverSemisyncAutoRejoinUnsafeMSMXMS(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS" { - res = regtest.TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM" { - res = regtest.TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinUnsafeMSXMSM" { - res = regtest.TestFailoverSemisyncAutoRejoinUnsafeMSXMSM(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS" { - res = regtest.TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM" { - res = regtest.TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS" { - res = regtest.TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM" { - res = regtest.TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverAssyncAutoRejoinNoGtid" { - res = regtest.TestFailoverAssyncAutoRejoinNoGtid(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverAssyncAutoRejoinRelay" { - res = regtest.TestFailoverAssyncAutoRejoinRelay(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM" { - res = regtest.TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM" { - res = regtest.TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncSlavekilledAutoRejoin" { - res = regtest.TestFailoverSemisyncSlavekilledAutoRejoin(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverSemisyncAutoRejoinFlashback" { - res = regtest.TestFailoverSemisyncAutoRejoinFlashback(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverAssyncAutoRejoinFlashback" { - res = regtest.TestFailoverAssyncAutoRejoinFlashback(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverAssyncAutoRejoinNowrites" { - res = regtest.TestFailoverAssyncAutoRejoinNowrites(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverAssyncAutoRejoinDump" { - res = regtest.TestFailoverAssyncAutoRejoinDump(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync" { - res = regtest.TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverLongTransactionNoRplCheckNoSemiSync" { - res = regtest.TestSwitchoverLongTransactionNoRplCheckNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync" { - res = regtest.TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverLongQueryNoRplCheckNoSemiSync" { - res = regtest.TestSwitchoverLongQueryNoRplCheckNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverNoReadOnlyNoRplCheck" { - res = regtest.TestSwitchoverNoReadOnlyNoRplCheck(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverReadOnlyNoRplCheck" { - res = regtest.TestSwitchoverReadOnlyNoRplCheck(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck" { - res = regtest.TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchover2TimesReplicationOkSemiSyncNoRplCheck" { - res = regtest.TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverBackPreferedMasterNoRplCheckSemiSync" { - res = regtest.TestSwitchoverBackPreferedMasterNoRplCheckSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverAllSlavesStopRplCheckNoSemiSync" { - res = regtest.TestSwitchoverAllSlavesStopRplCheckNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverAllSlavesStopNoSemiSyncNoRplCheck" { - res = regtest.TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverAllSlavesDelayRplCheckNoSemiSync" { - res = regtest.TestSwitchoverAllSlavesDelayRplCheckNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSwitchoverAllSlavesDelayNoRplChecksNoSemiSync" { - res = regtest.TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSlaReplAllSlavesStopNoSemiSync" { - res = regtest.TestSlaReplAllSlavesStopNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testSlaReplAllSlavesDelayNoSemiSync" { - res = regtest.TestSlaReplAllSlavesDelayNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverNoRplChecksNoSemiSync" { - res = regtest.TestFailoverNoRplChecksNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverAllSlavesDelayNoRplChecksNoSemiSync" { - res = regtest.TestFailoverAllSlavesDelayNoRplChecksNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverAllSlavesDelayRplChecksNoSemiSync" { - res = regtest.TestFailoverAllSlavesDelayRplChecksNoSemiSync(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverNumberFailureLimitReach" { - res = regtest.TestFailoverNumberFailureLimitReach(cl, test.ConfigFile, &test) - } - if test.Name == "testFailoverTimeNotReach" { - res = regtest.TestFailoverTimeNotReach(cl, test.ConfigFile, &test) - } + test.Result = regtest.GetTestResultLabel(res) if testExp == "SUITE" { cl.CloseTestCluster(test.ConfigFile, &test) diff --git a/server/repmanv3.go b/server/repmanv3.go index bb8517969..1ff708e1c 100644 --- a/server/repmanv3.go +++ b/server/repmanv3.go @@ -547,6 +547,30 @@ func (s *ReplicationManager) GetShards(in *v3.Cluster, stream v3.ClusterService_ return nil } +func (s *ReplicationManager) PerformClusterTest(ctx context.Context, in *v3.ClusterTest) (*structpb.Struct, error) { + // TODO: implement allowing no cluster to be set and starting a test cluster + + user, mycluster, err := s.getClusterAndUser(ctx, in) + if err != nil { + return nil, err + } + + if err = user.Granted(config.GrantClusterTest); err != nil { + return nil, err + } + + if in.Provision { + mycluster.SetTestStartCluster(true) + } + + if in.Unprovision { + mycluster.SetTestStopCluster(true) + } + + res := s.RunAllTests(mycluster, in.TestName.String(), "") + return marshal(res) +} + func (s *ReplicationManager) PerformClusterAction(ctx context.Context, in *v3.ClusterAction) (res *emptypb.Empty, err error) { // WARNING: this one cannot be validated for ACL, as there is no cluster to validate against // special case, the clustername doesn't exist yet @@ -795,7 +819,7 @@ func (s *ReplicationManager) RetrieveFromTopology(in *v3.TopologyRetrieval, stre return nil } -func marshalAndSend(in interface{}, send func(*structpb.Struct) error) error { +func marshal(in interface{}) (*structpb.Struct, error) { type String struct { String string } @@ -806,7 +830,7 @@ func marshalAndSend(in interface{}, send func(*structpb.Struct) error) error { str.String = s data, err = json.Marshal(str) if err != nil { - return status.Error(codes.Internal, "could not marshal String to json") + return nil, status.Error(codes.Internal, "could not marshal String to json") } } @@ -818,21 +842,30 @@ func marshalAndSend(in interface{}, send func(*structpb.Struct) error) error { strs.Data = sl data, err = json.Marshal(strs) if err != nil { - return status.Error(codes.Internal, "could not marshal Strings to json") + return nil, status.Error(codes.Internal, "could not marshal Strings to json") } } if len(data) == 0 { data, err = json.Marshal(in) if err != nil { - return status.Error(codes.Internal, "could not marshal to json") + return nil, status.Error(codes.Internal, "could not marshal to json") } } out := &structpb.Struct{} err = protojson.Unmarshal(data, out) if err != nil { - return status.Error(codes.Internal, "could not unmarshal json to struct") + return nil, status.Error(codes.Internal, "could not unmarshal json to struct") + } + + return out, nil +} + +func marshalAndSend(in interface{}, send func(*structpb.Struct) error) error { + out, err := marshal(in) + if err != nil { + return err } if err := send(out); err != nil { diff --git a/signal18/replication-manager/v3/cluster.proto b/signal18/replication-manager/v3/cluster.proto index f30834774..0a407be16 100644 --- a/signal18/replication-manager/v3/cluster.proto +++ b/signal18/replication-manager/v3/cluster.proto @@ -13,14 +13,14 @@ service ClusterPublicService { rpc ClusterStatus(Cluster) returns (StatusMessage) { // replaces /api/clusters/{clusterName}/status option (google.api.http) = { - get: "/v3/clusters/{name}/status" + get : "/v3/clusters/{name}/status" }; } rpc MasterPhysicalBackup(Cluster) returns (google.protobuf.Empty) { // replaces /api/clusters/{name}/actions/master-physical-backup option (google.api.http) = { - get: "/v3/clusters/{name}/actions/master-physical-backup" + get : "/v3/clusters/{name}/actions/master-physical-backup" }; } } @@ -29,60 +29,66 @@ service ClusterService { rpc GetCluster(Cluster) returns (google.protobuf.Struct) { // replaces /api/clusters/{clusterName} option (google.api.http) = { - get: "/v3/clusters/{name}" + get : "/v3/clusters/{name}" }; } rpc GetSettingsForCluster(Cluster) returns (google.protobuf.Struct) { // replaces /api/clusters/{clusterName}/settings option (google.api.http) = { - get: "/v3/clusters/{name}/settings" + get : "/v3/clusters/{name}/settings" }; } - rpc SetActionForClusterSettings(ClusterSetting) returns (google.protobuf.Empty) { + rpc SetActionForClusterSettings(ClusterSetting) + returns (google.protobuf.Empty) { option (google.api.http) = { // /api/clusters/{clusterName}/settings/actions/apply-dynamic-config // /api/clusters/{clusterName}/settings/actions/discover // /api/clusters/{clusterName}/settings/actions/reload - get: "/v3/clusters/{cluster.name}/settings/actions/{action}" + get : "/v3/clusters/{cluster.name}/settings/actions/{action}" additional_bindings { // /api/clusters/{clusterName}/settings/actions/add-db-tag/{tagValue} // /api/clusters/{clusterName}/settings/actions/add-proxy-tag/{tagValue} // /api/clusters/{clusterName}/settings/actions/drop-db-tag/{tagValue} // /api/clusters/{clusterName}/settings/actions/drop-proxy-tag/{tagValue} - get: "/v3/clusters/{cluster.name}/settings/actions/{action}/{tag_value}" - } + get : "/v3/clusters/{cluster.name}/settings/actions/{action}/" + "{tag_value}" + } additional_bindings { // /api/clusters/{clusterName}/settings/actions/set/{settingName}/{settingValue} - get: "/v3/clusters/{cluster.name}/settings/actions/set/{setting.name}/{setting.value}" - } + get : "/v3/clusters/{cluster.name}/settings/actions/set/{setting.name}/" + "{setting.value}" + } additional_bindings { // /api/clusters/{clusterName}/settings/actions/switch/{settingName} - get: "/v3/clusters/{cluster.name}/settings/actions/switch/{switch.name}" - } + get : "/v3/clusters/{cluster.name}/settings/actions/switch/" + "{switch.name}" + } }; } rpc PerformClusterAction(ClusterAction) returns (google.protobuf.Empty) { option (google.api.http) = { // /api/clusters/actions/add/{clusterName} - get: "/v3/clusters/actions/{action}/{cluster.name}" + get : "/v3/clusters/actions/{action}/{cluster.name}" additional_bindings { // /api/clusters/{clusterName}/actions/add/{clusterShardingName} - get: "/v3/clusters/{cluster.name}/actions/{action}/{sharding_name}" + get : "/v3/clusters/{cluster.name}/actions/{action}/{sharding_name}" } additional_bindings { // /api/clusters/{clusterName}/actions/addserver/{host}/{port} - get: "/v3/clusters/{cluster.name}/actions/{action}/{server.host}/{server.port}" + get : "/v3/clusters/{cluster.name}/actions/{action}/{server.host}/" + "{server.port}" } additional_bindings { // /api/clusters/{clusterName}/actions/addserver/{host}/{port}/{type} - get: "/v3/clusters/{cluster.name}/actions/{action}/{server.host}/{server.port}/{server.type}" + get : "/v3/clusters/{cluster.name}/actions/{action}/{server.host}/" + "{server.port}/{server.type}" } additional_bindings { // /api/clusters/{clusterName}/actions/replication/bootstrap/{topology} - get: "/v3/clusters/{cluster.name}/actions/{action}/{topology}" + get : "/v3/clusters/{cluster.name}/actions/{action}/{topology}" } additional_bindings { // /api/clusters/{clusterName}/actions/cancel-rolling-reprov @@ -100,24 +106,34 @@ service ClusterService { // /api/clusters/{clusterName}/actions/sysbench // /api/clusters/{clusterName}/actions/waitdatabases // /api/clusters/{clusterName}/actions/replication/cleanup - get: "/v3/clusters/{cluster.name}/actions/{action}" + get : "/v3/clusters/{cluster.name}/actions/{action}" } additional_bindings { // /api/clusters/{clusterName}/services/actions/provision // /api/clusters/{clusterName}/services/actions/unprovision - get: "/v3/clusters/{cluster.name}/services/actions/{action}" + get : "/v3/clusters/{cluster.name}/services/actions/{action}" } additional_bindings { // /api/clusters/{clusterName}/actions/switchover - post: "/v3/clusters/{cluster.name}/actions/switchover" - body: "server" + post : "/v3/clusters/{cluster.name}/actions/switchover" + body : "server" } }; } - rpc RetrieveFromTopology(TopologyRetrieval) returns (stream google.protobuf.Struct) { + rpc PerformClusterTest(ClusterTest) returns (google.protobuf.Struct) { + option (google.api.http) = { + // /api/clusters/{clusterName}/tests/actions/run/all + // /api/clusters/{clusterName}/tests/actions/run/{testName} + // /api/clusters/{clusterName}/tests/actions/run/{testName} + get : "/v3/clusters/{cluster.name}/tests/actions/run/{test_name}" + }; + } + + rpc RetrieveFromTopology(TopologyRetrieval) + returns (stream google.protobuf.Struct) { option (google.api.http) = { // /api/clusters/{clusterName}/topology/alerts // /api/clusters/{clusterName}/topology/crashes @@ -126,49 +142,49 @@ service ClusterService { // /api/clusters/{clusterName}/topology/proxies // /api/clusters/{clusterName}/topology/servers // /api/clusters/{clusterName}/topology/slaves - get: "/v3/clusters/{cluster.name}/topology/{retrieve}" + get : "/v3/clusters/{cluster.name}/topology/{retrieve}" }; } rpc GetClientCertificates(Cluster) returns (Certificate) { option (google.api.http) = { // /api/clusters/{clusterName}/certificates - get: "/v3/clusters/{name}/certificates" + get : "/v3/clusters/{name}/certificates" }; } rpc GetBackups(Cluster) returns (stream Backup) { option (google.api.http) = { // /api/clusters/{clusterName}/backups - get: "/v3/clusters/{name}/backups" + get : "/v3/clusters/{name}/backups" }; } rpc GetTags(Cluster) returns (stream Tag) { option (google.api.http) = { // /api/clusters/{clusterName}/tags - get: "/v3/clusters/{name}/tags" + get : "/v3/clusters/{name}/tags" }; } rpc GetShards(Cluster) returns (stream Cluster) { option (google.api.http) = { // /api/clusters/{clusterName}/shardclusters - get: "/v3/clusters/{name}/shardclusters" + get : "/v3/clusters/{name}/shardclusters" }; } rpc GetQueryRules(Cluster) returns (stream google.protobuf.Struct) { option (google.api.http) = { // /api/clusters/{clusterName}/queryrules - get: "/v3/clusters/{name}/queryrules" + get : "/v3/clusters/{name}/queryrules" }; } rpc GetSchema(Cluster) returns (stream Table) { option (google.api.http) = { // /api/clusters/{clusterName}/schema - get: "/v3/clusters/{name}/schema" + get : "/v3/clusters/{name}/schema" }; } @@ -177,16 +193,19 @@ service ClusterService { // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/checksum-table // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/reshard-table // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/universal-table - get: "/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/{action}" + get : "/v3/clusters/{cluster.name}/schema/{table.table_schema}/" + "{table.table_name}/actions/{action}" additional_bindings { // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/move-table/{clusterShard} - get: "/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/{action}/{cluster_shard}" + get : "/v3/clusters/{cluster.name}/schema/{table.table_schema}/" + "{table.table_name}/actions/{action}/{cluster_shard}" } additional_bindings { // /api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/reshard-table/{clusterList} - get: "/v3/clusters/{cluster.name}/schema/{table.table_schema}/{table.table_name}/actions/RESHARD_TABLE/{cluster_list}" + get : "/v3/clusters/{cluster.name}/schema/{table.table_schema}/" + "{table.table_name}/actions/RESHARD_TABLE/{cluster_list}" } }; } diff --git a/signal18/replication-manager/v3/messages.proto b/signal18/replication-manager/v3/messages.proto index 873bafc6e..7fb27608f 100644 --- a/signal18/replication-manager/v3/messages.proto +++ b/signal18/replication-manager/v3/messages.proto @@ -409,4 +409,58 @@ message Table { uint64 table_crc = 7 [ json_name = "tableCrc" ]; string table_clusters = 8 [ json_name = "tableClusters" ]; string table_sync = 9 [ json_name = "tableSync" ]; +} + +message ClusterTest { + Cluster cluster = 1; + enum Test { + Unspecified = 0; + All = 1; + Suite = 2; + TestFailoverAllSlavesDelayNoRplChecksNoSemiSync = 3; + TestFailoverAllSlavesDelayRplChecksNoSemiSync = 4; + TestFailoverAssyncAutoRejoinFlashback = 5; + TestFailoverAssyncAutoRejoinNoGtid = 6; + TestFailoverAssyncAutoRejoinNowrites = 7; + TestFailoverAssyncAutoRejoinRelay = 8; + TestFailoverManual = 9; + TestFailoverNoRplChecksNoSemiSync = 10; + TestFailoverNoRplChecksNoSemiSyncMasterHeartbeat = 11; + TestFailoverNumberFailureLimitReach = 12; + TestFailoverSemisyncAutoRejoinFlashback = 13; + TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM = 14; + TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM = 15; + TestFailoverSemisyncAutoRejoinSafeMSMXMS = 16; + TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS = 17; + TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS = 18; + TestFailoverSemisyncAutoRejoinSafeMSXMSM = 19; + TestFailoverSemisyncAutoRejoinUnsafeMSMXMS = 20; + TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS = 21; + TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS = 22; + TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM = 23; + TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM = 24; + TestFailoverSemisyncAutoRejoinUnsafeMSXMSM = 25; + TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS = 26; + TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM = 27; + TestFailoverSemisyncSlavekilledAutoRejoin = 28; + TestFailoverTimeNotReach = 29; + TestSlaReplAllSlavesDelayNoSemiSync = 30; + TestSlaReplAllSlavesStopNoSemiSync = 31; + TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck = 32; + TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck = 33; + TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync = 34; + TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync = 35; + TestSwitchoverAllSlavesDelayRplCheckNoSemiSync = 36; + TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck = 37; + TestSwitchoverAllSlavesStopRplCheckNoSemiSync = 38; + TestSwitchoverBackPreferedMasterNoRplCheckSemiSync = 39; + TestSwitchoverLongQueryNoRplCheckNoSemiSync = 40; + TestSwitchoverLongTransactionNoRplCheckNoSemiSync = 41; + TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync = 42; + TestSwitchoverNoReadOnlyNoRplCheck = 43; + TestSwitchoverReadOnlyNoRplCheck = 44; + } + Test test_name = 2; + bool provision = 3; + bool unprovision = 4; } \ No newline at end of file From 1e4e9d66797bd367edbdbb30a3ed7c039c290ab7 Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Wed, 22 Jun 2022 03:35:00 +0200 Subject: [PATCH 06/13] Implement DatabasePublicService --- cluster/cluster.go | 4 + cluster/prx.go | 2 + cluster/prx_has.go | 14 +- cluster/srv_has.go | 20 +- repmanv3/cluster.pb.go | 453 +++-- repmanv3/cluster.pb.gw.go | 551 ++++- repmanv3/cluster_grpc.pb.go | 87 + repmanv3/errors.go | 1 + repmanv3/messages.pb.go | 1801 ++++++++++------- repmanv3/repmanv3.swagger.json | 1464 ++++++++++++-- repmanv3/service.desc | Bin 16231 -> 17418 bytes repmanv3/tools.go | 10 +- server/api_cluster.go | 5 - server/api_database.go | 3 + server/repmanv3.go | 149 +- server/server.go | 83 +- signal18/replication-manager/v3/cluster.proto | 36 +- .../replication-manager/v3/messages.proto | 99 +- 18 files changed, 3562 insertions(+), 1220 deletions(-) diff --git a/cluster/cluster.go b/cluster/cluster.go index 65c794f41..dd2b4c53e 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -229,6 +229,10 @@ func ClusterToProtoCluster(c *Cluster) *v3.Cluster { return out } +type HasCookie interface { + HasCookie(key string) bool +} + type ClusterSorter []*Cluster func (a ClusterSorter) Len() int { return len(a) } diff --git a/cluster/prx.go b/cluster/prx.go index 4de3341c7..79b6dbc65 100644 --- a/cluster/prx.go +++ b/cluster/prx.go @@ -148,6 +148,8 @@ type DatabaseProxy interface { DelRestartCookie() error DelWaitStartCookie() error DelWaitStopCookie() error + + HasCookie(key string) bool } type Backend struct { diff --git a/cluster/prx_has.go b/cluster/prx_has.go index 56eba30e5..d9a484884 100644 --- a/cluster/prx_has.go +++ b/cluster/prx_has.go @@ -15,7 +15,7 @@ import ( "github.com/signal18/replication-manager/config" ) -func (proxy *Proxy) hasCookie(key string) bool { +func (proxy *Proxy) HasCookie(key string) bool { if _, err := os.Stat(proxy.Datadir + "/@" + key); os.IsNotExist(err) { return false } @@ -23,27 +23,27 @@ func (proxy *Proxy) hasCookie(key string) bool { } func (proxy *Proxy) HasProvisionCookie() bool { - return proxy.hasCookie("cookie_prov") + return proxy.HasCookie("cookie_prov") } func (proxy *Proxy) HasUnprovisionCookie() bool { - return proxy.hasCookie("cookie_unprov") + return proxy.HasCookie("cookie_unprov") } func (proxy *Proxy) HasWaitStartCookie() bool { - return proxy.hasCookie("cookie_waitstart") + return proxy.HasCookie("cookie_waitstart") } func (proxy *Proxy) HasWaitStopCookie() bool { - return proxy.hasCookie("cookie_waitstop") + return proxy.HasCookie("cookie_waitstop") } func (proxy *Proxy) HasRestartCookie() bool { - return proxy.hasCookie("cookie_restart") + return proxy.HasCookie("cookie_restart") } func (proxy *Proxy) HasReprovCookie() bool { - return proxy.hasCookie("cookie_reprov") + return proxy.HasCookie("cookie_reprov") } func (proxy *Proxy) IsRunning() bool { diff --git a/cluster/srv_has.go b/cluster/srv_has.go index daa8c33f8..ebb5cfb0a 100644 --- a/cluster/srv_has.go +++ b/cluster/srv_has.go @@ -69,7 +69,7 @@ func (server *ServerMonitor) IsSlaveOfReplicationSource(name string) bool { return false } -func (server *ServerMonitor) hasCookie(key string) bool { +func (server *ServerMonitor) HasCookie(key string) bool { if server == nil { return false } @@ -80,39 +80,39 @@ func (server *ServerMonitor) hasCookie(key string) bool { } func (server *ServerMonitor) HasWaitStartCookie() bool { - return server.hasCookie("cookie_waitstart") + return server.HasCookie("cookie_waitstart") } func (server *ServerMonitor) HasWaitBackupCookie() bool { - return server.hasCookie("cookie_waitbackup") + return server.HasCookie("cookie_waitbackup") } func (server *ServerMonitor) HasWaitStopCookie() bool { - return server.hasCookie("cookie_waitstop") + return server.HasCookie("cookie_waitstop") } func (server *ServerMonitor) HasRestartCookie() bool { - return server.hasCookie("cookie_restart") + return server.HasCookie("cookie_restart") } func (server *ServerMonitor) HasProvisionCookie() bool { - return server.hasCookie("cookie_prov") + return server.HasCookie("cookie_prov") } func (server *ServerMonitor) HasReprovCookie() bool { - return server.hasCookie("cookie_reprov") + return server.HasCookie("cookie_reprov") } func (server *ServerMonitor) HasUnprovisionCookie() bool { - return server.hasCookie("cookie_unprov") + return server.HasCookie("cookie_unprov") } func (server *ServerMonitor) HasBackupLogicalCookie() bool { - return server.hasCookie("cookie_logicalbackup") + return server.HasCookie("cookie_logicalbackup") } func (server *ServerMonitor) HasBackupPhysicalCookie() bool { - return server.hasCookie("cookie_physicalbackup") + return server.HasCookie("cookie_physicalbackup") } func (server *ServerMonitor) HasReadOnly() bool { diff --git a/repmanv3/cluster.pb.go b/repmanv3/cluster.pb.go index b2052dac8..42d9766b0 100644 --- a/repmanv3/cluster.pb.go +++ b/repmanv3/cluster.pb.go @@ -12,6 +12,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" ) @@ -33,7 +34,9 @@ var file_cluster_proto_rawDesc = []byte{ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xbd, 0x02, 0x0a, 0x14, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, @@ -54,237 +57,261 @@ var file_cluster_proto_rawDesc = []byte{ 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2d, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, - 0x61, 0x6c, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0x84, 0x16, 0x0a, 0x0e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0a, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x1b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x61, 0x6c, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0xb4, 0x02, 0x0a, 0x15, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x9a, 0x02, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xbc, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb5, 0x01, 0x12, 0x47, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, + 0x6f, 0x72, 0x74, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x7d, 0x5a, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, + 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x7d, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x7d, + 0x32, 0x84, 0x16, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x46, 0x6f, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x24, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x84, 0x03, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, - 0x1c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x84, 0x03, - 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x9b, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x94, 0x02, - 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x9b, 0x02, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x94, 0x02, 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x43, + 0x12, 0x41, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x33, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x7b, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x7d, 0x5a, 0x51, 0x12, 0x4f, - 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x65, 0x74, - 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x7d, 0x5a, - 0x43, 0x12, 0x41, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2f, 0x7b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xda, 0x04, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xf9, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xf2, 0x03, 0x12, - 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x3e, 0x12, - 0x3c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x4a, 0x12, - 0x48, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x5a, 0x58, 0x12, 0x56, 0x2f, 0x76, 0x33, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x7d, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x7d, 0x5a, 0x51, 0x12, 0x4f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x7d, 0x5a, 0x2e, - 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x65, 0x74, 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x7d, 0x5a, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2f, 0x7b, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xda, 0x04, 0x0a, 0x14, + 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xf9, 0x03, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0xf2, 0x03, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, + 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, + 0x5a, 0x58, 0x12, 0x56, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x7d, 0x5a, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x38, + 0x22, 0x2e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x37, - 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x38, 0x22, 0x2e, 0x2f, 0x76, 0x33, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x12, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, + 0x3a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x12, 0x50, 0x65, 0x72, + 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, + 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, + 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x2f, 0x7b, 0x74, + 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, + 0x67, 0x79, 0x12, 0x32, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, - 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, + 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x46, - 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x32, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x1a, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, - 0x12, 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, - 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, - 0x86, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, - 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x54, 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, - 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x23, 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, + 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, + 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, + 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, + 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, - 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, - 0x02, 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, - 0x12, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, - 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, - 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, - 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, + 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, + 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, + 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, 0x02, 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, 0x12, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, + 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, + 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, + 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var file_cluster_proto_goTypes = []interface{}{ - (*Cluster)(nil), // 0: signal18.replication_manager.v3.Cluster - (*ClusterSetting)(nil), // 1: signal18.replication_manager.v3.ClusterSetting - (*ClusterAction)(nil), // 2: signal18.replication_manager.v3.ClusterAction - (*ClusterTest)(nil), // 3: signal18.replication_manager.v3.ClusterTest - (*TopologyRetrieval)(nil), // 4: signal18.replication_manager.v3.TopologyRetrieval - (*TableAction)(nil), // 5: signal18.replication_manager.v3.TableAction - (*StatusMessage)(nil), // 6: signal18.replication_manager.v3.StatusMessage - (*emptypb.Empty)(nil), // 7: google.protobuf.Empty - (*structpb.Struct)(nil), // 8: google.protobuf.Struct - (*Certificate)(nil), // 9: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 10: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 11: signal18.replication_manager.v3.Tag - (*Table)(nil), // 12: signal18.replication_manager.v3.Table + (*Cluster)(nil), // 0: signal18.replication_manager.v3.Cluster + (*DatabaseStatus)(nil), // 1: signal18.replication_manager.v3.DatabaseStatus + (*ClusterSetting)(nil), // 2: signal18.replication_manager.v3.ClusterSetting + (*ClusterAction)(nil), // 3: signal18.replication_manager.v3.ClusterAction + (*ClusterTest)(nil), // 4: signal18.replication_manager.v3.ClusterTest + (*TopologyRetrieval)(nil), // 5: signal18.replication_manager.v3.TopologyRetrieval + (*TableAction)(nil), // 6: signal18.replication_manager.v3.TableAction + (*StatusMessage)(nil), // 7: signal18.replication_manager.v3.StatusMessage + (*emptypb.Empty)(nil), // 8: google.protobuf.Empty + (*wrapperspb.BoolValue)(nil), // 9: google.protobuf.BoolValue + (*structpb.Struct)(nil), // 10: google.protobuf.Struct + (*Certificate)(nil), // 11: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 12: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 13: signal18.replication_manager.v3.Tag + (*Table)(nil), // 14: signal18.replication_manager.v3.Table } var file_cluster_proto_depIdxs = []int32{ 0, // 0: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:input_type -> signal18.replication_manager.v3.Cluster 0, // 1: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:input_type -> signal18.replication_manager.v3.Cluster - 0, // 2: signal18.replication_manager.v3.ClusterService.GetCluster:input_type -> signal18.replication_manager.v3.Cluster - 0, // 3: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:input_type -> signal18.replication_manager.v3.Cluster - 1, // 4: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:input_type -> signal18.replication_manager.v3.ClusterSetting - 2, // 5: signal18.replication_manager.v3.ClusterService.PerformClusterAction:input_type -> signal18.replication_manager.v3.ClusterAction - 3, // 6: signal18.replication_manager.v3.ClusterService.PerformClusterTest:input_type -> signal18.replication_manager.v3.ClusterTest - 4, // 7: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:input_type -> signal18.replication_manager.v3.TopologyRetrieval - 0, // 8: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster - 0, // 9: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster - 0, // 10: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster - 0, // 11: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster - 0, // 12: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster - 0, // 13: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster - 5, // 14: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction - 6, // 15: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage - 7, // 16: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty - 8, // 17: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct - 8, // 18: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct - 7, // 19: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty - 7, // 20: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty - 8, // 21: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct - 8, // 22: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct - 9, // 23: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate - 10, // 24: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup - 11, // 25: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag - 0, // 26: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster - 8, // 27: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct - 12, // 28: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table - 7, // 29: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty - 15, // [15:30] is the sub-list for method output_type - 0, // [0:15] is the sub-list for method input_type + 1, // 2: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:input_type -> signal18.replication_manager.v3.DatabaseStatus + 0, // 3: signal18.replication_manager.v3.ClusterService.GetCluster:input_type -> signal18.replication_manager.v3.Cluster + 0, // 4: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:input_type -> signal18.replication_manager.v3.Cluster + 2, // 5: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:input_type -> signal18.replication_manager.v3.ClusterSetting + 3, // 6: signal18.replication_manager.v3.ClusterService.PerformClusterAction:input_type -> signal18.replication_manager.v3.ClusterAction + 4, // 7: signal18.replication_manager.v3.ClusterService.PerformClusterTest:input_type -> signal18.replication_manager.v3.ClusterTest + 5, // 8: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:input_type -> signal18.replication_manager.v3.TopologyRetrieval + 0, // 9: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster + 0, // 10: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster + 0, // 11: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster + 0, // 12: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster + 0, // 13: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster + 0, // 14: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster + 6, // 15: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction + 7, // 16: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage + 8, // 17: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty + 9, // 18: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:output_type -> google.protobuf.BoolValue + 10, // 19: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct + 10, // 20: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct + 8, // 21: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty + 8, // 22: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty + 10, // 23: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct + 10, // 24: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct + 11, // 25: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate + 12, // 26: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup + 13, // 27: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag + 0, // 28: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster + 10, // 29: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct + 14, // 30: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table + 8, // 31: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty + 16, // [16:32] is the sub-list for method output_type + 0, // [0:16] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -304,7 +331,7 @@ func file_cluster_proto_init() { NumEnums: 0, NumMessages: 0, NumExtensions: 0, - NumServices: 2, + NumServices: 3, }, GoTypes: file_cluster_proto_goTypes, DependencyIndexes: file_cluster_proto_depIdxs, diff --git a/repmanv3/cluster.pb.gw.go b/repmanv3/cluster.pb.gw.go index cbffd3724..e10de81c9 100644 --- a/repmanv3/cluster.pb.gw.go +++ b/repmanv3/cluster.pb.gw.go @@ -171,6 +171,354 @@ func local_request_ClusterPublicService_MasterPhysicalBackup_0(ctx context.Conte } +var ( + filter_DatabasePublicService_ServerStatus_0 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "server": 2, "host": 3, "port": 4, "status": 5}, Base: []int{1, 1, 1, 1, 2, 3, 4, 0, 0, 0, 0}, Check: []int{0, 1, 2, 1, 4, 4, 1, 3, 5, 6, 7}} +) + +func request_DatabasePublicService_ServerStatus_0(ctx context.Context, marshaler runtime.Marshaler, client DatabasePublicServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DatabaseStatus + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["server.host"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "server.host") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "server.host", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "server.host", err) + } + + val, ok = pathParams["server.port"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "server.port") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "server.port", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "server.port", err) + } + + val, ok = pathParams["status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "status") + } + + e, err = runtime.Enum(val, DatabaseStatus_Status_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "status", err) + } + + protoReq.Status = DatabaseStatus_Status(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_DatabasePublicService_ServerStatus_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ServerStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_DatabasePublicService_ServerStatus_0(ctx context.Context, marshaler runtime.Marshaler, server DatabasePublicServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DatabaseStatus + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["server.host"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "server.host") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "server.host", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "server.host", err) + } + + val, ok = pathParams["server.port"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "server.port") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "server.port", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "server.port", err) + } + + val, ok = pathParams["status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "status") + } + + e, err = runtime.Enum(val, DatabaseStatus_Status_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "status", err) + } + + protoReq.Status = DatabaseStatus_Status(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_DatabasePublicService_ServerStatus_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ServerStatus(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_DatabasePublicService_ServerStatus_1 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "server": 2, "host": 3, "status": 4}, Base: []int{1, 1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 1, 4, 1, 3, 5, 6}} +) + +func request_DatabasePublicService_ServerStatus_1(ctx context.Context, marshaler runtime.Marshaler, client DatabasePublicServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DatabaseStatus + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["server.host"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "server.host") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "server.host", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "server.host", err) + } + + val, ok = pathParams["status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "status") + } + + e, err = runtime.Enum(val, DatabaseStatus_Status_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "status", err) + } + + protoReq.Status = DatabaseStatus_Status(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_DatabasePublicService_ServerStatus_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ServerStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_DatabasePublicService_ServerStatus_1(ctx context.Context, marshaler runtime.Marshaler, server DatabasePublicServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DatabaseStatus + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["server.host"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "server.host") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "server.host", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "server.host", err) + } + + val, ok = pathParams["status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "status") + } + + e, err = runtime.Enum(val, DatabaseStatus_Status_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "status", err) + } + + protoReq.Status = DatabaseStatus_Status(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_DatabasePublicService_ServerStatus_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ServerStatus(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_DatabasePublicService_ServerStatus_2 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0, "name": 1, "status": 2}, Base: []int{1, 1, 1, 2, 0, 0}, Check: []int{0, 1, 2, 1, 3, 4}} +) + +func request_DatabasePublicService_ServerStatus_2(ctx context.Context, marshaler runtime.Marshaler, client DatabasePublicServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DatabaseStatus + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "status") + } + + e, err = runtime.Enum(val, DatabaseStatus_Status_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "status", err) + } + + protoReq.Status = DatabaseStatus_Status(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_DatabasePublicService_ServerStatus_2); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ServerStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_DatabasePublicService_ServerStatus_2(ctx context.Context, marshaler runtime.Marshaler, server DatabasePublicServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DatabaseStatus + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["cluster.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "cluster.name", val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster.name", err) + } + + val, ok = pathParams["status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "status") + } + + e, err = runtime.Enum(val, DatabaseStatus_Status_value) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "status", err) + } + + protoReq.Status = DatabaseStatus_Status(e) + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_DatabasePublicService_ServerStatus_2); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ServerStatus(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_ClusterService_GetCluster_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -1171,12 +1519,12 @@ func request_ClusterService_PerformClusterAction_3(ctx context.Context, marshale return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "server.type", err) } - e, err = runtime.Enum(val, ClusterAction_Server_Type_value) + e, err = runtime.Enum(val, Server_Type_value) if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "server.type", err) } - protoReq.Server.Type = ClusterAction_Server_Type(e) + protoReq.Server.Type = Server_Type(e) if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) @@ -1254,12 +1602,12 @@ func local_request_ClusterService_PerformClusterAction_3(ctx context.Context, ma return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "server.type", err) } - e, err = runtime.Enum(val, ClusterAction_Server_Type_value) + e, err = runtime.Enum(val, Server_Type_value) if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "could not parse path as enum value, parameter: %s, error: %v", "server.type", err) } - protoReq.Server.Type = ClusterAction_Server_Type(e) + protoReq.Server.Type = Server_Type(e) if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) @@ -2597,6 +2945,84 @@ func RegisterClusterPublicServiceHandlerServer(ctx context.Context, mux *runtime return nil } +// RegisterDatabasePublicServiceHandlerServer registers the http handlers for service DatabasePublicService to "mux". +// UnaryRPC :call DatabasePublicServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterDatabasePublicServiceHandlerFromEndpoint instead. +func RegisterDatabasePublicServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server DatabasePublicServiceServer) error { + + mux.Handle("GET", pattern_DatabasePublicService_ServerStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.DatabasePublicService/ServerStatus", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/{server.host}/{server.port}/status/{status}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_DatabasePublicService_ServerStatus_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DatabasePublicService_ServerStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_DatabasePublicService_ServerStatus_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.DatabasePublicService/ServerStatus", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/{server.host}/status/{status}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_DatabasePublicService_ServerStatus_1(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DatabasePublicService_ServerStatus_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_DatabasePublicService_ServerStatus_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/signal18.replication_manager.v3.DatabasePublicService/ServerStatus", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/status/{status}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_DatabasePublicService_ServerStatus_2(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DatabasePublicService_ServerStatus_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + // RegisterClusterServiceHandlerServer registers the http handlers for service ClusterService to "mux". // UnaryRPC :call ClusterServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -3178,6 +3604,123 @@ var ( forward_ClusterPublicService_MasterPhysicalBackup_0 = runtime.ForwardResponseMessage ) +// RegisterDatabasePublicServiceHandlerFromEndpoint is same as RegisterDatabasePublicServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterDatabasePublicServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterDatabasePublicServiceHandler(ctx, mux, conn) +} + +// RegisterDatabasePublicServiceHandler registers the http handlers for service DatabasePublicService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterDatabasePublicServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterDatabasePublicServiceHandlerClient(ctx, mux, NewDatabasePublicServiceClient(conn)) +} + +// RegisterDatabasePublicServiceHandlerClient registers the http handlers for service DatabasePublicService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "DatabasePublicServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "DatabasePublicServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "DatabasePublicServiceClient" to call the correct interceptors. +func RegisterDatabasePublicServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client DatabasePublicServiceClient) error { + + mux.Handle("GET", pattern_DatabasePublicService_ServerStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.DatabasePublicService/ServerStatus", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/{server.host}/{server.port}/status/{status}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_DatabasePublicService_ServerStatus_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DatabasePublicService_ServerStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_DatabasePublicService_ServerStatus_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.DatabasePublicService/ServerStatus", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/{server.host}/status/{status}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_DatabasePublicService_ServerStatus_1(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DatabasePublicService_ServerStatus_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_DatabasePublicService_ServerStatus_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.DatabasePublicService/ServerStatus", runtime.WithHTTPPathPattern("/v3/clusters/{cluster.name}/status/{status}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_DatabasePublicService_ServerStatus_2(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DatabasePublicService_ServerStatus_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_DatabasePublicService_ServerStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 5}, []string{"v3", "clusters", "cluster.name", "server.host", "server.port", "status"}, "")) + + pattern_DatabasePublicService_ServerStatus_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 4}, []string{"v3", "clusters", "cluster.name", "server.host", "status"}, "")) + + pattern_DatabasePublicService_ServerStatus_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 3}, []string{"v3", "clusters", "cluster.name", "status"}, "")) +) + +var ( + forward_DatabasePublicService_ServerStatus_0 = runtime.ForwardResponseMessage + + forward_DatabasePublicService_ServerStatus_1 = runtime.ForwardResponseMessage + + forward_DatabasePublicService_ServerStatus_2 = runtime.ForwardResponseMessage +) + // RegisterClusterServiceHandlerFromEndpoint is same as RegisterClusterServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterClusterServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { diff --git a/repmanv3/cluster_grpc.pb.go b/repmanv3/cluster_grpc.pb.go index dee263864..adea8c344 100644 --- a/repmanv3/cluster_grpc.pb.go +++ b/repmanv3/cluster_grpc.pb.go @@ -9,6 +9,7 @@ import ( status "google.golang.org/grpc/status" emptypb "google.golang.org/protobuf/types/known/emptypb" structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // This is a compile-time assertion to ensure that this generated file @@ -138,6 +139,92 @@ var ClusterPublicService_ServiceDesc = grpc.ServiceDesc{ Metadata: "cluster.proto", } +// DatabasePublicServiceClient is the client API for DatabasePublicService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DatabasePublicServiceClient interface { + ServerStatus(ctx context.Context, in *DatabaseStatus, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) +} + +type databasePublicServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewDatabasePublicServiceClient(cc grpc.ClientConnInterface) DatabasePublicServiceClient { + return &databasePublicServiceClient{cc} +} + +func (c *databasePublicServiceClient) ServerStatus(ctx context.Context, in *DatabaseStatus, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) { + out := new(wrapperspb.BoolValue) + err := c.cc.Invoke(ctx, "/signal18.replication_manager.v3.DatabasePublicService/ServerStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// DatabasePublicServiceServer is the server API for DatabasePublicService service. +// All implementations must embed UnimplementedDatabasePublicServiceServer +// for forward compatibility +type DatabasePublicServiceServer interface { + ServerStatus(context.Context, *DatabaseStatus) (*wrapperspb.BoolValue, error) + mustEmbedUnimplementedDatabasePublicServiceServer() +} + +// UnimplementedDatabasePublicServiceServer must be embedded to have forward compatible implementations. +type UnimplementedDatabasePublicServiceServer struct { +} + +func (UnimplementedDatabasePublicServiceServer) ServerStatus(context.Context, *DatabaseStatus) (*wrapperspb.BoolValue, error) { + return nil, status.Errorf(codes.Unimplemented, "method ServerStatus not implemented") +} +func (UnimplementedDatabasePublicServiceServer) mustEmbedUnimplementedDatabasePublicServiceServer() {} + +// UnsafeDatabasePublicServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DatabasePublicServiceServer will +// result in compilation errors. +type UnsafeDatabasePublicServiceServer interface { + mustEmbedUnimplementedDatabasePublicServiceServer() +} + +func RegisterDatabasePublicServiceServer(s grpc.ServiceRegistrar, srv DatabasePublicServiceServer) { + s.RegisterService(&DatabasePublicService_ServiceDesc, srv) +} + +func _DatabasePublicService_ServerStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DatabaseStatus) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatabasePublicServiceServer).ServerStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/signal18.replication_manager.v3.DatabasePublicService/ServerStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatabasePublicServiceServer).ServerStatus(ctx, req.(*DatabaseStatus)) + } + return interceptor(ctx, in, info, handler) +} + +// DatabasePublicService_ServiceDesc is the grpc.ServiceDesc for DatabasePublicService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DatabasePublicService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "signal18.replication_manager.v3.DatabasePublicService", + HandlerType: (*DatabasePublicServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ServerStatus", + Handler: _DatabasePublicService_ServerStatus_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cluster.proto", +} + // ClusterServiceClient is the client API for ClusterService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. diff --git a/repmanv3/errors.go b/repmanv3/errors.go index 7dbac2a2f..b76bd8101 100644 --- a/repmanv3/errors.go +++ b/repmanv3/errors.go @@ -14,6 +14,7 @@ var ( ErrEnumNotSet = errors.New("mandatory enum not set") ErrFieldNotSet = errors.New("mandatory field not set") ErrServerNotFound = errors.New("server not found") + ErrServerDown = errors.New("server is down") ErrUserNotGranted = errors.New("user not granted permission for this action") ErrGrantNotFound = errors.New("cluster grant not found") ) diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index 766d14163..f87a715bc 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -586,6 +586,174 @@ func (ClusterSetting_Switch_SwitchName) EnumDescriptor() ([]byte, []int) { return file_messages_proto_rawDescGZIP(), []int{3, 1, 0} } +type Server_Type int32 + +const ( + Server_TYPE_UNSPECIFIED Server_Type = 0 + Server_DATABASE Server_Type = 1 + Server_PROXY Server_Type = 2 +) + +// Enum value maps for Server_Type. +var ( + Server_Type_name = map[int32]string{ + 0: "TYPE_UNSPECIFIED", + 1: "DATABASE", + 2: "PROXY", + } + Server_Type_value = map[string]int32{ + "TYPE_UNSPECIFIED": 0, + "DATABASE": 1, + "PROXY": 2, + } +) + +func (x Server_Type) Enum() *Server_Type { + p := new(Server_Type) + *p = x + return p +} + +func (x Server_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Server_Type) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[4].Descriptor() +} + +func (Server_Type) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[4] +} + +func (x Server_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Server_Type.Descriptor instead. +func (Server_Type) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{4, 0} +} + +type Server_Database int32 + +const ( + Server_DATABASE_UNSPECIFIED Server_Database = 0 + Server_MARIADB Server_Database = 1 + Server_PERCONA Server_Database = 2 + Server_MYSQL Server_Database = 3 + Server_POSTGRESQL Server_Database = 4 +) + +// Enum value maps for Server_Database. +var ( + Server_Database_name = map[int32]string{ + 0: "DATABASE_UNSPECIFIED", + 1: "MARIADB", + 2: "PERCONA", + 3: "MYSQL", + 4: "POSTGRESQL", + } + Server_Database_value = map[string]int32{ + "DATABASE_UNSPECIFIED": 0, + "MARIADB": 1, + "PERCONA": 2, + "MYSQL": 3, + "POSTGRESQL": 4, + } +) + +func (x Server_Database) Enum() *Server_Database { + p := new(Server_Database) + *p = x + return p +} + +func (x Server_Database) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Server_Database) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[5].Descriptor() +} + +func (Server_Database) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[5] +} + +func (x Server_Database) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Server_Database.Descriptor instead. +func (Server_Database) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{4, 1} +} + +type Server_Proxy int32 + +const ( + Server_PROXY_UNSPECIFIED Server_Proxy = 0 + Server_MAXSCALE Server_Proxy = 1 + Server_PROXYSQL Server_Proxy = 2 + Server_SHARDPROXY Server_Proxy = 3 + Server_HAPROXY Server_Proxy = 4 + Server_MYPROXY Server_Proxy = 5 + Server_EXTPROXY Server_Proxy = 6 + Server_SPHINX Server_Proxy = 7 +) + +// Enum value maps for Server_Proxy. +var ( + Server_Proxy_name = map[int32]string{ + 0: "PROXY_UNSPECIFIED", + 1: "MAXSCALE", + 2: "PROXYSQL", + 3: "SHARDPROXY", + 4: "HAPROXY", + 5: "MYPROXY", + 6: "EXTPROXY", + 7: "SPHINX", + } + Server_Proxy_value = map[string]int32{ + "PROXY_UNSPECIFIED": 0, + "MAXSCALE": 1, + "PROXYSQL": 2, + "SHARDPROXY": 3, + "HAPROXY": 4, + "MYPROXY": 5, + "EXTPROXY": 6, + "SPHINX": 7, + } +) + +func (x Server_Proxy) Enum() *Server_Proxy { + p := new(Server_Proxy) + *p = x + return p +} + +func (x Server_Proxy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Server_Proxy) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[6].Descriptor() +} + +func (Server_Proxy) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[6] +} + +func (x Server_Proxy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Server_Proxy.Descriptor instead. +func (Server_Proxy) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{4, 2} +} + type ClusterAction_Action int32 const ( @@ -676,11 +844,11 @@ func (x ClusterAction_Action) String() string { } func (ClusterAction_Action) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[4].Descriptor() + return file_messages_proto_enumTypes[7].Descriptor() } func (ClusterAction_Action) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[4] + return &file_messages_proto_enumTypes[7] } func (x ClusterAction_Action) Number() protoreflect.EnumNumber { @@ -689,7 +857,7 @@ func (x ClusterAction_Action) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterAction_Action.Descriptor instead. func (ClusterAction_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0} + return file_messages_proto_rawDescGZIP(), []int{5, 0} } type ClusterAction_ReplicationTopology int32 @@ -740,11 +908,11 @@ func (x ClusterAction_ReplicationTopology) String() string { } func (ClusterAction_ReplicationTopology) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[5].Descriptor() + return file_messages_proto_enumTypes[8].Descriptor() } func (ClusterAction_ReplicationTopology) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[5] + return &file_messages_proto_enumTypes[8] } func (x ClusterAction_ReplicationTopology) Number() protoreflect.EnumNumber { @@ -753,175 +921,159 @@ func (x ClusterAction_ReplicationTopology) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterAction_ReplicationTopology.Descriptor instead. func (ClusterAction_ReplicationTopology) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 1} + return file_messages_proto_rawDescGZIP(), []int{5, 1} } -type ClusterAction_Server_Type int32 +type DatabaseStatus_Status int32 const ( - ClusterAction_Server_TYPE_UNSPECIFIED ClusterAction_Server_Type = 0 - ClusterAction_Server_DATABASE ClusterAction_Server_Type = 1 - ClusterAction_Server_PROXY ClusterAction_Server_Type = 2 + DatabaseStatus_ACTION_UNSPECIFIED DatabaseStatus_Status = 0 + DatabaseStatus_START DatabaseStatus_Status = 1 + DatabaseStatus_STOP DatabaseStatus_Status = 2 + DatabaseStatus_RESTART DatabaseStatus_Status = 3 + DatabaseStatus_PROVISION DatabaseStatus_Status = 4 + DatabaseStatus_UNPROVISION DatabaseStatus_Status = 5 + DatabaseStatus_REPROVISION DatabaseStatus_Status = 6 + DatabaseStatus_IS_MASTER DatabaseStatus_Status = 7 + DatabaseStatus_IS_SLAVE DatabaseStatus_Status = 8 + DatabaseStatus_NEED_ROLLING_REPROV DatabaseStatus_Status = 9 + DatabaseStatus_NEED_ROLLING_RESTART DatabaseStatus_Status = 10 ) -// Enum value maps for ClusterAction_Server_Type. +// Enum value maps for DatabaseStatus_Status. var ( - ClusterAction_Server_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "DATABASE", - 2: "PROXY", - } - ClusterAction_Server_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "DATABASE": 1, - "PROXY": 2, - } -) - -func (x ClusterAction_Server_Type) Enum() *ClusterAction_Server_Type { - p := new(ClusterAction_Server_Type) - *p = x - return p -} - -func (x ClusterAction_Server_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ClusterAction_Server_Type) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[6].Descriptor() -} - -func (ClusterAction_Server_Type) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[6] -} - -func (x ClusterAction_Server_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ClusterAction_Server_Type.Descriptor instead. -func (ClusterAction_Server_Type) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0, 0} -} - -type ClusterAction_Server_Database int32 - -const ( - ClusterAction_Server_DATABASE_UNSPECIFIED ClusterAction_Server_Database = 0 - ClusterAction_Server_MARIADB ClusterAction_Server_Database = 1 - ClusterAction_Server_PERCONA ClusterAction_Server_Database = 2 - ClusterAction_Server_MYSQL ClusterAction_Server_Database = 3 - ClusterAction_Server_POSTGRESQL ClusterAction_Server_Database = 4 -) - -// Enum value maps for ClusterAction_Server_Database. -var ( - ClusterAction_Server_Database_name = map[int32]string{ - 0: "DATABASE_UNSPECIFIED", - 1: "MARIADB", - 2: "PERCONA", - 3: "MYSQL", - 4: "POSTGRESQL", - } - ClusterAction_Server_Database_value = map[string]int32{ - "DATABASE_UNSPECIFIED": 0, - "MARIADB": 1, - "PERCONA": 2, - "MYSQL": 3, - "POSTGRESQL": 4, + DatabaseStatus_Status_name = map[int32]string{ + 0: "ACTION_UNSPECIFIED", + 1: "START", + 2: "STOP", + 3: "RESTART", + 4: "PROVISION", + 5: "UNPROVISION", + 6: "REPROVISION", + 7: "IS_MASTER", + 8: "IS_SLAVE", + 9: "NEED_ROLLING_REPROV", + 10: "NEED_ROLLING_RESTART", + } + DatabaseStatus_Status_value = map[string]int32{ + "ACTION_UNSPECIFIED": 0, + "START": 1, + "STOP": 2, + "RESTART": 3, + "PROVISION": 4, + "UNPROVISION": 5, + "REPROVISION": 6, + "IS_MASTER": 7, + "IS_SLAVE": 8, + "NEED_ROLLING_REPROV": 9, + "NEED_ROLLING_RESTART": 10, } ) -func (x ClusterAction_Server_Database) Enum() *ClusterAction_Server_Database { - p := new(ClusterAction_Server_Database) +func (x DatabaseStatus_Status) Enum() *DatabaseStatus_Status { + p := new(DatabaseStatus_Status) *p = x return p } -func (x ClusterAction_Server_Database) String() string { +func (x DatabaseStatus_Status) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ClusterAction_Server_Database) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[7].Descriptor() +func (DatabaseStatus_Status) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[9].Descriptor() } -func (ClusterAction_Server_Database) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[7] +func (DatabaseStatus_Status) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[9] } -func (x ClusterAction_Server_Database) Number() protoreflect.EnumNumber { +func (x DatabaseStatus_Status) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ClusterAction_Server_Database.Descriptor instead. -func (ClusterAction_Server_Database) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0, 1} +// Deprecated: Use DatabaseStatus_Status.Descriptor instead. +func (DatabaseStatus_Status) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{6, 0} } -type ClusterAction_Server_Proxy int32 +type DatabaseAction_Action int32 const ( - ClusterAction_Server_PROXY_UNSPECIFIED ClusterAction_Server_Proxy = 0 - ClusterAction_Server_MAXSCALE ClusterAction_Server_Proxy = 1 - ClusterAction_Server_PROXYSQL ClusterAction_Server_Proxy = 2 - ClusterAction_Server_SHARDPROXY ClusterAction_Server_Proxy = 3 - ClusterAction_Server_HAPROXY ClusterAction_Server_Proxy = 4 - ClusterAction_Server_MYPROXY ClusterAction_Server_Proxy = 5 - ClusterAction_Server_EXTPROXY ClusterAction_Server_Proxy = 6 - ClusterAction_Server_SPHINX ClusterAction_Server_Proxy = 7 + DatabaseAction_ACTION_UNSPECIFIED DatabaseAction_Action = 0 + DatabaseAction_START DatabaseAction_Action = 1 + DatabaseAction_STOP DatabaseAction_Action = 2 + DatabaseAction_RESTART DatabaseAction_Action = 3 + DatabaseAction_PROVISION DatabaseAction_Action = 4 + DatabaseAction_UNPROVISION DatabaseAction_Action = 5 + DatabaseAction_REPROVISION DatabaseAction_Action = 6 + DatabaseAction_MAINTENANCE DatabaseAction_Action = 7 + DatabaseAction_BACKUP_PHYSICAL DatabaseAction_Action = 8 + DatabaseAction_BACKUP_LOGICAL DatabaseAction_Action = 9 + DatabaseAction_BACKUP_ERROR_LOG DatabaseAction_Action = 10 + DatabaseAction_BACKUP_SLOWQUERY_LOG DatabaseAction_Action = 11 + DatabaseAction_OPTIMIZE DatabaseAction_Action = 12 ) -// Enum value maps for ClusterAction_Server_Proxy. +// Enum value maps for DatabaseAction_Action. var ( - ClusterAction_Server_Proxy_name = map[int32]string{ - 0: "PROXY_UNSPECIFIED", - 1: "MAXSCALE", - 2: "PROXYSQL", - 3: "SHARDPROXY", - 4: "HAPROXY", - 5: "MYPROXY", - 6: "EXTPROXY", - 7: "SPHINX", - } - ClusterAction_Server_Proxy_value = map[string]int32{ - "PROXY_UNSPECIFIED": 0, - "MAXSCALE": 1, - "PROXYSQL": 2, - "SHARDPROXY": 3, - "HAPROXY": 4, - "MYPROXY": 5, - "EXTPROXY": 6, - "SPHINX": 7, + DatabaseAction_Action_name = map[int32]string{ + 0: "ACTION_UNSPECIFIED", + 1: "START", + 2: "STOP", + 3: "RESTART", + 4: "PROVISION", + 5: "UNPROVISION", + 6: "REPROVISION", + 7: "MAINTENANCE", + 8: "BACKUP_PHYSICAL", + 9: "BACKUP_LOGICAL", + 10: "BACKUP_ERROR_LOG", + 11: "BACKUP_SLOWQUERY_LOG", + 12: "OPTIMIZE", + } + DatabaseAction_Action_value = map[string]int32{ + "ACTION_UNSPECIFIED": 0, + "START": 1, + "STOP": 2, + "RESTART": 3, + "PROVISION": 4, + "UNPROVISION": 5, + "REPROVISION": 6, + "MAINTENANCE": 7, + "BACKUP_PHYSICAL": 8, + "BACKUP_LOGICAL": 9, + "BACKUP_ERROR_LOG": 10, + "BACKUP_SLOWQUERY_LOG": 11, + "OPTIMIZE": 12, } ) -func (x ClusterAction_Server_Proxy) Enum() *ClusterAction_Server_Proxy { - p := new(ClusterAction_Server_Proxy) +func (x DatabaseAction_Action) Enum() *DatabaseAction_Action { + p := new(DatabaseAction_Action) *p = x return p } -func (x ClusterAction_Server_Proxy) String() string { +func (x DatabaseAction_Action) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ClusterAction_Server_Proxy) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[8].Descriptor() +func (DatabaseAction_Action) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[10].Descriptor() } -func (ClusterAction_Server_Proxy) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[8] +func (DatabaseAction_Action) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[10] } -func (x ClusterAction_Server_Proxy) Number() protoreflect.EnumNumber { +func (x DatabaseAction_Action) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ClusterAction_Server_Proxy.Descriptor instead. -func (ClusterAction_Server_Proxy) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0, 2} +// Deprecated: Use DatabaseAction_Action.Descriptor instead. +func (DatabaseAction_Action) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{7, 0} } type TopologyRetrieval_Retrieval int32 @@ -972,11 +1124,11 @@ func (x TopologyRetrieval_Retrieval) String() string { } func (TopologyRetrieval_Retrieval) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[9].Descriptor() + return file_messages_proto_enumTypes[11].Descriptor() } func (TopologyRetrieval_Retrieval) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[9] + return &file_messages_proto_enumTypes[11] } func (x TopologyRetrieval_Retrieval) Number() protoreflect.EnumNumber { @@ -985,7 +1137,7 @@ func (x TopologyRetrieval_Retrieval) Number() protoreflect.EnumNumber { // Deprecated: Use TopologyRetrieval_Retrieval.Descriptor instead. func (TopologyRetrieval_Retrieval) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{6, 0} + return file_messages_proto_rawDescGZIP(), []int{9, 0} } type TableAction_Action int32 @@ -1027,11 +1179,11 @@ func (x TableAction_Action) String() string { } func (TableAction_Action) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[10].Descriptor() + return file_messages_proto_enumTypes[12].Descriptor() } func (TableAction_Action) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[10] + return &file_messages_proto_enumTypes[12] } func (x TableAction_Action) Number() protoreflect.EnumNumber { @@ -1040,7 +1192,7 @@ func (x TableAction_Action) Number() protoreflect.EnumNumber { // Deprecated: Use TableAction_Action.Descriptor instead. func (TableAction_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{10, 0} + return file_messages_proto_rawDescGZIP(), []int{13, 0} } type ClusterTest_Test int32 @@ -1202,11 +1354,11 @@ func (x ClusterTest_Test) String() string { } func (ClusterTest_Test) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[11].Descriptor() + return file_messages_proto_enumTypes[13].Descriptor() } func (ClusterTest_Test) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[11] + return &file_messages_proto_enumTypes[13] } func (x ClusterTest_Test) Number() protoreflect.EnumNumber { @@ -1215,7 +1367,7 @@ func (x ClusterTest_Test) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterTest_Test.Descriptor instead. func (ClusterTest_Test) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{12, 0} + return file_messages_proto_rawDescGZIP(), []int{15, 0} } type ErrorInfo struct { @@ -1771,14 +1923,249 @@ func (x *ClusterSetting) Reset() { } } -func (x *ClusterSetting) String() string { +func (x *ClusterSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClusterSetting) ProtoMessage() {} + +func (x *ClusterSetting) ProtoReflect() protoreflect.Message { + mi := &file_messages_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 ClusterSetting.ProtoReflect.Descriptor instead. +func (*ClusterSetting) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{3} +} + +func (x *ClusterSetting) GetCluster() *Cluster { + if x != nil { + return x.Cluster + } + return nil +} + +func (x *ClusterSetting) GetAction() ClusterSetting_Action { + if x != nil { + return x.Action + } + return ClusterSetting_UNSPECIFIED +} + +func (x *ClusterSetting) GetTagValue() string { + if x != nil { + return x.TagValue + } + return "" +} + +func (x *ClusterSetting) GetSetting() *ClusterSetting_Setting { + if x != nil { + return x.Setting + } + return nil +} + +func (x *ClusterSetting) GetSwitch() *ClusterSetting_Switch { + if x != nil { + return x.Switch + } + return nil +} + +type Server struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + Port uint64 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` + Type Server_Type `protobuf:"varint,3,opt,name=type,proto3,enum=signal18.replication_manager.v3.Server_Type" json:"type,omitempty"` + Database Server_Database `protobuf:"varint,4,opt,name=database,proto3,enum=signal18.replication_manager.v3.Server_Database" json:"database,omitempty"` + Proxy Server_Proxy `protobuf:"varint,5,opt,name=proxy,proto3,enum=signal18.replication_manager.v3.Server_Proxy" json:"proxy,omitempty"` +} + +func (x *Server) Reset() { + *x = Server{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Server) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Server) ProtoMessage() {} + +func (x *Server) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Server.ProtoReflect.Descriptor instead. +func (*Server) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{4} +} + +func (x *Server) GetHost() string { + if x != nil { + return x.Host + } + return "" +} + +func (x *Server) GetPort() uint64 { + if x != nil { + return x.Port + } + return 0 +} + +func (x *Server) GetType() Server_Type { + if x != nil { + return x.Type + } + return Server_TYPE_UNSPECIFIED +} + +func (x *Server) GetDatabase() Server_Database { + if x != nil { + return x.Database + } + return Server_DATABASE_UNSPECIFIED +} + +func (x *Server) GetProxy() Server_Proxy { + if x != nil { + return x.Proxy + } + return Server_PROXY_UNSPECIFIED +} + +type ClusterAction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Action ClusterAction_Action `protobuf:"varint,3,opt,name=action,proto3,enum=signal18.replication_manager.v3.ClusterAction_Action" json:"action,omitempty"` + Server *Server `protobuf:"bytes,4,opt,name=server,proto3" json:"server,omitempty"` + Topology ClusterAction_ReplicationTopology `protobuf:"varint,5,opt,name=topology,proto3,enum=signal18.replication_manager.v3.ClusterAction_ReplicationTopology" json:"topology,omitempty"` + ShardingName string `protobuf:"bytes,6,opt,name=sharding_name,json=shardingName,proto3" json:"sharding_name,omitempty"` +} + +func (x *ClusterAction) Reset() { + *x = ClusterAction{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClusterAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClusterAction) ProtoMessage() {} + +func (x *ClusterAction) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClusterAction.ProtoReflect.Descriptor instead. +func (*ClusterAction) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{5} +} + +func (x *ClusterAction) GetCluster() *Cluster { + if x != nil { + return x.Cluster + } + return nil +} + +func (x *ClusterAction) GetAction() ClusterAction_Action { + if x != nil { + return x.Action + } + return ClusterAction_ACTION_UNSPECIFIED +} + +func (x *ClusterAction) GetServer() *Server { + if x != nil { + return x.Server + } + return nil +} + +func (x *ClusterAction) GetTopology() ClusterAction_ReplicationTopology { + if x != nil { + return x.Topology + } + return ClusterAction_RT_UNSPECIFIED +} + +func (x *ClusterAction) GetShardingName() string { + if x != nil { + return x.ShardingName + } + return "" +} + +type DatabaseStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Server *Server `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"` + Status DatabaseStatus_Status `protobuf:"varint,3,opt,name=status,proto3,enum=signal18.replication_manager.v3.DatabaseStatus_Status" json:"status,omitempty"` +} + +func (x *DatabaseStatus) Reset() { + *x = DatabaseStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DatabaseStatus) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClusterSetting) ProtoMessage() {} +func (*DatabaseStatus) ProtoMessage() {} -func (x *ClusterSetting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[3] +func (x *DatabaseStatus) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1789,75 +2176,59 @@ func (x *ClusterSetting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ClusterSetting.ProtoReflect.Descriptor instead. -func (*ClusterSetting) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3} +// Deprecated: Use DatabaseStatus.ProtoReflect.Descriptor instead. +func (*DatabaseStatus) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{6} } -func (x *ClusterSetting) GetCluster() *Cluster { +func (x *DatabaseStatus) GetCluster() *Cluster { if x != nil { return x.Cluster } return nil } -func (x *ClusterSetting) GetAction() ClusterSetting_Action { - if x != nil { - return x.Action - } - return ClusterSetting_UNSPECIFIED -} - -func (x *ClusterSetting) GetTagValue() string { - if x != nil { - return x.TagValue - } - return "" -} - -func (x *ClusterSetting) GetSetting() *ClusterSetting_Setting { +func (x *DatabaseStatus) GetServer() *Server { if x != nil { - return x.Setting + return x.Server } return nil } -func (x *ClusterSetting) GetSwitch() *ClusterSetting_Switch { +func (x *DatabaseStatus) GetStatus() DatabaseStatus_Status { if x != nil { - return x.Switch + return x.Status } - return nil + return DatabaseStatus_ACTION_UNSPECIFIED } -type ClusterAction struct { +type DatabaseAction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Action ClusterAction_Action `protobuf:"varint,3,opt,name=action,proto3,enum=signal18.replication_manager.v3.ClusterAction_Action" json:"action,omitempty"` - Server *ClusterAction_Server `protobuf:"bytes,4,opt,name=server,proto3" json:"server,omitempty"` - Topology ClusterAction_ReplicationTopology `protobuf:"varint,5,opt,name=topology,proto3,enum=signal18.replication_manager.v3.ClusterAction_ReplicationTopology" json:"topology,omitempty"` - ShardingName string `protobuf:"bytes,6,opt,name=sharding_name,json=shardingName,proto3" json:"sharding_name,omitempty"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Server *Server `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"` + Action DatabaseAction_Action `protobuf:"varint,3,opt,name=action,proto3,enum=signal18.replication_manager.v3.DatabaseAction_Action" json:"action,omitempty"` } -func (x *ClusterAction) Reset() { - *x = ClusterAction{} +func (x *DatabaseAction) Reset() { + *x = DatabaseAction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[4] + mi := &file_messages_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ClusterAction) String() string { +func (x *DatabaseAction) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ClusterAction) ProtoMessage() {} +func (*DatabaseAction) ProtoMessage() {} -func (x *ClusterAction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[4] +func (x *DatabaseAction) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1868,44 +2239,30 @@ func (x *ClusterAction) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ClusterAction.ProtoReflect.Descriptor instead. -func (*ClusterAction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4} +// Deprecated: Use DatabaseAction.ProtoReflect.Descriptor instead. +func (*DatabaseAction) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{7} } -func (x *ClusterAction) GetCluster() *Cluster { +func (x *DatabaseAction) GetCluster() *Cluster { if x != nil { return x.Cluster } return nil } -func (x *ClusterAction) GetAction() ClusterAction_Action { - if x != nil { - return x.Action - } - return ClusterAction_ACTION_UNSPECIFIED -} - -func (x *ClusterAction) GetServer() *ClusterAction_Server { +func (x *DatabaseAction) GetServer() *Server { if x != nil { return x.Server } return nil } -func (x *ClusterAction) GetTopology() ClusterAction_ReplicationTopology { - if x != nil { - return x.Topology - } - return ClusterAction_RT_UNSPECIFIED -} - -func (x *ClusterAction) GetShardingName() string { +func (x *DatabaseAction) GetAction() DatabaseAction_Action { if x != nil { - return x.ShardingName + return x.Action } - return "" + return DatabaseAction_ACTION_UNSPECIFIED } type StatusMessage struct { @@ -1919,7 +2276,7 @@ type StatusMessage struct { func (x *StatusMessage) Reset() { *x = StatusMessage{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[5] + mi := &file_messages_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1932,7 +2289,7 @@ func (x *StatusMessage) String() string { func (*StatusMessage) ProtoMessage() {} func (x *StatusMessage) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[5] + mi := &file_messages_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1945,7 +2302,7 @@ func (x *StatusMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusMessage.ProtoReflect.Descriptor instead. func (*StatusMessage) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5} + return file_messages_proto_rawDescGZIP(), []int{8} } func (x *StatusMessage) GetAlive() ServiceStatus { @@ -1967,7 +2324,7 @@ type TopologyRetrieval struct { func (x *TopologyRetrieval) Reset() { *x = TopologyRetrieval{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[6] + mi := &file_messages_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1980,7 +2337,7 @@ func (x *TopologyRetrieval) String() string { func (*TopologyRetrieval) ProtoMessage() {} func (x *TopologyRetrieval) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[6] + mi := &file_messages_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1993,7 +2350,7 @@ func (x *TopologyRetrieval) ProtoReflect() protoreflect.Message { // Deprecated: Use TopologyRetrieval.ProtoReflect.Descriptor instead. func (*TopologyRetrieval) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{6} + return file_messages_proto_rawDescGZIP(), []int{9} } func (x *TopologyRetrieval) GetCluster() *Cluster { @@ -2023,7 +2380,7 @@ type Certificate struct { func (x *Certificate) Reset() { *x = Certificate{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[7] + mi := &file_messages_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2036,7 +2393,7 @@ func (x *Certificate) String() string { func (*Certificate) ProtoMessage() {} func (x *Certificate) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[7] + mi := &file_messages_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2049,7 +2406,7 @@ func (x *Certificate) ProtoReflect() protoreflect.Message { // Deprecated: Use Certificate.ProtoReflect.Descriptor instead. func (*Certificate) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{7} + return file_messages_proto_rawDescGZIP(), []int{10} } func (x *Certificate) GetClientCertificate() string { @@ -2092,7 +2449,7 @@ type Backup struct { func (x *Backup) Reset() { *x = Backup{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[8] + mi := &file_messages_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2105,7 +2462,7 @@ func (x *Backup) String() string { func (*Backup) ProtoMessage() {} func (x *Backup) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[8] + mi := &file_messages_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2118,7 +2475,7 @@ func (x *Backup) ProtoReflect() protoreflect.Message { // Deprecated: Use Backup.ProtoReflect.Descriptor instead. func (*Backup) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{8} + return file_messages_proto_rawDescGZIP(), []int{11} } func (x *Backup) GetId() string { @@ -2197,7 +2554,7 @@ type Tag struct { func (x *Tag) Reset() { *x = Tag{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[9] + mi := &file_messages_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2210,7 +2567,7 @@ func (x *Tag) String() string { func (*Tag) ProtoMessage() {} func (x *Tag) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[9] + mi := &file_messages_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2223,7 +2580,7 @@ func (x *Tag) ProtoReflect() protoreflect.Message { // Deprecated: Use Tag.ProtoReflect.Descriptor instead. func (*Tag) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{9} + return file_messages_proto_rawDescGZIP(), []int{12} } func (x *Tag) GetId() uint64 { @@ -2262,7 +2619,7 @@ type TableAction struct { func (x *TableAction) Reset() { *x = TableAction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[10] + mi := &file_messages_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2275,7 +2632,7 @@ func (x *TableAction) String() string { func (*TableAction) ProtoMessage() {} func (x *TableAction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[10] + mi := &file_messages_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2288,7 +2645,7 @@ func (x *TableAction) ProtoReflect() protoreflect.Message { // Deprecated: Use TableAction.ProtoReflect.Descriptor instead. func (*TableAction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{10} + return file_messages_proto_rawDescGZIP(), []int{13} } func (x *TableAction) GetCluster() *Cluster { @@ -2345,7 +2702,7 @@ type Table struct { func (x *Table) Reset() { *x = Table{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[11] + mi := &file_messages_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2358,7 +2715,7 @@ func (x *Table) String() string { func (*Table) ProtoMessage() {} func (x *Table) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[11] + mi := &file_messages_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2371,7 +2728,7 @@ func (x *Table) ProtoReflect() protoreflect.Message { // Deprecated: Use Table.ProtoReflect.Descriptor instead. func (*Table) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{11} + return file_messages_proto_rawDescGZIP(), []int{14} } func (x *Table) GetTableSchema() string { @@ -2451,7 +2808,7 @@ type ClusterTest struct { func (x *ClusterTest) Reset() { *x = ClusterTest{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2464,7 +2821,7 @@ func (x *ClusterTest) String() string { func (*ClusterTest) ProtoMessage() {} func (x *ClusterTest) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2477,7 +2834,7 @@ func (x *ClusterTest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterTest.ProtoReflect.Descriptor instead. func (*ClusterTest) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{12} + return file_messages_proto_rawDescGZIP(), []int{15} } func (x *ClusterTest) GetCluster() *Cluster { @@ -2526,7 +2883,7 @@ type Cluster_Crash struct { func (x *Cluster_Crash) Reset() { *x = Cluster_Crash{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2539,7 +2896,7 @@ func (x *Cluster_Crash) String() string { func (*Cluster_Crash) ProtoMessage() {} func (x *Cluster_Crash) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2623,7 +2980,7 @@ type ClusterSetting_Setting struct { func (x *ClusterSetting_Setting) Reset() { *x = ClusterSetting_Setting{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[19] + mi := &file_messages_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2636,7 +2993,7 @@ func (x *ClusterSetting_Setting) String() string { func (*ClusterSetting_Setting) ProtoMessage() {} func (x *ClusterSetting_Setting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[19] + mi := &file_messages_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2677,7 +3034,7 @@ type ClusterSetting_Switch struct { func (x *ClusterSetting_Switch) Reset() { *x = ClusterSetting_Switch{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[20] + mi := &file_messages_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2690,7 +3047,7 @@ func (x *ClusterSetting_Switch) String() string { func (*ClusterSetting_Switch) ProtoMessage() {} func (x *ClusterSetting_Switch) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[20] + mi := &file_messages_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2713,85 +3070,6 @@ func (x *ClusterSetting_Switch) GetName() ClusterSetting_Switch_SwitchName { return ClusterSetting_Switch_UNSPECIFIED } -type ClusterAction_Server struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` - Port uint64 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` - Type ClusterAction_Server_Type `protobuf:"varint,3,opt,name=type,proto3,enum=signal18.replication_manager.v3.ClusterAction_Server_Type" json:"type,omitempty"` - Database ClusterAction_Server_Database `protobuf:"varint,4,opt,name=database,proto3,enum=signal18.replication_manager.v3.ClusterAction_Server_Database" json:"database,omitempty"` - Proxy ClusterAction_Server_Proxy `protobuf:"varint,5,opt,name=proxy,proto3,enum=signal18.replication_manager.v3.ClusterAction_Server_Proxy" json:"proxy,omitempty"` -} - -func (x *ClusterAction_Server) Reset() { - *x = ClusterAction_Server{} - if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClusterAction_Server) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClusterAction_Server) ProtoMessage() {} - -func (x *ClusterAction_Server) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClusterAction_Server.ProtoReflect.Descriptor instead. -func (*ClusterAction_Server) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0} -} - -func (x *ClusterAction_Server) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -func (x *ClusterAction_Server) GetPort() uint64 { - if x != nil { - return x.Port - } - return 0 -} - -func (x *ClusterAction_Server) GetType() ClusterAction_Server_Type { - if x != nil { - return x.Type - } - return ClusterAction_Server_TYPE_UNSPECIFIED -} - -func (x *ClusterAction_Server) GetDatabase() ClusterAction_Server_Database { - if x != nil { - return x.Database - } - return ClusterAction_Server_DATABASE_UNSPECIFIED -} - -func (x *ClusterAction_Server) GetProxy() ClusterAction_Server_Proxy { - if x != nil { - return x.Proxy - } - return ClusterAction_Server_PROXY_UNSPECIFIED -} - var File_messages_proto protoreflect.FileDescriptor var file_messages_proto_rawDesc = []byte{ @@ -3253,353 +3531,406 @@ var file_messages_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0xb3, 0x0c, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x06, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, - 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x1a, - 0xc1, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x51, - 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, + 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0x97, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, - 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, - 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, - 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, - 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, - 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, - 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, - 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, - 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, - 0x58, 0x10, 0x07, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, - 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, - 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, - 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, - 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, - 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, - 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, - 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, - 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, - 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, - 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, - 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, - 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, - 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, - 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, - 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, - 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, - 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, - 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, - 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, - 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, - 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, - 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, - 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, - 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, - 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, - 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, - 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, - 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, - 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, - 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, - 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, - 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, - 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, 0x07, 0x22, 0x55, 0x0a, 0x0d, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, - 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, - 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, - 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, - 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, - 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, - 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, - 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, - 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, - 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, - 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, - 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, - 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, - 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, - 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, + 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, + 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, + 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, + 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, + 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, + 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, + 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, + 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, + 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, + 0x22, 0xe1, 0x07, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, + 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x06, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, + 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, + 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, + 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, + 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, + 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, + 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, + 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, + 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, + 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, + 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, + 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, + 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, + 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, + 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, + 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, + 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, + 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, + 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, + 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, + 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, + 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, + 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, + 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, + 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, + 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, + 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, + 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, + 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, + 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, + 0x45, 0x50, 0x10, 0x07, 0x22, 0xab, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, + 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc3, 0x01, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, + 0x4f, 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, + 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, + 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, + 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x53, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, + 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x08, 0x12, + 0x17, 0x0a, 0x13, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, + 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x45, 0x45, 0x44, + 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, + 0x10, 0x0a, 0x22, 0xd3, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, + 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, + 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, + 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, + 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, + 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, + 0x49, 0x43, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, + 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0a, + 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x51, + 0x55, 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, + 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x0c, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, + 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, + 0xae, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, + 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x65, 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, + 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, + 0x4c, 0x45, 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, + 0x45, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, + 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, + 0x4f, 0x58, 0x49, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, + 0x22, 0x79, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, + 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, + 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, + 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, + 0x54, 0x61, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, + 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, + 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, + 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, + 0x6e, 0x63, 0x22, 0xf9, 0x11, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, + 0x73, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, - 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, - 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, - 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, - 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, - 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, 0xf9, 0x11, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x09, 0x74, 0x65, - 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, - 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x10, 0x0a, 0x04, 0x54, - 0x65, 0x73, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, - 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, - 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, - 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x03, 0x12, 0x31, 0x0a, - 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, - 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x04, - 0x12, 0x29, 0x0a, 0x25, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x54, - 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, - 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x74, 0x69, - 0x64, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, - 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x10, 0x07, 0x12, 0x25, 0x0a, - 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, - 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, - 0x61, 0x79, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, - 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, - 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, - 0x63, 0x10, 0x0a, 0x12, 0x34, 0x0a, 0x30, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, - 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, - 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x0d, 0x12, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x65, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x10, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x75, 0x69, + 0x74, 0x65, 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, + 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, + 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, + 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, + 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, + 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x74, 0x69, 0x64, 0x10, 0x06, 0x12, + 0x28, 0x0a, 0x24, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, + 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, + 0x6f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x08, + 0x12, 0x16, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, + 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x0a, 0x12, + 0x34, 0x0a, 0x30, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, + 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, + 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x0c, 0x12, 0x2b, + 0x0a, 0x27, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, + 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, + 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, + 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0e, 0x12, 0x31, + 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, + 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x58, 0x53, 0x4d, 0x53, 0x53, 0x4d, 0x10, + 0x0f, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x10, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, - 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x53, 0x4d, - 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, + 0x10, 0x11, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x58, 0x53, 0x4d, - 0x53, 0x53, 0x4d, 0x10, 0x0f, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, + 0x53, 0x4d, 0x53, 0x10, 0x12, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, - 0x53, 0x10, 0x10, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, + 0x4d, 0x10, 0x13, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, - 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, - 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x11, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, - 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, - 0x58, 0x58, 0x52, 0x58, 0x53, 0x4d, 0x53, 0x10, 0x12, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, - 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, - 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x13, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, - 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, - 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x14, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, + 0x53, 0x10, 0x14, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, + 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x15, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, - 0x53, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x15, 0x12, 0x33, 0x0a, 0x2f, 0x54, - 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, - 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, - 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x16, - 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, - 0x4d, 0x53, 0x4d, 0x10, 0x17, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x16, 0x12, 0x33, 0x0a, 0x2f, + 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, + 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, + 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x10, + 0x17, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x58, + 0x4d, 0x53, 0x4d, 0x10, 0x18, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, - 0x58, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x18, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, - 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, - 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x19, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, + 0x4d, 0x53, 0x4d, 0x10, 0x19, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, + 0x4d, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x1a, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, - 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x1a, 0x12, 0x32, 0x0a, - 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, - 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, - 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, - 0x1b, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x6b, 0x69, - 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x10, 0x1c, - 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x1d, 0x12, 0x27, - 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, - 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x53, 0x65, 0x6d, - 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1e, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, - 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, - 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1f, 0x12, - 0x39, 0x0a, 0x35, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, - 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4f, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, - 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x20, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x65, - 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x53, - 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x10, 0x21, 0x12, 0x40, 0x0a, 0x3c, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, - 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, - 0x79, 0x6e, 0x63, 0x10, 0x22, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, - 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x23, 0x12, 0x32, 0x0a, 0x2e, + 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x1b, 0x12, 0x2d, 0x0a, + 0x29, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, + 0x69, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, + 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, + 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, + 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x1d, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, + 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, + 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, + 0x63, 0x10, 0x1e, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, + 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, + 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1f, 0x12, 0x39, 0x0a, 0x35, 0x54, + 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, + 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x10, 0x20, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, + 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x21, 0x12, + 0x40, 0x0a, 0x3c, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, + 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, + 0x22, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, + 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, + 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x23, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, + 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x24, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, - 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x24, - 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, - 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, - 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x10, 0x25, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, - 0x53, 0x74, 0x6f, 0x70, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, - 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x26, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x65, 0x73, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, - 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x27, - 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, - 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, - 0x28, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, - 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, - 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x29, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x65, 0x73, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, - 0x78, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4e, 0x6f, + 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, + 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, + 0x25, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, + 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, - 0x6e, 0x63, 0x10, 0x2a, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, - 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, - 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, - 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x10, 0x2c, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, - 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x63, 0x10, 0x26, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x27, 0x12, 0x2f, 0x0a, 0x2b, + 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, + 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x28, 0x12, 0x35, 0x0a, + 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, + 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, + 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, + 0x6e, 0x63, 0x10, 0x29, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x78, 0x57, 0x69, 0x74, + 0x68, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x2a, + 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, + 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, + 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, + 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2c, 0x2a, 0x55, + 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, + 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, + 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -3614,80 +3945,90 @@ func file_messages_proto_rawDescGZIP() []byte { return file_messages_proto_rawDescData } -var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 12) -var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 14) +var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_messages_proto_goTypes = []interface{}{ (ServiceStatus)(0), // 0: signal18.replication_manager.v3.ServiceStatus (ClusterSetting_Action)(0), // 1: signal18.replication_manager.v3.ClusterSetting.Action (ClusterSetting_Setting_SettingName)(0), // 2: signal18.replication_manager.v3.ClusterSetting.Setting.SettingName (ClusterSetting_Switch_SwitchName)(0), // 3: signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - (ClusterAction_Action)(0), // 4: signal18.replication_manager.v3.ClusterAction.Action - (ClusterAction_ReplicationTopology)(0), // 5: signal18.replication_manager.v3.ClusterAction.ReplicationTopology - (ClusterAction_Server_Type)(0), // 6: signal18.replication_manager.v3.ClusterAction.Server.Type - (ClusterAction_Server_Database)(0), // 7: signal18.replication_manager.v3.ClusterAction.Server.Database - (ClusterAction_Server_Proxy)(0), // 8: signal18.replication_manager.v3.ClusterAction.Server.Proxy - (TopologyRetrieval_Retrieval)(0), // 9: signal18.replication_manager.v3.TopologyRetrieval.Retrieval - (TableAction_Action)(0), // 10: signal18.replication_manager.v3.TableAction.Action - (ClusterTest_Test)(0), // 11: signal18.replication_manager.v3.ClusterTest.Test - (*ErrorInfo)(nil), // 12: signal18.replication_manager.v3.ErrorInfo - (*ErrorResource)(nil), // 13: signal18.replication_manager.v3.ErrorResource - (*Cluster)(nil), // 14: signal18.replication_manager.v3.Cluster - (*ClusterSetting)(nil), // 15: signal18.replication_manager.v3.ClusterSetting - (*ClusterAction)(nil), // 16: signal18.replication_manager.v3.ClusterAction - (*StatusMessage)(nil), // 17: signal18.replication_manager.v3.StatusMessage - (*TopologyRetrieval)(nil), // 18: signal18.replication_manager.v3.TopologyRetrieval - (*Certificate)(nil), // 19: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 20: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 21: signal18.replication_manager.v3.Tag - (*TableAction)(nil), // 22: signal18.replication_manager.v3.TableAction - (*Table)(nil), // 23: signal18.replication_manager.v3.Table - (*ClusterTest)(nil), // 24: signal18.replication_manager.v3.ClusterTest - (*Cluster_Crash)(nil), // 25: signal18.replication_manager.v3.Cluster.Crash - nil, // 26: signal18.replication_manager.v3.Cluster.MonitorTypeEntry - nil, // 27: signal18.replication_manager.v3.Cluster.TopologyTypeEntry - nil, // 28: signal18.replication_manager.v3.Cluster.FsTypeEntry - nil, // 29: signal18.replication_manager.v3.Cluster.DiskTypeEntry - nil, // 30: signal18.replication_manager.v3.Cluster.VmTypeEntry - (*ClusterSetting_Setting)(nil), // 31: signal18.replication_manager.v3.ClusterSetting.Setting - (*ClusterSetting_Switch)(nil), // 32: signal18.replication_manager.v3.ClusterSetting.Switch - (*ClusterAction_Server)(nil), // 33: signal18.replication_manager.v3.ClusterAction.Server - (*gtid.Gtid)(nil), // 34: signal18.replication_manager.v3.Gtid + (Server_Type)(0), // 4: signal18.replication_manager.v3.Server.Type + (Server_Database)(0), // 5: signal18.replication_manager.v3.Server.Database + (Server_Proxy)(0), // 6: signal18.replication_manager.v3.Server.Proxy + (ClusterAction_Action)(0), // 7: signal18.replication_manager.v3.ClusterAction.Action + (ClusterAction_ReplicationTopology)(0), // 8: signal18.replication_manager.v3.ClusterAction.ReplicationTopology + (DatabaseStatus_Status)(0), // 9: signal18.replication_manager.v3.DatabaseStatus.Status + (DatabaseAction_Action)(0), // 10: signal18.replication_manager.v3.DatabaseAction.Action + (TopologyRetrieval_Retrieval)(0), // 11: signal18.replication_manager.v3.TopologyRetrieval.Retrieval + (TableAction_Action)(0), // 12: signal18.replication_manager.v3.TableAction.Action + (ClusterTest_Test)(0), // 13: signal18.replication_manager.v3.ClusterTest.Test + (*ErrorInfo)(nil), // 14: signal18.replication_manager.v3.ErrorInfo + (*ErrorResource)(nil), // 15: signal18.replication_manager.v3.ErrorResource + (*Cluster)(nil), // 16: signal18.replication_manager.v3.Cluster + (*ClusterSetting)(nil), // 17: signal18.replication_manager.v3.ClusterSetting + (*Server)(nil), // 18: signal18.replication_manager.v3.Server + (*ClusterAction)(nil), // 19: signal18.replication_manager.v3.ClusterAction + (*DatabaseStatus)(nil), // 20: signal18.replication_manager.v3.DatabaseStatus + (*DatabaseAction)(nil), // 21: signal18.replication_manager.v3.DatabaseAction + (*StatusMessage)(nil), // 22: signal18.replication_manager.v3.StatusMessage + (*TopologyRetrieval)(nil), // 23: signal18.replication_manager.v3.TopologyRetrieval + (*Certificate)(nil), // 24: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 25: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 26: signal18.replication_manager.v3.Tag + (*TableAction)(nil), // 27: signal18.replication_manager.v3.TableAction + (*Table)(nil), // 28: signal18.replication_manager.v3.Table + (*ClusterTest)(nil), // 29: signal18.replication_manager.v3.ClusterTest + (*Cluster_Crash)(nil), // 30: signal18.replication_manager.v3.Cluster.Crash + nil, // 31: signal18.replication_manager.v3.Cluster.MonitorTypeEntry + nil, // 32: signal18.replication_manager.v3.Cluster.TopologyTypeEntry + nil, // 33: signal18.replication_manager.v3.Cluster.FsTypeEntry + nil, // 34: signal18.replication_manager.v3.Cluster.DiskTypeEntry + nil, // 35: signal18.replication_manager.v3.Cluster.VmTypeEntry + (*ClusterSetting_Setting)(nil), // 36: signal18.replication_manager.v3.ClusterSetting.Setting + (*ClusterSetting_Switch)(nil), // 37: signal18.replication_manager.v3.ClusterSetting.Switch + (*gtid.Gtid)(nil), // 38: signal18.replication_manager.v3.Gtid } var file_messages_proto_depIdxs = []int32{ - 13, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource - 25, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash - 26, // 2: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry - 27, // 3: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry - 28, // 4: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry - 29, // 5: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry - 30, // 6: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry - 14, // 7: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster + 15, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource + 30, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash + 31, // 2: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry + 32, // 3: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry + 33, // 4: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry + 34, // 5: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry + 35, // 6: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry + 16, // 7: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster 1, // 8: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action - 31, // 9: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting - 32, // 10: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch - 14, // 11: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 4, // 12: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action - 33, // 13: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.ClusterAction.Server - 5, // 14: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology - 0, // 15: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus - 14, // 16: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster - 9, // 17: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval - 14, // 18: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 23, // 19: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table - 10, // 20: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action - 14, // 21: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster - 11, // 22: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test - 34, // 23: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid - 2, // 24: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName - 3, // 25: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - 6, // 26: signal18.replication_manager.v3.ClusterAction.Server.type:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Type - 7, // 27: signal18.replication_manager.v3.ClusterAction.Server.database:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Database - 8, // 28: signal18.replication_manager.v3.ClusterAction.Server.proxy:type_name -> signal18.replication_manager.v3.ClusterAction.Server.Proxy - 29, // [29:29] is the sub-list for method output_type - 29, // [29:29] is the sub-list for method input_type - 29, // [29:29] is the sub-list for extension type_name - 29, // [29:29] is the sub-list for extension extendee - 0, // [0:29] is the sub-list for field type_name + 36, // 9: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting + 37, // 10: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch + 4, // 11: signal18.replication_manager.v3.Server.type:type_name -> signal18.replication_manager.v3.Server.Type + 5, // 12: signal18.replication_manager.v3.Server.database:type_name -> signal18.replication_manager.v3.Server.Database + 6, // 13: signal18.replication_manager.v3.Server.proxy:type_name -> signal18.replication_manager.v3.Server.Proxy + 16, // 14: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 7, // 15: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action + 18, // 16: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.Server + 8, // 17: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology + 16, // 18: signal18.replication_manager.v3.DatabaseStatus.cluster:type_name -> signal18.replication_manager.v3.Cluster + 18, // 19: signal18.replication_manager.v3.DatabaseStatus.server:type_name -> signal18.replication_manager.v3.Server + 9, // 20: signal18.replication_manager.v3.DatabaseStatus.status:type_name -> signal18.replication_manager.v3.DatabaseStatus.Status + 16, // 21: signal18.replication_manager.v3.DatabaseAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 18, // 22: signal18.replication_manager.v3.DatabaseAction.server:type_name -> signal18.replication_manager.v3.Server + 10, // 23: signal18.replication_manager.v3.DatabaseAction.action:type_name -> signal18.replication_manager.v3.DatabaseAction.Action + 0, // 24: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus + 16, // 25: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster + 11, // 26: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval + 16, // 27: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 28, // 28: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table + 12, // 29: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action + 16, // 30: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster + 13, // 31: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test + 38, // 32: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid + 2, // 33: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName + 3, // 34: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName + 35, // [35:35] is the sub-list for method output_type + 35, // [35:35] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_messages_proto_init() } @@ -3745,7 +4086,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterAction); i { + switch v := v.(*Server); i { case 0: return &v.state case 1: @@ -3757,7 +4098,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusMessage); i { + switch v := v.(*ClusterAction); i { case 0: return &v.state case 1: @@ -3769,7 +4110,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopologyRetrieval); i { + switch v := v.(*DatabaseStatus); i { case 0: return &v.state case 1: @@ -3781,7 +4122,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Certificate); i { + switch v := v.(*DatabaseAction); i { case 0: return &v.state case 1: @@ -3793,7 +4134,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Backup); i { + switch v := v.(*StatusMessage); i { case 0: return &v.state case 1: @@ -3805,7 +4146,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tag); i { + switch v := v.(*TopologyRetrieval); i { case 0: return &v.state case 1: @@ -3817,7 +4158,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TableAction); i { + switch v := v.(*Certificate); i { case 0: return &v.state case 1: @@ -3829,7 +4170,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Table); i { + switch v := v.(*Backup); i { case 0: return &v.state case 1: @@ -3841,7 +4182,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterTest); i { + switch v := v.(*Tag); i { case 0: return &v.state case 1: @@ -3853,7 +4194,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Cluster_Crash); i { + switch v := v.(*TableAction); i { case 0: return &v.state case 1: @@ -3864,8 +4205,8 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterSetting_Setting); i { + file_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Table); i { case 0: return &v.state case 1: @@ -3876,8 +4217,32 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterSetting_Switch); i { + file_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClusterTest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Cluster_Crash); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClusterSetting_Setting); i { case 0: return &v.state case 1: @@ -3888,8 +4253,8 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterAction_Server); i { + file_messages_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClusterSetting_Switch); i { case 0: return &v.state case 1: @@ -3906,8 +4271,8 @@ func file_messages_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_messages_proto_rawDesc, - NumEnums: 12, - NumMessages: 22, + NumEnums: 14, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index 5cc28efab..9177fb23a 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -8,6 +8,9 @@ { "name": "ClusterPublicService" }, + { + "name": "DatabasePublicService" + }, { "name": "ClusterService" } @@ -32,7 +35,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -428,7 +431,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -444,7 +447,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/ClusterActionServer" + "$ref": "#/definitions/v3Server" } }, { @@ -777,7 +780,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -1173,7 +1176,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -1569,7 +1572,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -1964,7 +1967,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -2360,7 +2363,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -2755,7 +2758,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -3126,7 +3129,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -3496,7 +3499,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -3866,7 +3869,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -4262,7 +4265,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -4718,7 +4721,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -5174,7 +5177,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -5630,7 +5633,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -6073,20 +6076,20 @@ ] } }, - "/v3/clusters/{cluster.name}/tests/actions/run/{testName}": { + "/v3/clusters/{cluster.name}/status/{status}": { "get": { - "operationId": "ClusterService_PerformClusterTest", + "operationId": "DatabasePublicService_ServerStatus3", "responses": { "200": { "description": "A successful response.", "schema": { - "type": "object" + "type": "boolean" } }, "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -6098,56 +6101,22 @@ "type": "string" }, { - "name": "testName", + "name": "status", "in": "path", "required": true, "type": "string", "enum": [ - "Unspecified", - "All", - "Suite", - "TestFailoverAllSlavesDelayNoRplChecksNoSemiSync", - "TestFailoverAllSlavesDelayRplChecksNoSemiSync", - "TestFailoverAssyncAutoRejoinFlashback", - "TestFailoverAssyncAutoRejoinNoGtid", - "TestFailoverAssyncAutoRejoinNowrites", - "TestFailoverAssyncAutoRejoinRelay", - "TestFailoverManual", - "TestFailoverNoRplChecksNoSemiSync", - "TestFailoverNoRplChecksNoSemiSyncMasterHeartbeat", - "TestFailoverNumberFailureLimitReach", - "TestFailoverSemisyncAutoRejoinFlashback", - "TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM", - "TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM", - "TestFailoverSemisyncAutoRejoinSafeMSMXMS", - "TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS", - "TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS", - "TestFailoverSemisyncAutoRejoinSafeMSXMSM", - "TestFailoverSemisyncAutoRejoinUnsafeMSMXMS", - "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS", - "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS", - "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM", - "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM", - "TestFailoverSemisyncAutoRejoinUnsafeMSXMSM", - "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS", - "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM", - "TestFailoverSemisyncSlavekilledAutoRejoin", - "TestFailoverTimeNotReach", - "TestSlaReplAllSlavesDelayNoSemiSync", - "TestSlaReplAllSlavesStopNoSemiSync", - "TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck", - "TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck", - "TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync", - "TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync", - "TestSwitchoverAllSlavesDelayRplCheckNoSemiSync", - "TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck", - "TestSwitchoverAllSlavesStopRplCheckNoSemiSync", - "TestSwitchoverBackPreferedMasterNoRplCheckSemiSync", - "TestSwitchoverLongQueryNoRplCheckNoSemiSync", - "TestSwitchoverLongTransactionNoRplCheckNoSemiSync", - "TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync", - "TestSwitchoverNoReadOnlyNoRplCheck", - "TestSwitchoverReadOnlyNoRplCheck" + "ACTION_UNSPECIFIED", + "START", + "STOP", + "RESTART", + "PROVISION", + "UNPROVISION", + "REPROVISION", + "IS_MASTER", + "IS_SLAVE", + "NEED_ROLLING_REPROV", + "NEED_ROLLING_RESTART" ] }, { @@ -6408,44 +6377,81 @@ "format": "int32" }, { - "name": "provision", + "name": "server.host", "in": "query", "required": false, - "type": "boolean" + "type": "string" }, { - "name": "unprovision", + "name": "server.port", "in": "query", "required": false, - "type": "boolean" + "type": "string", + "format": "uint64" + }, + { + "name": "server.type", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" + }, + { + "name": "server.database", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" + ], + "default": "DATABASE_UNSPECIFIED" + }, + { + "name": "server.proxy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" } ], "tags": [ - "ClusterService" + "DatabasePublicService" ] } }, - "/v3/clusters/{cluster.name}/topology/{retrieve}": { + "/v3/clusters/{cluster.name}/tests/actions/run/{testName}": { "get": { - "operationId": "ClusterService_RetrieveFromTopology", + "operationId": "ClusterService_PerformClusterTest", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": {}, - "error": { - "$ref": "#/definitions/rpcStatus" - } - }, - "title": "Stream result of protobufStruct" + "type": "object" } }, "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -6457,19 +6463,56 @@ "type": "string" }, { - "name": "retrieve", + "name": "testName", "in": "path", "required": true, "type": "string", "enum": [ - "RETRIEVAL_UNSPECIFIED", - "ALERTS", - "CRASHES", - "LOGS", - "MASTER", - "PROXIES", - "SERVERS", - "SLAVES" + "Unspecified", + "All", + "Suite", + "TestFailoverAllSlavesDelayNoRplChecksNoSemiSync", + "TestFailoverAllSlavesDelayRplChecksNoSemiSync", + "TestFailoverAssyncAutoRejoinFlashback", + "TestFailoverAssyncAutoRejoinNoGtid", + "TestFailoverAssyncAutoRejoinNowrites", + "TestFailoverAssyncAutoRejoinRelay", + "TestFailoverManual", + "TestFailoverNoRplChecksNoSemiSync", + "TestFailoverNoRplChecksNoSemiSyncMasterHeartbeat", + "TestFailoverNumberFailureLimitReach", + "TestFailoverSemisyncAutoRejoinFlashback", + "TestFailoverSemisyncAutoRejoinMSSXMSXXMSXMSSM", + "TestFailoverSemisyncAutoRejoinMSSXMSXXMXSMSSM", + "TestFailoverSemisyncAutoRejoinSafeMSMXMS", + "TestFailoverSemisyncAutoRejoinSafeMSMXXXRMXMS", + "TestFailoverSemisyncAutoRejoinSafeMSMXXXRXSMS", + "TestFailoverSemisyncAutoRejoinSafeMSXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXRXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSMXXXXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMSM", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXMXMS", + "TestFailoverSemisyncAutoRejoinUnsafeMSXMXXXMSM", + "TestFailoverSemisyncSlavekilledAutoRejoin", + "TestFailoverTimeNotReach", + "TestSlaReplAllSlavesDelayNoSemiSync", + "TestSlaReplAllSlavesStopNoSemiSync", + "TestSwitchover2TimesReplicationOkNoSemiSyncNoRplCheck", + "TestSwitchover2TimesReplicationOkSemiSyncNoRplCheck", + "TestSwitchoverAllSlavesDelayMultimasterNoRplChecksNoSemiSync", + "TestSwitchoverAllSlavesDelayNoRplChecksNoSemiSync", + "TestSwitchoverAllSlavesDelayRplCheckNoSemiSync", + "TestSwitchoverAllSlavesStopNoSemiSyncNoRplCheck", + "TestSwitchoverAllSlavesStopRplCheckNoSemiSync", + "TestSwitchoverBackPreferedMasterNoRplCheckSemiSync", + "TestSwitchoverLongQueryNoRplCheckNoSemiSync", + "TestSwitchoverLongTransactionNoRplCheckNoSemiSync", + "TestSwitchoverLongTrxWithoutCommitNoRplCheckNoSemiSync", + "TestSwitchoverNoReadOnlyNoRplCheck", + "TestSwitchoverReadOnlyNoRplCheck" ] }, { @@ -6728,6 +6771,18 @@ "required": false, "type": "integer", "format": "int32" + }, + { + "name": "provision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "unprovision", + "in": "query", + "required": false, + "type": "boolean" } ], "tags": [ @@ -6735,44 +6790,67 @@ ] } }, - "/v3/clusters/{name}": { + "/v3/clusters/{cluster.name}/topology/{retrieve}": { "get": { - "operationId": "ClusterService_GetCluster", + "operationId": "ClusterService_RetrieveFromTopology", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "type": "object" + "type": "object", + "properties": { + "result": {}, + "error": { + "$ref": "#/definitions/googlerpcStatus" + } + }, + "title": "Stream result of protobufStruct" } }, "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, "parameters": [ { - "name": "name", + "name": "cluster.name", "in": "path", "required": true, "type": "string" }, { - "name": "tenant", + "name": "retrieve", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RETRIEVAL_UNSPECIFIED", + "ALERTS", + "CRASHES", + "LOGS", + "MASTER", + "PROXIES", + "SERVERS", + "SLAVES" + ] + }, + { + "name": "cluster.tenant", "in": "query", "required": false, "type": "string" }, { - "name": "workingDir", + "name": "cluster.workingDir", "in": "query", "required": false, "type": "string" }, { - "name": "dbServers", + "name": "cluster.dbServers", "in": "query", "required": false, "type": "array", @@ -6782,7 +6860,7 @@ "collectionFormat": "multi" }, { - "name": "proxyServers", + "name": "cluster.proxyServers", "in": "query", "required": false, "type": "array", @@ -6792,93 +6870,1104 @@ "collectionFormat": "multi" }, { - "name": "failoverCounter", + "name": "cluster.failoverCounter", "in": "query", "required": false, "type": "integer", "format": "int32" }, { - "name": "failoverLastTime", + "name": "cluster.failoverLastTime", "in": "query", "required": false, "type": "string", "format": "int64" }, { - "name": "activePassiveStatus", + "name": "cluster.activePassiveStatus", "in": "query", "required": false, "type": "string" }, { - "name": "isSplitBrain", + "name": "cluster.isSplitBrain", "in": "query", "required": false, "type": "boolean" }, { - "name": "isFailedArbitrator", + "name": "cluster.isFailedArbitrator", "in": "query", "required": false, "type": "boolean" }, { - "name": "isLostMajority", + "name": "cluster.isLostMajority", "in": "query", "required": false, "type": "boolean" }, { - "name": "isDown", + "name": "cluster.isDown", "in": "query", "required": false, "type": "boolean" }, { - "name": "isClusterDown", + "name": "cluster.isClusterDown", "in": "query", "required": false, "type": "boolean" }, { - "name": "isAllDbUp", + "name": "cluster.isAllDbUp", "in": "query", "required": false, "type": "boolean" }, { - "name": "isFailable", + "name": "cluster.isFailable", "in": "query", "required": false, "type": "boolean" }, { - "name": "isPostgres", + "name": "cluster.isPostgres", "in": "query", "required": false, "type": "boolean" }, { - "name": "isProvision", + "name": "cluster.isProvision", "in": "query", "required": false, "type": "boolean" }, { - "name": "isNeedProxyRestart", + "name": "cluster.isNeedProxyRestart", "in": "query", "required": false, "type": "boolean" }, { - "name": "isNeedProxiesRestart", + "name": "cluster.isNeedProxiesRestart", "in": "query", "required": false, "type": "boolean" }, { - "name": "isNeedDatabasesRestart", + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "ClusterService" + ] + } + }, + "/v3/clusters/{cluster.name}/{server.host}/status/{status}": { + "get": { + "operationId": "DatabasePublicService_ServerStatus2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "boolean" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "server.host", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "status", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "START", + "STOP", + "RESTART", + "PROVISION", + "UNPROVISION", + "REPROVISION", + "IS_MASTER", + "IS_SLAVE", + "NEED_ROLLING_REPROV", + "NEED_ROLLING_RESTART" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "server.port", + "in": "query", + "required": false, + "type": "string", + "format": "uint64" + }, + { + "name": "server.type", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" + }, + { + "name": "server.database", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" + ], + "default": "DATABASE_UNSPECIFIED" + }, + { + "name": "server.proxy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" + } + ], + "tags": [ + "DatabasePublicService" + ] + } + }, + "/v3/clusters/{cluster.name}/{server.host}/{server.port}/status/{status}": { + "get": { + "operationId": "DatabasePublicService_ServerStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "boolean" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster.name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "server.host", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "server.port", + "in": "path", + "required": true, + "type": "string", + "format": "uint64" + }, + { + "name": "status", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "START", + "STOP", + "RESTART", + "PROVISION", + "UNPROVISION", + "REPROVISION", + "IS_MASTER", + "IS_SLAVE", + "NEED_ROLLING_REPROV", + "NEED_ROLLING_RESTART" + ] + }, + { + "name": "cluster.tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cluster.waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster.waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "server.type", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" + }, + { + "name": "server.database", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "DATABASE_UNSPECIFIED", + "MARIADB", + "PERCONA", + "MYSQL", + "POSTGRESQL" + ], + "default": "DATABASE_UNSPECIFIED" + }, + { + "name": "server.proxy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "PROXY_UNSPECIFIED", + "MAXSCALE", + "PROXYSQL", + "SHARDPROXY", + "HAPROXY", + "MYPROXY", + "EXTPROXY", + "SPHINX" + ], + "default": "PROXY_UNSPECIFIED" + } + ], + "tags": [ + "DatabasePublicService" + ] + } + }, + "/v3/clusters/{name}": { + "get": { + "operationId": "ClusterService_GetCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", "in": "query", "required": false, "type": "boolean" @@ -7035,7 +8124,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -7322,7 +8411,7 @@ "$ref": "#/definitions/v3Backup" }, "error": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } }, "title": "Stream result of v3Backup" @@ -7331,7 +8420,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -7618,7 +8707,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -7903,7 +8992,7 @@ "properties": { "result": {}, "error": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } }, "title": "Stream result of protobufStruct" @@ -7912,7 +9001,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -8199,7 +9288,7 @@ "$ref": "#/definitions/v3Table" }, "error": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } }, "title": "Stream result of v3Table" @@ -8208,7 +9297,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -8495,7 +9584,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -8782,7 +9871,7 @@ "$ref": "#/definitions/v3Cluster" }, "error": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } }, "title": "Stream result of v3Cluster" @@ -8791,7 +9880,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -9078,7 +10167,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -9365,7 +10454,7 @@ "$ref": "#/definitions/v3Tag" }, "error": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } }, "title": "Stream result of v3Tag" @@ -9374,7 +10463,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -9664,36 +10753,6 @@ ], "default": "RT_UNSPECIFIED" }, - "ClusterActionServer": { - "type": "object", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "string", - "format": "uint64" - }, - "type": { - "$ref": "#/definitions/ClusterActionServerType" - }, - "database": { - "$ref": "#/definitions/ServerDatabase" - }, - "proxy": { - "$ref": "#/definitions/ServerProxy" - } - } - }, - "ClusterActionServerType": { - "type": "string", - "enum": [ - "TYPE_UNSPECIFIED", - "DATABASE", - "PROXY" - ], - "default": "TYPE_UNSPECIFIED" - }, "ClusterCrash": { "type": "object", "properties": { @@ -9968,6 +11027,24 @@ ], "default": "RETRIEVAL_UNSPECIFIED" }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, "protobufAny": { "type": "object", "properties": { @@ -9988,24 +11065,6 @@ "default": "NULL_VALUE", "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufAny" - } - } - } - }, "v3Backup": { "type": "object", "properties": { @@ -10281,6 +11340,23 @@ ], "default": "UNSPECIFIED" }, + "v3DatabaseStatusStatus": { + "type": "string", + "enum": [ + "ACTION_UNSPECIFIED", + "START", + "STOP", + "RESTART", + "PROVISION", + "UNPROVISION", + "REPROVISION", + "IS_MASTER", + "IS_SLAVE", + "NEED_ROLLING_REPROV", + "NEED_ROLLING_RESTART" + ], + "default": "ACTION_UNSPECIFIED" + }, "v3Gtid": { "type": "object", "properties": { @@ -10298,6 +11374,36 @@ } } }, + "v3Server": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "string", + "format": "uint64" + }, + "type": { + "$ref": "#/definitions/v3ServerType" + }, + "database": { + "$ref": "#/definitions/ServerDatabase" + }, + "proxy": { + "$ref": "#/definitions/ServerProxy" + } + } + }, + "v3ServerType": { + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "DATABASE", + "PROXY" + ], + "default": "TYPE_UNSPECIFIED" + }, "v3ServiceStatus": { "type": "string", "enum": [ diff --git a/repmanv3/service.desc b/repmanv3/service.desc index fb0a63a7454a19453c80df4f040bb8afe8c48410..fa1c1d529b8c86d43642c6431892201a644bb87a 100644 GIT binary patch delta 982 zcmcJOJ#W)c7=>l$qs~o8+}k43khb|KP>I$-5d<-Tn_d;GjvcPuR_ziw!7YKPP8|m* zRY5SJE(qNL#LB<`3knQKZ0rcBKL8;iF);E6xV9783NbQW`@GLNwvS%_xWD(934o`! z-UeQ!nP+5bqL{b>g3fl^Oa?N{bi6o2nEa`%X$v~lus4A+;I12vQ8zkfGU!p~Tz90(y-!012-y9P+^Mz|mVx7MBsv!4qIaL1?~)Rauslg;LG;@)4K>qlYJS;J*RL?H?*fY&cD8 z^WWuggL268*oDlX3g0F82M!xvNbV;?nwjkXsDO4-5hX=Oil~$kEnx&C=EU;iQngmS zx~fTKQKnr$5O+mamDL4LjKERA_eq4Yironh+;aM=CaWvgmJnX`CQ-LuwW>=MX$|qQ z-q+mC1p6yZ7K?jh6C0Mb(J~8kF&(SkT`%0Rjdt6#JH5}v6=vog3yu%^sdnqFW<#S3 z+H9Ec1q)*CwQ2i{0t@6Jmn{uoUreP0KVKN+3v-s$S~gl;Gxw2swEvy3?-{s2HcM&p u;o`~RLdRRc!j6CLu92-vli3~ruMlon9cTA1WEP&K{_*%xXK(6!IrQ3%XKt`i!V2|xHvIAwRrLZQ;m(Lr83-`dAN9;b4rU#Qi~=BXnIeUlJ^(% z0*TxHwW0OA?b3i&MeI@)_BIG#H|4aDgfbf-4pZTH|r}@GHupT%j9R8BQ<%tY1d{)vjE1;CoG(}0RXm5U;qFB diff --git a/repmanv3/tools.go b/repmanv3/tools.go index c16d35327..157ca9765 100644 --- a/repmanv3/tools.go +++ b/repmanv3/tools.go @@ -15,7 +15,7 @@ func (s *ClusterSetting_Switch_SwitchName) Legacy() string { return strings.ToLower(strings.ReplaceAll(s.String(), "_", "-")) } -func (s *ClusterAction_Server) GetURI() string { +func (s *Server) GetURI() string { return fmt.Sprintf("%s:%d", s.Host, s.Port) } @@ -27,6 +27,14 @@ type ContainsClusterMessage interface { GetClusterMessage() (*Cluster, error) } +func (da *DatabaseStatus) GetClusterMessage() (*Cluster, error) { + if da.Cluster == nil { + return nil, NewError(codes.InvalidArgument, ErrClusterNotSet).Err() + } + + return da.Cluster, nil +} + func (ca *ClusterAction) GetClusterMessage() (*Cluster, error) { if ca.Cluster == nil { return nil, NewError(codes.InvalidArgument, ErrClusterNotSet).Err() diff --git a/server/api_cluster.go b/server/api_cluster.go index 8589d7c4d..32aa2f14a 100644 --- a/server/api_cluster.go +++ b/server/api_cluster.go @@ -274,11 +274,6 @@ func (repman *ReplicationManager) apiClusterProtectedHandler(router *mux.Router) negroni.Wrap(http.HandlerFunc(repman.handlerMuxOneTest)), )) - router.Handle("/api/clusters/{clusterName}/tests/actions/run/{testName}", negroni.New( - negroni.HandlerFunc(repman.validateTokenMiddleware), - negroni.Wrap(http.HandlerFunc(repman.handlerMuxOneTest)), - )) - // endpoint to fetch Cluster.DiffVariables router.Handle("/api/clusters/{clusterName}/diffvariables", negroni.New( negroni.HandlerFunc(repman.validateTokenMiddleware), diff --git a/server/api_database.go b/server/api_database.go index b07788061..aa1365c5a 100644 --- a/server/api_database.go +++ b/server/api_database.go @@ -58,6 +58,7 @@ func (repman *ReplicationManager) apiDatabaseUnprotectedHandler(router *mux.Rout negroni.Wrap(http.HandlerFunc(repman.handlerMuxServersPortIsSlaveStatus)), )) + // TODO: this returns a config file, this should probably be behind an ACL. router.Handle("/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/config", negroni.New( negroni.Wrap(http.HandlerFunc(repman.handlerMuxServersPortConfig)), )) @@ -1258,6 +1259,7 @@ func (repman *ReplicationManager) handlerMuxServerNeedStart(w http.ResponseWrite if node != nil { if node.HasWaitStartCookie() { w.Write([]byte("200 -Need start!")) + // TODO: why does a status request delete a cookie? nothing changes node.DelWaitStartCookie() return } @@ -1267,6 +1269,7 @@ func (repman *ReplicationManager) handlerMuxServerNeedStart(w http.ResponseWrite } else if proxy != nil { if proxy.HasWaitStartCookie() { w.Write([]byte("200 -Need start!")) + // TODO: idem proxy.DelWaitStartCookie() return } diff --git a/server/repmanv3.go b/server/repmanv3.go index 1ff708e1c..be6ff27c6 100644 --- a/server/repmanv3.go +++ b/server/repmanv3.go @@ -27,8 +27,9 @@ import ( "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" "google.golang.org/protobuf/encoding/protojson" - emptypb "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/wrapperspb" grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware" @@ -105,6 +106,7 @@ func (s *ReplicationManager) StartServerV3(debug bool, router *mux.Router) error s.grpcServer = grpc.NewServer(serverOpts...) v3.RegisterClusterPublicServiceServer(s.grpcServer, s) v3.RegisterClusterServiceServer(s.grpcServer, s) + v3.RegisterDatabasePublicServiceServer(s.grpcServer, s) /* Bootstrap the Muxed connection */ httpmux := http.NewServeMux() @@ -129,6 +131,16 @@ func (s *ReplicationManager) StartServerV3(debug bool, router *mux.Router) error return fmt.Errorf("could not register service ClusterService: %w", err) } + err = v3.RegisterDatabasePublicServiceHandlerFromEndpoint(ctx, + gwmux, + s.v3Config.Listen.AddressWithPort(), + dopts, + ) + + if err != nil { + return fmt.Errorf("could not register service DatabasePublicService: %w", err) + } + httpmux.Handle("/", gwmux) srv := &http.Server{ @@ -548,7 +560,9 @@ func (s *ReplicationManager) GetShards(in *v3.Cluster, stream v3.ClusterService_ } func (s *ReplicationManager) PerformClusterTest(ctx context.Context, in *v3.ClusterTest) (*structpb.Struct, error) { - // TODO: implement allowing no cluster to be set and starting a test cluster + if in.TestName == v3.ClusterTest_Unspecified { + in.TestName = v3.ClusterTest_All + } user, mycluster, err := s.getClusterAndUser(ctx, in) if err != nil { @@ -608,25 +622,25 @@ func (s *ReplicationManager) PerformClusterAction(ctx context.Context, in *v3.Cl err = mycluster.RollingRestart() case v3.ClusterAction_ADDSERVER: switch in.Server.Type { - case v3.ClusterAction_Server_TYPE_UNSPECIFIED: + case v3.Server_TYPE_UNSPECIFIED: err = mycluster.AddSeededServer(in.Server.GetURI()) - case v3.ClusterAction_Server_PROXY: - if in.Server.Proxy == v3.ClusterAction_Server_PROXY_UNSPECIFIED { - return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrEnumNotSet, "Proxy", v3.ClusterAction_Server_PROXY_UNSPECIFIED.String()).Err() + case v3.Server_PROXY: + if in.Server.Proxy == v3.Server_PROXY_UNSPECIFIED { + return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrEnumNotSet, "Proxy", v3.Server_PROXY_UNSPECIFIED.String()).Err() } err = mycluster.AddSeededProxy( strings.ToLower(in.Server.Proxy.String()), in.Server.Host, fmt.Sprintf("%d", in.Server.Port), "", "") - case v3.ClusterAction_Server_DATABASE: + case v3.Server_DATABASE: switch in.Server.Database { - case v3.ClusterAction_Server_DATABASE_UNSPECIFIED: - return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrEnumNotSet, "Database", v3.ClusterAction_Server_DATABASE_UNSPECIFIED.String()).Err() - case v3.ClusterAction_Server_MARIADB: + case v3.Server_DATABASE_UNSPECIFIED: + return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrEnumNotSet, "Database", v3.Server_DATABASE_UNSPECIFIED.String()).Err() + case v3.Server_MARIADB: mycluster.Conf.ProvDbImg = "mariadb:latest" - case v3.ClusterAction_Server_PERCONA: + case v3.Server_PERCONA: mycluster.Conf.ProvDbImg = "percona:latest" - case v3.ClusterAction_Server_MYSQL: + case v3.Server_MYSQL: mycluster.Conf.ProvDbImg = "mysql:latest" // TODO: Postgres is an option but previous code doesn't mention it } @@ -1045,3 +1059,114 @@ func (s *ReplicationManager) ExecuteTableAction(ctx context.Context, in *v3.Tabl return } + +// DatabaseStatus is a public endpoint so it doesn't need to verify a user +func (s *ReplicationManager) ServerStatus(ctx context.Context, in *v3.DatabaseStatus) (*wrapperspb.BoolValue, error) { + mycluster, err := s.getClusterFromFromRequest(in) + if err != nil { + return nil, err + } + + if in.Status == v3.DatabaseStatus_ACTION_UNSPECIFIED { + return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrEnumNotSet, "status", "").Err() + } + + status := &wrapperspb.BoolValue{ + Value: false, + } + + // when no server is set we can check if the rolling-reprov or rolling-restart status + if in.Server == nil { + switch in.Status { + case v3.DatabaseStatus_NEED_ROLLING_REPROV: + if mycluster.HasRequestDBRollingReprov() { + status.Value = true + } + case v3.DatabaseStatus_NEED_ROLLING_RESTART: + if mycluster.HasRequestDBRollingRestart() { + status.Value = true + } + } + return status, nil + } + + if in.Server == nil { + return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrFieldNotSet, "server", "").Err() + } + + var node *cluster.ServerMonitor + + if in.Server.Port == 0 { + node = mycluster.GetServerFromName(in.Server.Host) + } else { + node = mycluster.GetServerFromName(in.Server.GetURI()) + } + + proxy := mycluster.GetProxyFromURL(in.Server.GetURI()) + + if node == nil && proxy == nil { + return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrServerNotFound, "server", in.Server.Host).Err() + } + + if proxy == nil && node.IsDown() { + return nil, v3.NewErrorResource(codes.InvalidArgument, v3.ErrServerDown, "server", in.Server.Host).Err() + } + + switch in.Status { + case v3.DatabaseStatus_IS_MASTER: + if !mycluster.IsInFailover() && mycluster.IsActive() && node.IsMaster() && + !node.IsDown() && !node.IsMaintenance && !node.IsReadOnly() { + status.Value = true + } + case v3.DatabaseStatus_IS_SLAVE: + if mycluster.IsActive() && !node.IsDown() && !node.IsMaintenance && + ((node.IsSlave && !node.HasReplicationIssue()) || + (node.IsMaster() && node.ClusterGroup.Conf.PRXServersReadOnMaster)) { + status.Value = true + } + } + + if proxy != nil { + status = getStatusFromCookie(in, proxy) + } else { + status = getStatusFromCookie(in, node) + } + + // TODO: decide if we want to return an error or not for when e.g. a restart is not needed + + return status, nil +} + +func getStatusFromCookie(in *v3.DatabaseStatus, n cluster.HasCookie) *wrapperspb.BoolValue { + status := &wrapperspb.BoolValue{ + Value: false, + } + switch in.Status { + case v3.DatabaseStatus_RESTART: + if n.HasCookie("cookie_restart") { + status.Value = true + } + case v3.DatabaseStatus_REPROVISION: + if n.HasCookie("cookie_reprov") { + status.Value = true + } + case v3.DatabaseStatus_PROVISION: + if n.HasCookie("cookie_prov") { + status.Value = true + } + case v3.DatabaseStatus_UNPROVISION: + if n.HasCookie("cookie_unprov") { + status.Value = true + } + case v3.DatabaseStatus_START: + if n.HasCookie("cookie_waitstart") { + status.Value = true + } + case v3.DatabaseStatus_STOP: + if n.HasCookie("cookie_waitstop") { + status.Value = true + } + } + + return status +} diff --git a/server/server.go b/server/server.go index 16fe775c0..470f1cf2b 100644 --- a/server/server.go +++ b/server/server.go @@ -49,47 +49,48 @@ var RepMan *ReplicationManager // Global variables type ReplicationManager struct { - OpenSVC opensvc.Collector `json:"-"` - Version string `json:"version"` - Fullversion string `json:"fullVersion"` - Os string `json:"os"` - Arch string `json:"arch"` - MemProfile string `json:"memprofile"` - Clusters map[string]*cluster.Cluster `json:"-"` - Agents []opensvc.Host `json:"agents"` - UUID string `json:"uuid"` - Hostname string `json:"hostname"` - Status string `json:"status"` - SplitBrain bool `json:"spitBrain"` - ClusterList []string `json:"clusters"` - Tests []string `json:"tests"` - Conf config.Config `json:"config"` - Logs s18log.HttpLog `json:"logs"` - ServicePlans []config.ServicePlan `json:"servicePlans"` - ServiceOrchestrators []config.ConfigVariableType `json:"serviceOrchestrators"` - ServiceAcl []config.Grant `json:"serviceAcl"` - ServiceRepos []config.DockerRepo `json:"serviceRepos"` - ServiceTarballs []config.Tarball `json:"serviceTarballs"` - ServiceFS map[string]bool `json:"serviceFS"` - ServiceVM map[string]bool `json:"serviceVM"` - ServiceDisk map[string]string `json:"serviceDisk"` - ServicePool map[string]bool `json:"servicePool"` - BackupLogicalList map[string]bool `json:"backupLogicalList"` - BackupPhysicalList map[string]bool `json:"backupPhysicalList"` - currentCluster *cluster.Cluster `json:"-"` - tlog s18log.TermLog - termlength int - exitMsg string - exit bool - isStarted bool - Confs map[string]config.Config - ForcedConfs map[string]config.Config - grpcServer *grpc.Server `json:"-"` - grpcWrapped *grpcweb.WrappedGrpcServer `json:"-"` - V3Up chan bool `json:"-"` - v3Config Repmanv3Config `json:"-"` - repmanv3.UnimplementedClusterPublicServiceServer `json:"-"` - repmanv3.UnimplementedClusterServiceServer `json:"-"` + OpenSVC opensvc.Collector `json:"-"` + Version string `json:"version"` + Fullversion string `json:"fullVersion"` + Os string `json:"os"` + Arch string `json:"arch"` + MemProfile string `json:"memprofile"` + Clusters map[string]*cluster.Cluster `json:"-"` + Agents []opensvc.Host `json:"agents"` + UUID string `json:"uuid"` + Hostname string `json:"hostname"` + Status string `json:"status"` + SplitBrain bool `json:"spitBrain"` + ClusterList []string `json:"clusters"` + Tests []string `json:"tests"` + Conf config.Config `json:"config"` + Logs s18log.HttpLog `json:"logs"` + ServicePlans []config.ServicePlan `json:"servicePlans"` + ServiceOrchestrators []config.ConfigVariableType `json:"serviceOrchestrators"` + ServiceAcl []config.Grant `json:"serviceAcl"` + ServiceRepos []config.DockerRepo `json:"serviceRepos"` + ServiceTarballs []config.Tarball `json:"serviceTarballs"` + ServiceFS map[string]bool `json:"serviceFS"` + ServiceVM map[string]bool `json:"serviceVM"` + ServiceDisk map[string]string `json:"serviceDisk"` + ServicePool map[string]bool `json:"servicePool"` + BackupLogicalList map[string]bool `json:"backupLogicalList"` + BackupPhysicalList map[string]bool `json:"backupPhysicalList"` + currentCluster *cluster.Cluster `json:"-"` + tlog s18log.TermLog + termlength int + exitMsg string + exit bool + isStarted bool + Confs map[string]config.Config + ForcedConfs map[string]config.Config + grpcServer *grpc.Server `json:"-"` + grpcWrapped *grpcweb.WrappedGrpcServer `json:"-"` + V3Up chan bool `json:"-"` + v3Config Repmanv3Config `json:"-"` + repmanv3.UnimplementedClusterPublicServiceServer `json:"-"` + repmanv3.UnimplementedClusterServiceServer `json:"-"` + repmanv3.UnimplementedDatabasePublicServiceServer `json:"-"` sync.Mutex } diff --git a/signal18/replication-manager/v3/cluster.proto b/signal18/replication-manager/v3/cluster.proto index 0a407be16..dee9b56f9 100644 --- a/signal18/replication-manager/v3/cluster.proto +++ b/signal18/replication-manager/v3/cluster.proto @@ -5,6 +5,7 @@ package signal18.replication_manager.v3; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/struct.proto"; +import "google/protobuf/wrappers.proto"; import "messages.proto"; option go_package = "github.com/signal18/replication-manager;repmanv3"; @@ -25,6 +26,40 @@ service ClusterPublicService { } } +service DatabasePublicService { + rpc ServerStatus(DatabaseStatus) returns (google.protobuf.BoolValue) { + // replaces + // /api/clusters/{clusterName}/need-rolling-reprov + // /api/clusters/{clusterName}/need-rolling-restart + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-master + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-slave + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-prov + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-reprov + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-restart + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-start + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-stop + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-unprov + // /api/clusters/{clusterName}/servers/{serverName}/is-master + // /api/clusters/{clusterName}/servers/{serverName}/is-slave + + // the fragment `/status` has been added to signify this is a status + // endpoint allowing us to re-use the action keywords, e.g. + // `/status/provision` is the same as the old `/need-prov` + // `/status/restart` is the same as `/need-restart` + option (google.api.http) = { + get : "/v3/clusters/{cluster.name}/{server.host}/{server.port}/status/" + "{status}" + additional_bindings { + get : "/v3/clusters/{cluster.name}/{server.host}/status/{status}" + } + additional_bindings {get : "/v3/clusters/{cluster.name}/status/{status}"} + }; + } + + // TODO: config should be behind an ACL + // /api/clusters/{clusterName}/servers/{serverName}/{serverPort}/config +} + service ClusterService { rpc GetCluster(Cluster) returns (google.protobuf.Struct) { // replaces /api/clusters/{clusterName} @@ -127,7 +162,6 @@ service ClusterService { option (google.api.http) = { // /api/clusters/{clusterName}/tests/actions/run/all // /api/clusters/{clusterName}/tests/actions/run/{testName} - // /api/clusters/{clusterName}/tests/actions/run/{testName} get : "/v3/clusters/{cluster.name}/tests/actions/run/{test_name}" }; } diff --git a/signal18/replication-manager/v3/messages.proto b/signal18/replication-manager/v3/messages.proto index 7fb27608f..c4663b82b 100644 --- a/signal18/replication-manager/v3/messages.proto +++ b/signal18/replication-manager/v3/messages.proto @@ -243,6 +243,36 @@ message ClusterSetting { Switch switch = 6; } +message Server { + string host = 1; + uint64 port = 2; + enum Type { + TYPE_UNSPECIFIED = 0; + DATABASE = 1; + PROXY = 2; + } + enum Database { + DATABASE_UNSPECIFIED = 0; + MARIADB = 1; + PERCONA = 2; + MYSQL = 3; + POSTGRESQL = 4; + } + enum Proxy { + PROXY_UNSPECIFIED = 0; + MAXSCALE = 1; + PROXYSQL = 2; + SHARDPROXY = 3; + HAPROXY = 4; + MYPROXY = 5; + EXTPROXY = 6; + SPHINX = 7; + } + Type type = 3; + Database database = 4; + Proxy proxy = 5; +} + message ClusterAction { Cluster cluster = 1; enum Action { @@ -270,35 +300,6 @@ message ClusterAction { UNPROVISION = 22; } Action action = 3; - message Server { - string host = 1; - uint64 port = 2; - enum Type { - TYPE_UNSPECIFIED = 0; - DATABASE = 1; - PROXY = 2; - } - enum Database { - DATABASE_UNSPECIFIED = 0; - MARIADB = 1; - PERCONA = 2; - MYSQL = 3; - POSTGRESQL = 4; - } - enum Proxy { - PROXY_UNSPECIFIED = 0; - MAXSCALE = 1; - PROXYSQL = 2; - SHARDPROXY = 3; - HAPROXY = 4; - MYPROXY = 5; - EXTPROXY = 6; - SPHINX = 7; - } - Type type = 3; - Database database = 4; - Proxy proxy = 5; - } Server server = 4; enum ReplicationTopology { RT_UNSPECIFIED = 0; @@ -314,6 +315,46 @@ message ClusterAction { string sharding_name = 6; } +message DatabaseStatus { + Cluster cluster = 1; + Server server = 2; + enum Status { + ACTION_UNSPECIFIED = 0; + START = 1; + STOP = 2; + RESTART = 3; + PROVISION = 4; + UNPROVISION = 5; + REPROVISION = 6; + IS_MASTER = 7; + IS_SLAVE = 8; + NEED_ROLLING_REPROV = 9; + NEED_ROLLING_RESTART = 10; + } + Status status = 3; +} + +message DatabaseAction { + Cluster cluster = 1; + Server server = 2; + enum Action { + ACTION_UNSPECIFIED = 0; + START = 1; + STOP = 2; + RESTART = 3; + PROVISION = 4; + UNPROVISION = 5; + REPROVISION = 6; + MAINTENANCE = 7; + BACKUP_PHYSICAL = 8; + BACKUP_LOGICAL = 9; + BACKUP_ERROR_LOG = 10; + BACKUP_SLOWQUERY_LOG = 11; + OPTIMIZE = 12; + } + Action action = 3; +} + enum ServiceStatus { SERVICESTATUS_UNSPECIFIED = 0; RUNNING = 1; From f37ecdca154c2b86525a415ac38c99b638384345 Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Tue, 2 Aug 2022 00:47:31 +0200 Subject: [PATCH 07/13] Introduce gRPC Client --- repmanv3/client.go | 64 +++++++++++++++++++++++++++++++++++++++++ repmanv3/client_test.go | 33 +++++++++++++++++++++ server/repmanv3.go | 10 ++++++- 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 repmanv3/client.go create mode 100644 repmanv3/client_test.go diff --git a/repmanv3/client.go b/repmanv3/client.go new file mode 100644 index 000000000..36301f68e --- /dev/null +++ b/repmanv3/client.go @@ -0,0 +1,64 @@ +package repmanv3 + +import ( + "context" + "crypto/tls" + "fmt" + "net/url" + + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" +) + +type ClientConfig struct { + Address string + TLS bool + InsecureSkipVerify bool + Auth *LoginCreds +} + +type Client struct { + ClusterServiceClient +} + +func NewConnection(ctx context.Context, conf *ClientConfig) (*grpc.ClientConn, error) { + var opts []grpc.DialOption + + if conf.Auth != nil { + opts = append(opts, grpc.WithPerRPCCredentials( + conf.Auth, + )) + } + + if conf.TLS { + addr, err := url.Parse("//" + conf.Address) + if err != nil { + return nil, fmt.Errorf("error parsing Cluster Address: %s", err) + } + + creds := credentials.NewTLS(&tls.Config{ + ServerName: addr.Hostname(), + MinVersion: tls.VersionTLS12, + InsecureSkipVerify: conf.InsecureSkipVerify, + }) + + opts = append(opts, + grpc.WithTransportCredentials(creds), + ) + } else { + opts = append(opts, grpc.WithInsecure()) + } + + return grpc.DialContext(ctx, conf.Address, opts...) +} + +func NewClient(ctx context.Context, conf *ClientConfig) (*Client, error) { + c := &Client{} + conn, err := NewConnection(ctx, conf) + if err != nil { + return nil, fmt.Errorf("Could not create new connection: %s", err) + } + c.ClusterServiceClient = NewClusterServiceClient(conn) + + return c, nil +} diff --git a/repmanv3/client_test.go b/repmanv3/client_test.go new file mode 100644 index 000000000..78f75afbd --- /dev/null +++ b/repmanv3/client_test.go @@ -0,0 +1,33 @@ +package repmanv3 + +import ( + "context" + "log" + "testing" +) + +func TestClient(t *testing.T) { + conf := &ClientConfig{ + Address: "localhost:10005", + TLS: true, + InsecureSkipVerify: true, + Auth: &LoginCreds{ + Username: "admin", + Password: "repman", + }, + } + client, err := NewClient(context.Background(), conf) + if err != nil { + t.Fatalf("Could not create new Client: %s", err) + } + + res, err := client.GetCluster(context.Background(), &Cluster{ + Name: "masterslavehaproxy", + }) + + if err != nil { + t.Fatalf("Could not GetCluster: %s", err) + } + + log.Printf("resp: %v", res) +} diff --git a/server/repmanv3.go b/server/repmanv3.go index be6ff27c6..92497e32f 100644 --- a/server/repmanv3.go +++ b/server/repmanv3.go @@ -248,7 +248,15 @@ func (s *ReplicationManager) getClusterAndUser(ctx context.Context, req v3.Conta if !ok { return cluster.APIUser{}, nil, fmt.Errorf("metadata missing") } - log.Info("md", md) + + // if a username/password was provided via the gRPC call we don't have to check JWT + if loginCreds := v3.CredentialsFromContext(ctx); loginCreds != nil { + user, err := mycluster.GetAPIUser(loginCreds.Username, loginCreds.Password) + if err != nil { + return cluster.APIUser{}, nil, err + } + return user, mycluster, nil + } auth := md.Get("authorization") if len(auth) == 0 { From a71c927f89e6c72179a8b609b55377f9f6595e8f Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Mon, 3 Oct 2022 22:46:15 +0200 Subject: [PATCH 08/13] Initial work on migrating client to v3 API --- clients/client_cmd.go | 18 + clients/client_show.go | 179 +- cluster/cluster.go | 13 +- repmanv3/client_test.go | 40 +- repmanv3/cluster.pb.go | 413 ++-- repmanv3/cluster.pb.gw.go | 49 + repmanv3/cluster_grpc.pb.go | 85 +- repmanv3/credentials.go | 52 + repmanv3/messages.pb.go | 1742 +++++++++-------- repmanv3/repmanv3.swagger.json | 38 +- repmanv3/service.desc | Bin 17418 -> 17618 bytes server/repmanv3.go | 41 +- signal18/replication-manager/v3/cluster.proto | 9 +- .../replication-manager/v3/messages.proto | 3 +- 14 files changed, 1561 insertions(+), 1121 deletions(-) create mode 100644 repmanv3/credentials.go diff --git a/clients/client_cmd.go b/clients/client_cmd.go index a8b5d40ba..4c6780977 100644 --- a/clients/client_cmd.go +++ b/clients/client_cmd.go @@ -32,6 +32,8 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" "golang.org/x/crypto/ssh/terminal" + + v3 "github.com/signal18/replication-manager/repmanv3" ) var ( @@ -77,6 +79,8 @@ var ( cliConfirm string cfgGroup string memprofile string + + v3Config *v3.ClientConfig ) type RequetParam struct { @@ -157,6 +161,20 @@ func cliInit(needcluster bool) { log.WithError(err).Fatal() return } + + // the legacy code has already received all information we need + v3Config = &v3.ClientConfig{ + Address: cliHost + ":" + cliPort, + TLS: true, + Auth: &v3.LoginCreds{ + Username: cliUser, + Password: cliPassword, + }, + } + + if cliNoCheckCert { + v3Config.InsecureSkipVerify = true + } } func cliClusterInServerList() bool { diff --git a/clients/client_show.go b/clients/client_show.go index 09aacb5c0..2244718ba 100644 --- a/clients/client_show.go +++ b/clients/client_show.go @@ -9,14 +9,20 @@ package clients import ( + "context" "encoding/json" "fmt" + "io" + "log" "os" "strings" "github.com/signal18/replication-manager/cluster" "github.com/signal18/replication-manager/server" "github.com/spf13/cobra" + "google.golang.org/protobuf/encoding/protojson" + + v3 "github.com/signal18/replication-manager/repmanv3" ) var showCmd = &cobra.Command{ @@ -26,14 +32,13 @@ var showCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { //cliClusters, err = cliGetClusters() cliInit(false) - urlpost := "" type Objects struct { Name string Settings server.Settings `json:"settings"` Servers []cluster.ServerMonitor `json:"servers"` Master cluster.ServerMonitor `json:"master"` Slaves []cluster.ServerMonitor `json:"slaves"` - Crashes []cluster.Crash `json:"crashes"` + Crashes []v3.Cluster_Crash `json:"crashes"` Alerts cluster.Alerts `json:"alerts"` } type Report struct { @@ -41,51 +46,128 @@ var showCmd = &cobra.Command{ } var myReport Report - for _, cluster := range cliClusters { + client, err := v3.NewClient(context.Background(), v3Config) + if err != nil { + log.Fatal("Could not initialize v3 Client: %s", err) + } + + for _, clusterName := range cliClusters { var myObjects Objects - myObjects.Name = cluster + myObjects.Name = clusterName if strings.Contains(cliShowObjects, "settings") { - urlpost = "https://" + cliHost + ":" + cliPort + "/api/clusters/" + cluster - res, err := cliAPICmd(urlpost, nil) - if err == nil { + c, err := client.GetCluster(context.Background(), &v3.Cluster{ + Name: clusterName, + }) + if err != nil { + log.Fatal("Error fetching GetCluster: %s", err) + } - json.Unmarshal([]byte(res), &myObjects.Settings) + // to get the Cluster response back into the Settings format we need to once + // convert it to JSON and unmarshall it again :) + buf, err := protojson.Marshal(c) + // buf, err := json.Marshal(c) + if err == nil { + json.Unmarshal(buf, &myObjects.Settings) } } if strings.Contains(cliShowObjects, "servers") { - urlpost = "https://" + cliHost + ":" + cliPort + "/api/clusters/" + cluster + "/topology/servers" - res, err := cliAPICmd(urlpost, nil) - if err == nil { - json.Unmarshal([]byte(res), &myObjects.Servers) + srv, err := RetrieveServerMonitorsFromTopology(client, clusterName, v3.TopologyRetrieval_SERVERS) + if err != nil { + log.Fatalf("Could not retrieve ServerMonitors: %s", err) } + myObjects.Servers = append(myObjects.Servers, srv...) } if strings.Contains(cliShowObjects, "master") { - urlpost = "https://" + cliHost + ":" + cliPort + "/api/clusters/" + cluster + "/topology/master" - res, err := cliAPICmd(urlpost, nil) - if err == nil { - json.Unmarshal([]byte(res), &myObjects.Master) + srv, err := RetrieveServerMonitorsFromTopology(client, clusterName, v3.TopologyRetrieval_MASTER) + if err != nil { + if !strings.Contains(err.Error(), v3.ErrClusterMasterNotSet.Error()) { + log.Fatalf("Could not retrieve ServerMonitors: %s", err) + } + } + if srv != nil { + myObjects.Master = srv[0] } } if strings.Contains(cliShowObjects, "slaves") { - urlpost = "https://" + cliHost + ":" + cliPort + "/api/clusters/" + cluster + "/topology/master" - res, err := cliAPICmd(urlpost, nil) - if err == nil { - json.Unmarshal([]byte(res), &myObjects.Slaves) + srv, err := RetrieveServerMonitorsFromTopology(client, clusterName, v3.TopologyRetrieval_SLAVES) + if err != nil { + log.Fatalf("Could not retrieve ServerMonitors: %s", err) } + myObjects.Slaves = append(myObjects.Slaves, srv...) } if strings.Contains(cliShowObjects, "crashes") { - urlpost = "https://" + cliHost + ":" + cliPort + "/api/clusters/" + cluster + "/topology/crashes" - res, err := cliAPICmd(urlpost, nil) - if err == nil { - json.Unmarshal([]byte(res), &myObjects.Crashes) + stream, err := client.RetrieveFromTopology(context.Background(), + &v3.TopologyRetrieval{ + Cluster: &v3.Cluster{ + Name: clusterName, + }, + Retrieve: v3.TopologyRetrieval_CRASHES, + }) + + if err != nil { + log.Fatalf("Error fetching RetrieveFromTopology: %s", err) + } + + for { + st, err := stream.Recv() + if err == io.EOF { + break + } + + if err != nil { + log.Fatalf("Error retrieving topology: %s", err) + } + + buf, err := st.MarshalJSON() + if err != nil { + log.Fatalf("Error marshalling servermonitor: %s", err) + } + + var crash v3.Cluster_Crash + err = protojson.Unmarshal(buf, &crash) + if err != nil { + log.Fatalf("Error unmarshalling servermonitor: %s", err) + } + + myObjects.Crashes = append(myObjects.Crashes, crash) } } if strings.Contains(cliShowObjects, "alerts") { - urlpost = "https://" + cliHost + ":" + cliPort + "/api/clusters/" + cluster + "/topology/alerts" - res, err := cliAPICmd(urlpost, nil) - if err == nil { - json.Unmarshal([]byte(res), &myObjects.Alerts) + stream, err := client.RetrieveFromTopology(context.Background(), + &v3.TopologyRetrieval{ + Cluster: &v3.Cluster{ + Name: clusterName, + }, + Retrieve: v3.TopologyRetrieval_ALERTS, + }) + + if err != nil { + log.Fatalf("Error fetching RetrieveFromTopology: %s", err) + } + + for { + st, err := stream.Recv() + if err == io.EOF { + break + } + + if err != nil { + log.Fatalf("Error retrieving topology: %s", err) + } + + buf, err := st.MarshalJSON() + if err != nil { + log.Fatalf("Error marshalling servermonitor: %s", err) + } + + var alerts cluster.Alerts + err = json.Unmarshal(buf, &alerts) + if err != nil { + log.Fatalf("Error unmarshalling servermonitor: %s", err) + } + + myObjects.Alerts = alerts } } myReport.Clusters = append(myReport.Clusters, myObjects) @@ -103,3 +185,44 @@ var showCmd = &cobra.Command{ }, } + +func RetrieveServerMonitorsFromTopology(client *v3.Client, clusterName string, retrieve v3.TopologyRetrieval_Retrieval) ([]cluster.ServerMonitor, error) { + var list []cluster.ServerMonitor + stream, err := client.RetrieveFromTopology(context.Background(), + &v3.TopologyRetrieval{ + Cluster: &v3.Cluster{ + Name: clusterName, + }, + Retrieve: retrieve, + }) + + if err != nil { + return nil, fmt.Errorf("Error fetching RetrieveFromTopology: %s", err) + } + + for { + st, err := stream.Recv() + if err == io.EOF { + break + } + + if err != nil { + return nil, fmt.Errorf("Error retrieving topology: %s", err) + } + + buf, err := st.MarshalJSON() + if err != nil { + return nil, fmt.Errorf("Error marshalling servermonitor: %s", err) + } + + var smBuf cluster.ServerMonitor + err = json.Unmarshal(buf, &smBuf) + if err != nil { + return nil, fmt.Errorf("Error unmarshalling servermonitor: %s", err) + } + + list = append(list, smBuf) + } + + return list, nil +} diff --git a/cluster/cluster.go b/cluster/cluster.go index dd2b4c53e..72afbb686 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -33,6 +33,8 @@ import ( logsqlerr "github.com/sirupsen/logrus" logsqlgen "github.com/sirupsen/logrus" "golang.org/x/crypto/ssh" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/types/known/structpb" ) // A Clusters is a collection of Cluster objects @@ -175,7 +177,7 @@ type Cluster struct { crcTable *crc64.Table } -func ClusterToProtoCluster(c *Cluster) *v3.Cluster { +func (c *Cluster) ToProtoCluster() *v3.Cluster { out := &v3.Cluster{ Name: c.Name, Tenant: c.Tenant, @@ -226,6 +228,15 @@ func ClusterToProtoCluster(c *Cluster) *v3.Cluster { VmType: c.VMType, } + b, err := json.Marshal(c.Conf) + if err == nil { + conf := &structpb.Struct{} + err = protojson.Unmarshal(b, conf) + if err == nil { + out.Conf = conf + } + } + return out } diff --git a/repmanv3/client_test.go b/repmanv3/client_test.go index 78f75afbd..84e2cb909 100644 --- a/repmanv3/client_test.go +++ b/repmanv3/client_test.go @@ -2,11 +2,14 @@ package repmanv3 import ( "context" + "io" "log" "testing" + + "google.golang.org/protobuf/types/known/emptypb" ) -func TestClient(t *testing.T) { +func getClient(t *testing.T) (*Client, error) { conf := &ClientConfig{ Address: "localhost:10005", TLS: true, @@ -21,6 +24,15 @@ func TestClient(t *testing.T) { t.Fatalf("Could not create new Client: %s", err) } + return client, err +} + +func TestClient(t *testing.T) { + client, err := getClient(t) + if err != nil { + t.Fatalf("Could not get test client: %s", err) + } + res, err := client.GetCluster(context.Background(), &Cluster{ Name: "masterslavehaproxy", }) @@ -31,3 +43,29 @@ func TestClient(t *testing.T) { log.Printf("resp: %v", res) } + +func Test_ListClusters(t *testing.T) { + client, err := getClient(t) + if err != nil { + t.Fatalf("Could not get test client: %s", err) + } + + stream, err := client.ListClusters(context.Background(), &emptypb.Empty{}) + if err != nil { + t.Fatalf("Could not ListClusters: %s", err) + } + + for { + cluster, err := stream.Recv() + if err == io.EOF { + break + } + + if err != nil { + t.Fatalf("Error while receiving incoming ListClusters: %s", err) + } + + t.Logf("cluster: %s", cluster.Name) + t.Logf("cluster: %v", cluster.Conf) + } +} diff --git a/repmanv3/cluster.pb.go b/repmanv3/cluster.pb.go index 42d9766b0..fc048d31f 100644 --- a/repmanv3/cluster.pb.go +++ b/repmanv3/cluster.pb.go @@ -77,199 +77,206 @@ var file_cluster_proto_rawDesc = []byte{ 0x7d, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x7d, - 0x32, 0x84, 0x16, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x32, 0xff, 0x16, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, - 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x46, 0x6f, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x24, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x84, 0x03, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x9b, 0x02, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x94, 0x02, 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x43, - 0x12, 0x41, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x7d, 0x5a, 0x51, 0x12, 0x4f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x65, 0x74, 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x7d, 0x5a, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2f, 0x7b, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xda, 0x04, 0x0a, 0x14, - 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xf9, 0x03, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0xf2, 0x03, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, - 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, - 0x5a, 0x58, 0x12, 0x56, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x12, 0x68, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x80, 0x01, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x46, 0x6f, 0x72, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x84, 0x03, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x2f, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x9b, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x94, 0x02, 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x7d, 0x5a, 0x51, + 0x12, 0x4f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x65, 0x74, 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x7d, 0x5a, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2f, 0x7b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xda, 0x04, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x66, 0x6f, + 0x72, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xf9, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xf2, + 0x03, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, - 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x7d, 0x5a, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, + 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x7b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, + 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x5a, 0x58, 0x12, 0x56, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x7d, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x38, - 0x22, 0x2e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, - 0x3a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x12, 0x50, 0x65, 0x72, - 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, - 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x7d, + 0x5a, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x5a, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x38, 0x22, 0x2e, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x06, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x12, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x33, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, + 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x32, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, + 0x6c, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, - 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, - 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x75, 0x6e, 0x2f, 0x7b, 0x74, - 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x14, 0x52, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, - 0x67, 0x79, 0x12, 0x32, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, - 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, + 0x20, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, + 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, + 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, - 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x24, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, - 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, - 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x33, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, - 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, - 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, - 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, + 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, - 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, - 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, 0x02, 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, 0x12, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, - 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, - 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, - 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0xbf, 0x02, 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x5a, 0x6d, 0x12, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, + 0x71, 0x12, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x7d, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, + 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_cluster_proto_goTypes = []interface{}{ (*Cluster)(nil), // 0: signal18.replication_manager.v3.Cluster (*DatabaseStatus)(nil), // 1: signal18.replication_manager.v3.DatabaseStatus - (*ClusterSetting)(nil), // 2: signal18.replication_manager.v3.ClusterSetting - (*ClusterAction)(nil), // 3: signal18.replication_manager.v3.ClusterAction - (*ClusterTest)(nil), // 4: signal18.replication_manager.v3.ClusterTest - (*TopologyRetrieval)(nil), // 5: signal18.replication_manager.v3.TopologyRetrieval - (*TableAction)(nil), // 6: signal18.replication_manager.v3.TableAction - (*StatusMessage)(nil), // 7: signal18.replication_manager.v3.StatusMessage - (*emptypb.Empty)(nil), // 8: google.protobuf.Empty + (*emptypb.Empty)(nil), // 2: google.protobuf.Empty + (*ClusterSetting)(nil), // 3: signal18.replication_manager.v3.ClusterSetting + (*ClusterAction)(nil), // 4: signal18.replication_manager.v3.ClusterAction + (*ClusterTest)(nil), // 5: signal18.replication_manager.v3.ClusterTest + (*TopologyRetrieval)(nil), // 6: signal18.replication_manager.v3.TopologyRetrieval + (*TableAction)(nil), // 7: signal18.replication_manager.v3.TableAction + (*StatusMessage)(nil), // 8: signal18.replication_manager.v3.StatusMessage (*wrapperspb.BoolValue)(nil), // 9: google.protobuf.BoolValue (*structpb.Struct)(nil), // 10: google.protobuf.Struct (*Certificate)(nil), // 11: signal18.replication_manager.v3.Certificate @@ -282,36 +289,38 @@ var file_cluster_proto_depIdxs = []int32{ 0, // 1: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:input_type -> signal18.replication_manager.v3.Cluster 1, // 2: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:input_type -> signal18.replication_manager.v3.DatabaseStatus 0, // 3: signal18.replication_manager.v3.ClusterService.GetCluster:input_type -> signal18.replication_manager.v3.Cluster - 0, // 4: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:input_type -> signal18.replication_manager.v3.Cluster - 2, // 5: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:input_type -> signal18.replication_manager.v3.ClusterSetting - 3, // 6: signal18.replication_manager.v3.ClusterService.PerformClusterAction:input_type -> signal18.replication_manager.v3.ClusterAction - 4, // 7: signal18.replication_manager.v3.ClusterService.PerformClusterTest:input_type -> signal18.replication_manager.v3.ClusterTest - 5, // 8: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:input_type -> signal18.replication_manager.v3.TopologyRetrieval - 0, // 9: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster - 0, // 10: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster - 0, // 11: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster - 0, // 12: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster - 0, // 13: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster - 0, // 14: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster - 6, // 15: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction - 7, // 16: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage - 8, // 17: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty - 9, // 18: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:output_type -> google.protobuf.BoolValue - 10, // 19: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> google.protobuf.Struct - 10, // 20: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct - 8, // 21: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty - 8, // 22: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty - 10, // 23: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct - 10, // 24: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct - 11, // 25: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate - 12, // 26: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup - 13, // 27: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag - 0, // 28: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster - 10, // 29: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct - 14, // 30: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table - 8, // 31: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty - 16, // [16:32] is the sub-list for method output_type - 0, // [0:16] is the sub-list for method input_type + 2, // 4: signal18.replication_manager.v3.ClusterService.ListClusters:input_type -> google.protobuf.Empty + 0, // 5: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:input_type -> signal18.replication_manager.v3.Cluster + 3, // 6: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:input_type -> signal18.replication_manager.v3.ClusterSetting + 4, // 7: signal18.replication_manager.v3.ClusterService.PerformClusterAction:input_type -> signal18.replication_manager.v3.ClusterAction + 5, // 8: signal18.replication_manager.v3.ClusterService.PerformClusterTest:input_type -> signal18.replication_manager.v3.ClusterTest + 6, // 9: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:input_type -> signal18.replication_manager.v3.TopologyRetrieval + 0, // 10: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster + 0, // 11: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster + 0, // 12: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster + 0, // 13: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster + 0, // 14: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster + 0, // 15: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster + 7, // 16: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction + 8, // 17: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage + 2, // 18: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty + 9, // 19: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:output_type -> google.protobuf.BoolValue + 0, // 20: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> signal18.replication_manager.v3.Cluster + 0, // 21: signal18.replication_manager.v3.ClusterService.ListClusters:output_type -> signal18.replication_manager.v3.Cluster + 10, // 22: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct + 2, // 23: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty + 2, // 24: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty + 10, // 25: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct + 10, // 26: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct + 11, // 27: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate + 12, // 28: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup + 13, // 29: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag + 0, // 30: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster + 10, // 31: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct + 14, // 32: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table + 2, // 33: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty + 17, // [17:34] is the sub-list for method output_type + 0, // [0:17] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/repmanv3/cluster.pb.gw.go b/repmanv3/cluster.pb.gw.go index e10de81c9..9eaf22989 100644 --- a/repmanv3/cluster.pb.gw.go +++ b/repmanv3/cluster.pb.gw.go @@ -21,6 +21,7 @@ import ( "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -589,6 +590,23 @@ func local_request_ClusterService_GetCluster_0(ctx context.Context, marshaler ru } +func request_ClusterService_ListClusters_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (ClusterService_ListClustersClient, runtime.ServerMetadata, error) { + var protoReq emptypb.Empty + var metadata runtime.ServerMetadata + + stream, err := client.ListClusters(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + var ( filter_ClusterService_GetSettingsForCluster_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -3052,6 +3070,13 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ClusterService_ListClusters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + mux.Handle("GET", pattern_ClusterService_GetSettingsForCluster_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3779,6 +3804,26 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ClusterService_ListClusters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/ListClusters", runtime.WithHTTPPathPattern("/v3/clusters")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_ListClusters_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_ListClusters_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ClusterService_GetSettingsForCluster_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -4265,6 +4310,8 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve var ( pattern_ClusterService_GetCluster_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v3", "clusters", "name"}, "")) + pattern_ClusterService_ListClusters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v3", "clusters"}, "")) + pattern_ClusterService_GetSettingsForCluster_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "settings"}, "")) pattern_ClusterService_SetActionForClusterSettings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"v3", "clusters", "cluster.name", "settings", "actions", "action"}, "")) @@ -4317,6 +4364,8 @@ var ( var ( forward_ClusterService_GetCluster_0 = runtime.ForwardResponseMessage + forward_ClusterService_ListClusters_0 = runtime.ForwardResponseStream + forward_ClusterService_GetSettingsForCluster_0 = runtime.ForwardResponseMessage forward_ClusterService_SetActionForClusterSettings_0 = runtime.ForwardResponseMessage diff --git a/repmanv3/cluster_grpc.pb.go b/repmanv3/cluster_grpc.pb.go index adea8c344..06e3114ad 100644 --- a/repmanv3/cluster_grpc.pb.go +++ b/repmanv3/cluster_grpc.pb.go @@ -229,7 +229,8 @@ var DatabasePublicService_ServiceDesc = grpc.ServiceDesc{ // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ClusterServiceClient interface { - GetCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*structpb.Struct, error) + GetCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Cluster, error) + ListClusters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (ClusterService_ListClustersClient, error) GetSettingsForCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*structpb.Struct, error) SetActionForClusterSettings(ctx context.Context, in *ClusterSetting, opts ...grpc.CallOption) (*emptypb.Empty, error) PerformClusterAction(ctx context.Context, in *ClusterAction, opts ...grpc.CallOption) (*emptypb.Empty, error) @@ -252,8 +253,8 @@ func NewClusterServiceClient(cc grpc.ClientConnInterface) ClusterServiceClient { return &clusterServiceClient{cc} } -func (c *clusterServiceClient) GetCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*structpb.Struct, error) { - out := new(structpb.Struct) +func (c *clusterServiceClient) GetCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Cluster, error) { + out := new(Cluster) err := c.cc.Invoke(ctx, "/signal18.replication_manager.v3.ClusterService/GetCluster", in, out, opts...) if err != nil { return nil, err @@ -261,6 +262,38 @@ func (c *clusterServiceClient) GetCluster(ctx context.Context, in *Cluster, opts return out, nil } +func (c *clusterServiceClient) ListClusters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (ClusterService_ListClustersClient, error) { + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[0], "/signal18.replication_manager.v3.ClusterService/ListClusters", opts...) + if err != nil { + return nil, err + } + x := &clusterServiceListClustersClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type ClusterService_ListClustersClient interface { + Recv() (*Cluster, error) + grpc.ClientStream +} + +type clusterServiceListClustersClient struct { + grpc.ClientStream +} + +func (x *clusterServiceListClustersClient) Recv() (*Cluster, error) { + m := new(Cluster) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *clusterServiceClient) GetSettingsForCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*structpb.Struct, error) { out := new(structpb.Struct) err := c.cc.Invoke(ctx, "/signal18.replication_manager.v3.ClusterService/GetSettingsForCluster", in, out, opts...) @@ -298,7 +331,7 @@ func (c *clusterServiceClient) PerformClusterTest(ctx context.Context, in *Clust } func (c *clusterServiceClient) RetrieveFromTopology(ctx context.Context, in *TopologyRetrieval, opts ...grpc.CallOption) (ClusterService_RetrieveFromTopologyClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[0], "/signal18.replication_manager.v3.ClusterService/RetrieveFromTopology", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[1], "/signal18.replication_manager.v3.ClusterService/RetrieveFromTopology", opts...) if err != nil { return nil, err } @@ -339,7 +372,7 @@ func (c *clusterServiceClient) GetClientCertificates(ctx context.Context, in *Cl } func (c *clusterServiceClient) GetBackups(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetBackupsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[1], "/signal18.replication_manager.v3.ClusterService/GetBackups", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[2], "/signal18.replication_manager.v3.ClusterService/GetBackups", opts...) if err != nil { return nil, err } @@ -371,7 +404,7 @@ func (x *clusterServiceGetBackupsClient) Recv() (*Backup, error) { } func (c *clusterServiceClient) GetTags(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetTagsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[2], "/signal18.replication_manager.v3.ClusterService/GetTags", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[3], "/signal18.replication_manager.v3.ClusterService/GetTags", opts...) if err != nil { return nil, err } @@ -403,7 +436,7 @@ func (x *clusterServiceGetTagsClient) Recv() (*Tag, error) { } func (c *clusterServiceClient) GetShards(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetShardsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[3], "/signal18.replication_manager.v3.ClusterService/GetShards", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[4], "/signal18.replication_manager.v3.ClusterService/GetShards", opts...) if err != nil { return nil, err } @@ -435,7 +468,7 @@ func (x *clusterServiceGetShardsClient) Recv() (*Cluster, error) { } func (c *clusterServiceClient) GetQueryRules(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetQueryRulesClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[4], "/signal18.replication_manager.v3.ClusterService/GetQueryRules", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[5], "/signal18.replication_manager.v3.ClusterService/GetQueryRules", opts...) if err != nil { return nil, err } @@ -467,7 +500,7 @@ func (x *clusterServiceGetQueryRulesClient) Recv() (*structpb.Struct, error) { } func (c *clusterServiceClient) GetSchema(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetSchemaClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[5], "/signal18.replication_manager.v3.ClusterService/GetSchema", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[6], "/signal18.replication_manager.v3.ClusterService/GetSchema", opts...) if err != nil { return nil, err } @@ -511,7 +544,8 @@ func (c *clusterServiceClient) ExecuteTableAction(ctx context.Context, in *Table // All implementations must embed UnimplementedClusterServiceServer // for forward compatibility type ClusterServiceServer interface { - GetCluster(context.Context, *Cluster) (*structpb.Struct, error) + GetCluster(context.Context, *Cluster) (*Cluster, error) + ListClusters(*emptypb.Empty, ClusterService_ListClustersServer) error GetSettingsForCluster(context.Context, *Cluster) (*structpb.Struct, error) SetActionForClusterSettings(context.Context, *ClusterSetting) (*emptypb.Empty, error) PerformClusterAction(context.Context, *ClusterAction) (*emptypb.Empty, error) @@ -531,9 +565,12 @@ type ClusterServiceServer interface { type UnimplementedClusterServiceServer struct { } -func (UnimplementedClusterServiceServer) GetCluster(context.Context, *Cluster) (*structpb.Struct, error) { +func (UnimplementedClusterServiceServer) GetCluster(context.Context, *Cluster) (*Cluster, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCluster not implemented") } +func (UnimplementedClusterServiceServer) ListClusters(*emptypb.Empty, ClusterService_ListClustersServer) error { + return status.Errorf(codes.Unimplemented, "method ListClusters not implemented") +} func (UnimplementedClusterServiceServer) GetSettingsForCluster(context.Context, *Cluster) (*structpb.Struct, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSettingsForCluster not implemented") } @@ -601,6 +638,27 @@ func _ClusterService_GetCluster_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _ClusterService_ListClusters_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(emptypb.Empty) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ClusterServiceServer).ListClusters(m, &clusterServiceListClustersServer{stream}) +} + +type ClusterService_ListClustersServer interface { + Send(*Cluster) error + grpc.ServerStream +} + +type clusterServiceListClustersServer struct { + grpc.ServerStream +} + +func (x *clusterServiceListClustersServer) Send(m *Cluster) error { + return x.ServerStream.SendMsg(m) +} + func _ClusterService_GetSettingsForCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Cluster) if err := dec(in); err != nil { @@ -872,6 +930,11 @@ var ClusterService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{ + { + StreamName: "ListClusters", + Handler: _ClusterService_ListClusters_Handler, + ServerStreams: true, + }, { StreamName: "RetrieveFromTopology", Handler: _ClusterService_RetrieveFromTopology_Handler, diff --git a/repmanv3/credentials.go b/repmanv3/credentials.go new file mode 100644 index 000000000..807e0ba85 --- /dev/null +++ b/repmanv3/credentials.go @@ -0,0 +1,52 @@ +package repmanv3 + +import ( + context "context" + + "google.golang.org/grpc/metadata" +) + +type LoginCreds struct { + Username string + Password string +} + +func NewCredentials(username string, password string) *LoginCreds { + return &LoginCreds{ + Username: username, + Password: password, + } +} + +func (c *LoginCreds) Validate() bool { + if c.Username == `` || c.Password == `` { + return false + } + + return true +} + +func (c *LoginCreds) GetRequestMetadata(context.Context, ...string) (map[string]string, error) { + return map[string]string{ + "username": c.Username, + "password": c.Password, + }, nil +} + +// TODO: this has to be set to true +func (c *LoginCreds) RequireTransportSecurity() bool { + return false +} + +func CredentialsFromContext(ctx context.Context) *LoginCreds { + if md, ok := metadata.FromIncomingContext(ctx); ok { + if len(md["username"]) > 0 && len(md["password"]) > 0 { + return &LoginCreds{ + Username: md["username"][0], + Password: md["password"][0], + } + } + } + + return nil +} diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index f87a715bc..ba9208488 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -10,6 +10,7 @@ import ( gtid "github.com/signal18/replication-manager/utils/gtid" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" reflect "reflect" sync "sync" ) @@ -1527,7 +1528,7 @@ type Cluster struct { WaitingSwitchover int32 `protobuf:"varint,40,opt,name=waiting_switchover,json=waitingSwitchover,proto3" json:"waiting_switchover,omitempty"` WaitingFailover int32 `protobuf:"varint,41,opt,name=waiting_failover,json=waitingFailover,proto3" json:"waiting_failover,omitempty"` Crashes []*Cluster_Crash `protobuf:"bytes,42,rep,name=crashes,json=dbServersCrashes,proto3" json:"crashes,omitempty"` - // config.Config Conf = 43 [json_name="config"]; + Conf *structpb.Struct `protobuf:"bytes,43,opt,name=conf,json=config,proto3" json:"conf,omitempty"` // configurator.Configurator Configurator = 44 [json_name="configurator"]; // []VariableDiff DiffVariables = 45 [json_name="diffVariables"]; // s18log.HttpLog Log = 46 [json_name="log"]; @@ -1867,6 +1868,13 @@ func (x *Cluster) GetCrashes() []*Cluster_Crash { return nil } +func (x *Cluster) GetConf() *structpb.Struct { + if x != nil { + return x.Conf + } + return nil +} + func (x *Cluster) GetMonitorType() map[string]string { if x != nil { return x.MonitorType @@ -3076,861 +3084,865 @@ var file_messages_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x1a, 0x0a, 0x67, 0x74, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, - 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x41, - 0x0a, 0x0d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x22, 0xcc, 0x16, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, - 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x21, 0x0a, 0x0e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x64, 0x62, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, - 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, - 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0b, 0x66, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, - 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x73, 0x70, 0x6c, 0x69, - 0x74, 0x5f, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, - 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, - 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, - 0x10, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4c, 0x6f, 0x73, 0x74, 0x4d, - 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x64, 0x6f, - 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x44, 0x6f, 0x77, 0x6e, - 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, - 0x6f, 0x77, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1f, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, - 0x6c, 0x6c, 0x5f, 0x64, 0x62, 0x5f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x44, 0x62, 0x55, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, - 0x66, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x69, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, - 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x69, 0x73, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, - 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, - 0x0a, 0x17, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, - 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x12, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, - 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x19, 0x69, 0x73, 0x5f, - 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, - 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, - 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x48, 0x0a, 0x21, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x1d, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, - 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x46, - 0x0a, 0x20, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x70, 0x72, - 0x6f, 0x76, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x12, 0x37, 0x0a, 0x18, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, - 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x72, - 0x6f, 0x76, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x12, - 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x6e, 0x6f, - 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, - 0x69, 0x6e, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x61, 0x70, - 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x09, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x5f, - 0x61, 0x6c, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x6c, 0x65, 0x61, 0x6e, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x74, - 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, - 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, - 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x70, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x1f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, - 0x6e, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x70, - 0x69, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x53, 0x70, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x62, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x62, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x62, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x64, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x71, 0x70, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x71, 0x70, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x68, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x62, 0x74, 0x6c, 0x73, 0x5f, - 0x63, 0x65, 0x72, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, 0x76, 0x65, - 0x44, 0x42, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x68, 0x61, 0x76, - 0x65, 0x5f, 0x64, 0x62, 0x74, 0x6c, 0x73, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x65, 0x72, 0x74, - 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, - 0x53, 0x4f, 0x6c, 0x64, 0x43, 0x65, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x61, 0x69, 0x74, - 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x12, - 0x2d, 0x0a, 0x12, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x77, 0x61, 0x69, - 0x74, 0x69, 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x29, - 0x0a, 0x10, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, - 0x67, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x07, 0x63, 0x72, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, + 0x33, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x0a, 0x67, 0x74, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, 0x09, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x12, 0x4a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x41, 0x0a, 0x0d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0xfb, 0x16, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, + 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x21, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x64, 0x62, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, + 0x12, 0x25, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x74, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x5f, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x66, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, + 0x62, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x53, + 0x70, 0x6c, 0x69, 0x74, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x73, 0x5f, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x69, + 0x73, 0x5f, 0x6c, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4c, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x6a, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x26, + 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x77, + 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1f, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, + 0x5f, 0x64, 0x62, 0x5f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, + 0x41, 0x6c, 0x6c, 0x44, 0x62, 0x55, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, + 0x46, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x70, + 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, + 0x73, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x17, + 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x5f, + 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, + 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, + 0x78, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x19, 0x69, 0x73, 0x5f, 0x6e, 0x65, + 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, 0x4e, 0x65, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x48, 0x0a, 0x21, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, + 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x69, + 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x6f, + 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x46, 0x0a, 0x20, + 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x70, 0x72, 0x6f, 0x76, 0x12, 0x37, 0x0a, 0x18, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x76, + 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x76, 0x12, 0x26, 0x0a, + 0x0f, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, + 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x69, 0x6e, + 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x61, 0x70, 0x74, 0x75, + 0x72, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x09, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x61, 0x6c, + 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, + 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x70, 0x69, 0x6e, + 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x53, + 0x70, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x62, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x62, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x62, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x64, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, + 0x03, 0x71, 0x70, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x71, 0x70, 0x73, 0x12, + 0x26, 0x0a, 0x0f, 0x68, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x62, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, + 0x72, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, 0x76, 0x65, 0x44, 0x42, + 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x68, 0x61, 0x76, 0x65, 0x5f, + 0x64, 0x62, 0x74, 0x6c, 0x73, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x26, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x61, 0x76, 0x65, 0x44, 0x42, 0x54, 0x4c, 0x53, 0x4f, + 0x6c, 0x64, 0x43, 0x65, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, + 0x67, 0x5f, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x12, 0x2d, 0x0a, + 0x12, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, + 0x76, 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x77, 0x61, 0x69, 0x74, 0x69, + 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, + 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x07, 0x63, 0x72, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x43, 0x72, 0x61, 0x73, 0x68, 0x52, 0x10, 0x64, 0x62, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x73, 0x43, 0x72, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x63, 0x6f, + 0x6e, 0x66, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5c, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x39, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x0d, 0x74, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x66, 0x73, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x53, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x61, 0x73, 0x68, 0x52, 0x10, 0x64, 0x62, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x73, 0x43, 0x72, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x0c, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x32, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x0d, 0x74, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x33, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, - 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x66, - 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x53, 0x0a, 0x09, 0x64, 0x69, - 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x07, + 0x76, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x36, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x4d, 0x0a, 0x07, 0x76, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x36, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x6d, 0x54, 0x79, 0x70, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xab, - 0x03, 0x0a, 0x05, 0x43, 0x72, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, - 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, - 0x69, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, - 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, - 0x77, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, - 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x65, 0x77, - 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, - 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x6c, 0x61, - 0x76, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x1b, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, - 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x11, - 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6f, 0x5f, 0x67, 0x74, 0x69, 0x64, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x74, 0x69, 0x64, 0x52, 0x0e, - 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x4f, 0x47, 0x74, 0x69, 0x64, 0x12, 0x2c, - 0x0a, 0x12, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6c, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x55, 0x52, 0x4c, 0x1a, 0x3e, 0x0a, 0x10, - 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, - 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, - 0x0b, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xab, 0x03, 0x0a, 0x05, + 0x43, 0x72, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, + 0x12, 0x35, 0x0a, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, + 0x72, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x77, 0x5f, 0x6d, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, + 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, + 0x50, 0x6f, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, + 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x6c, + 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x66, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6f, 0x5f, 0x67, 0x74, 0x69, 0x64, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x74, 0x69, 0x64, 0x52, 0x0e, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x4f, 0x47, 0x74, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x55, 0x52, 0x4c, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, - 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe3, 0x20, + 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, - 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, - 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, - 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, - 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, - 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, - 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, - 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, - 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, - 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, - 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, - 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, - 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, - 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, - 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, - 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, - 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, - 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, - 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, - 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, - 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, - 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, - 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, - 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, - 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, - 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, - 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, - 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, - 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, - 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, - 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, - 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, - 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, - 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, - 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, - 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, - 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, - 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, - 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, - 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, - 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, - 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, - 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, - 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, - 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, - 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, + 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, + 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, + 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, + 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, + 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, + 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, + 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, + 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, + 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, + 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, + 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, + 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, + 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, + 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, + 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, + 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, + 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, + 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, + 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, + 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, + 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, + 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, + 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, + 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, + 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, + 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, + 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, - 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, - 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, - 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, - 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, - 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, - 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, - 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, - 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, - 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, - 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, - 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, - 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, + 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, + 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, + 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, + 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, + 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, + 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, + 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, + 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, + 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, + 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, + 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, + 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, + 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, + 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, + 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, + 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, + 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, + 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, + 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, + 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, + 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, + 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, + 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, + 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, - 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, - 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, - 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, - 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, - 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, - 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, - 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, - 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, - 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, - 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, - 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, - 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, - 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, - 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, - 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, - 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, - 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, - 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, - 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, - 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, - 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, - 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, - 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, - 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, - 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, - 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, - 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, - 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, - 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, - 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, - 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, - 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, - 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, - 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, - 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, - 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, - 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, - 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, - 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, - 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, - 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, - 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, - 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, - 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, - 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, - 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, - 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, - 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, - 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, - 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, - 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, - 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, - 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, - 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, - 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, - 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, - 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, - 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, - 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, - 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, - 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, - 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, - 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, - 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, - 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, - 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, - 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, - 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, - 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, - 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, - 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, - 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, - 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, - 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, - 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, + 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, + 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, + 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, + 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, + 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, + 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, + 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, + 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, + 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, + 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, + 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, + 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, + 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, + 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, + 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, + 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, + 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, + 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, + 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, + 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, + 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, + 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, + 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, + 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, + 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, + 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, + 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, + 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, + 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, + 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, + 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, + 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, + 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, + 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, + 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, + 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, + 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, + 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, + 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, + 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, + 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, + 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, + 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, + 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, + 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, + 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, + 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, + 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, + 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, + 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, + 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, + 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, + 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, + 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, + 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, + 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, + 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, + 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, + 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, + 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, + 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, + 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, + 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, + 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, + 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, + 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, + 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, + 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, + 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, + 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, + 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, + 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, + 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, + 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, + 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, + 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, + 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, + 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, + 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, + 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, + 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, - 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, - 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, - 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, - 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, - 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, - 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, - 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, - 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, - 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, - 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, - 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, - 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, - 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, - 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, - 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, - 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, - 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, - 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0x97, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, - 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, + 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, + 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, + 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, + 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, + 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, + 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, + 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, + 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, + 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, + 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, + 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, + 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, + 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, + 0x47, 0x10, 0x0d, 0x22, 0x97, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, + 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, + 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, + 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, + 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, + 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, + 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, + 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, + 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, + 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, 0xe1, 0x07, + 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, + 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, + 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, + 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, + 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, + 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, + 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, + 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, + 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, + 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, + 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, + 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, + 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, + 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, + 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, + 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, + 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, + 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, + 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, + 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, + 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, + 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, + 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, + 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, + 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, + 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, + 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, + 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, + 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, + 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, + 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, + 0x07, 0x22, 0xab, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, - 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, - 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, - 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, - 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, - 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, - 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, - 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, - 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, - 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, - 0x22, 0xe1, 0x07, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, + 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, + 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, + 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, + 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, + 0x0d, 0x0a, 0x09, 0x49, 0x53, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x07, 0x12, 0x0c, + 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, + 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, + 0x52, 0x4f, 0x56, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, + 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x0a, 0x22, + 0xd3, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, - 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x06, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, - 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, - 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, - 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, - 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, - 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, - 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, - 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, - 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, - 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, - 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, - 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, - 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, - 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, - 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, - 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, - 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, - 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, - 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, - 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, - 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, - 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, - 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, - 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, - 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, - 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, - 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, - 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, - 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, - 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, - 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, - 0x45, 0x50, 0x10, 0x07, 0x22, 0xab, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc3, 0x01, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, - 0x4f, 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, - 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, - 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, - 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x53, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, - 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x08, 0x12, - 0x17, 0x0a, 0x13, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, - 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x45, 0x45, 0x44, - 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, - 0x10, 0x0a, 0x22, 0xd3, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x06, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, - 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, - 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, - 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, - 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, - 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, - 0x49, 0x43, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0a, - 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x51, - 0x55, 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, - 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x0c, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, - 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, - 0xae, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, - 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x76, 0x65, 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, - 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, - 0x4c, 0x45, 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, - 0x45, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, - 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, - 0x4f, 0x58, 0x49, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, - 0x22, 0x79, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, - 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, - 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, - 0x54, 0x61, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, + 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x55, + 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, + 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0f, 0x0a, + 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x07, 0x12, 0x13, + 0x0a, 0x0f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, + 0x4c, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, + 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, 0x43, 0x4b, 0x55, + 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0a, 0x12, 0x18, 0x0a, + 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x51, 0x55, 0x45, 0x52, + 0x59, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, + 0x49, 0x5a, 0x45, 0x10, 0x0c, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, - 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, - 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, - 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, - 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, - 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, - 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, - 0x6e, 0x63, 0x22, 0xf9, 0x11, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, - 0x73, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, 0x0a, + 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, + 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x65, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x10, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, - 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x75, 0x69, - 0x74, 0x65, 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, - 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, - 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, - 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, - 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, - 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x74, 0x69, 0x64, 0x10, 0x06, 0x12, - 0x28, 0x0a, 0x24, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, - 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, - 0x6f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, - 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x08, - 0x12, 0x16, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, - 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x0a, 0x12, - 0x34, 0x0a, 0x30, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, + 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, + 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, 0x52, + 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, + 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, + 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, + 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, + 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, + 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, + 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, + 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, + 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, + 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, + 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, + 0xf9, 0x11, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, + 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x54, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x10, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x0f, 0x0a, 0x0b, + 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, + 0x03, 0x41, 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x10, + 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, - 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, - 0x65, 0x61, 0x74, 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, - 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x0c, 0x12, 0x2b, - 0x0a, 0x27, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, - 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, + 0x53, 0x79, 0x6e, 0x63, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, + 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, + 0x63, 0x6b, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x74, 0x69, 0x64, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, + 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, + 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x73, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, + 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x08, 0x12, 0x16, 0x0a, + 0x12, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x6e, + 0x75, 0x61, 0x6c, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x0a, 0x12, 0x34, 0x0a, 0x30, + 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, + 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, + 0x63, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, + 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, + 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, + 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, + 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, + 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, + 0x58, 0x58, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, - 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0e, 0x12, 0x31, - 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, + 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x58, 0x53, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0f, 0x12, 0x2c, + 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x58, 0x53, 0x4d, 0x53, 0x53, 0x4d, 0x10, - 0x0f, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, - 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x10, 0x12, + 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x10, 0x12, 0x31, 0x0a, 0x2d, + 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, + 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, + 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x11, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, - 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, - 0x10, 0x11, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x53, 0x4d, 0x53, + 0x10, 0x12, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, - 0x53, 0x4d, 0x53, 0x10, 0x12, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, - 0x4d, 0x10, 0x13, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, - 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, - 0x53, 0x10, 0x14, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, - 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, - 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x15, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, - 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, - 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x16, 0x12, 0x33, 0x0a, 0x2f, - 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, - 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, - 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x10, - 0x17, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, - 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x58, - 0x4d, 0x53, 0x4d, 0x10, 0x18, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, - 0x4d, 0x53, 0x4d, 0x10, 0x19, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, - 0x4d, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x1a, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, + 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x13, + 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x14, + 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x58, + 0x4d, 0x53, 0x10, 0x15, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, + 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, + 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x16, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, - 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x1b, 0x12, 0x2d, 0x0a, - 0x29, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, - 0x69, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, - 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, - 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, - 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x1d, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, - 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, - 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, - 0x63, 0x10, 0x1e, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, - 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, - 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1f, 0x12, 0x39, 0x0a, 0x35, 0x54, - 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, - 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x10, 0x20, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, - 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x21, 0x12, - 0x40, 0x0a, 0x3c, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, - 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, - 0x22, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, - 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, - 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, - 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x23, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, - 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x24, 0x12, 0x33, 0x0a, 0x2f, + 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x17, 0x12, 0x32, + 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, + 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, + 0x10, 0x18, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, + 0x10, 0x19, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, + 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x1a, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, + 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, + 0x58, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x1b, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x65, + 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, + 0x6e, 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x74, + 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x1d, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1e, + 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, + 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, + 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1f, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x4e, 0x6f, 0x53, + 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x10, 0x20, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, + 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x21, 0x12, 0x40, 0x0a, 0x3c, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, - 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, - 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, - 0x25, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, - 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, - 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, - 0x6e, 0x63, 0x10, 0x26, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x27, 0x12, 0x2f, 0x0a, 0x2b, - 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, - 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x28, 0x12, 0x35, 0x0a, - 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, - 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, - 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, - 0x6e, 0x63, 0x10, 0x29, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x78, 0x57, 0x69, 0x74, - 0x68, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x2a, - 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, - 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, - 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, - 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2c, 0x2a, 0x55, - 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x22, 0x12, 0x35, + 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, + 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, + 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, + 0x79, 0x6e, 0x63, 0x10, 0x23, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, + 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x24, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, + 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, + 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, + 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x25, 0x12, 0x31, + 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, + 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x70, 0x6c, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, + 0x26, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, + 0x76, 0x65, 0x72, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4d, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, + 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x27, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x65, 0x73, + 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, + 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x28, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, + 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x52, 0x70, 0x6c, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, + 0x29, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, + 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x78, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x2a, 0x12, 0x26, 0x0a, + 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4e, + 0x6f, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, + 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2c, 0x2a, 0x55, 0x0a, 0x0d, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, + 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, + 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, + 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, + 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3986,49 +3998,51 @@ var file_messages_proto_goTypes = []interface{}{ nil, // 35: signal18.replication_manager.v3.Cluster.VmTypeEntry (*ClusterSetting_Setting)(nil), // 36: signal18.replication_manager.v3.ClusterSetting.Setting (*ClusterSetting_Switch)(nil), // 37: signal18.replication_manager.v3.ClusterSetting.Switch - (*gtid.Gtid)(nil), // 38: signal18.replication_manager.v3.Gtid + (*structpb.Struct)(nil), // 38: google.protobuf.Struct + (*gtid.Gtid)(nil), // 39: signal18.replication_manager.v3.Gtid } var file_messages_proto_depIdxs = []int32{ 15, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource 30, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash - 31, // 2: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry - 32, // 3: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry - 33, // 4: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry - 34, // 5: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry - 35, // 6: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry - 16, // 7: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster - 1, // 8: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action - 36, // 9: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting - 37, // 10: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch - 4, // 11: signal18.replication_manager.v3.Server.type:type_name -> signal18.replication_manager.v3.Server.Type - 5, // 12: signal18.replication_manager.v3.Server.database:type_name -> signal18.replication_manager.v3.Server.Database - 6, // 13: signal18.replication_manager.v3.Server.proxy:type_name -> signal18.replication_manager.v3.Server.Proxy - 16, // 14: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 7, // 15: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action - 18, // 16: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.Server - 8, // 17: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology - 16, // 18: signal18.replication_manager.v3.DatabaseStatus.cluster:type_name -> signal18.replication_manager.v3.Cluster - 18, // 19: signal18.replication_manager.v3.DatabaseStatus.server:type_name -> signal18.replication_manager.v3.Server - 9, // 20: signal18.replication_manager.v3.DatabaseStatus.status:type_name -> signal18.replication_manager.v3.DatabaseStatus.Status - 16, // 21: signal18.replication_manager.v3.DatabaseAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 18, // 22: signal18.replication_manager.v3.DatabaseAction.server:type_name -> signal18.replication_manager.v3.Server - 10, // 23: signal18.replication_manager.v3.DatabaseAction.action:type_name -> signal18.replication_manager.v3.DatabaseAction.Action - 0, // 24: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus - 16, // 25: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster - 11, // 26: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval - 16, // 27: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 28, // 28: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table - 12, // 29: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action - 16, // 30: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster - 13, // 31: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test - 38, // 32: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid - 2, // 33: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName - 3, // 34: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - 35, // [35:35] is the sub-list for method output_type - 35, // [35:35] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name + 38, // 2: signal18.replication_manager.v3.Cluster.conf:type_name -> google.protobuf.Struct + 31, // 3: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry + 32, // 4: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry + 33, // 5: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry + 34, // 6: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry + 35, // 7: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry + 16, // 8: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster + 1, // 9: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action + 36, // 10: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting + 37, // 11: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch + 4, // 12: signal18.replication_manager.v3.Server.type:type_name -> signal18.replication_manager.v3.Server.Type + 5, // 13: signal18.replication_manager.v3.Server.database:type_name -> signal18.replication_manager.v3.Server.Database + 6, // 14: signal18.replication_manager.v3.Server.proxy:type_name -> signal18.replication_manager.v3.Server.Proxy + 16, // 15: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 7, // 16: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action + 18, // 17: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.Server + 8, // 18: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology + 16, // 19: signal18.replication_manager.v3.DatabaseStatus.cluster:type_name -> signal18.replication_manager.v3.Cluster + 18, // 20: signal18.replication_manager.v3.DatabaseStatus.server:type_name -> signal18.replication_manager.v3.Server + 9, // 21: signal18.replication_manager.v3.DatabaseStatus.status:type_name -> signal18.replication_manager.v3.DatabaseStatus.Status + 16, // 22: signal18.replication_manager.v3.DatabaseAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 18, // 23: signal18.replication_manager.v3.DatabaseAction.server:type_name -> signal18.replication_manager.v3.Server + 10, // 24: signal18.replication_manager.v3.DatabaseAction.action:type_name -> signal18.replication_manager.v3.DatabaseAction.Action + 0, // 25: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus + 16, // 26: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster + 11, // 27: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval + 16, // 28: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 28, // 29: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table + 12, // 30: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action + 16, // 31: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster + 13, // 32: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test + 39, // 33: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid + 2, // 34: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName + 3, // 35: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName + 36, // [36:36] is the sub-list for method output_type + 36, // [36:36] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name } func init() { file_messages_proto_init() } diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index 9177fb23a..dedcd7bab 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -22,6 +22,37 @@ "application/json" ], "paths": { + "/v3/clusters": { + "get": { + "operationId": "ClusterService_ListClusters", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/v3Cluster" + }, + "error": { + "$ref": "#/definitions/googlerpcStatus" + } + }, + "title": "Stream result of v3Cluster" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "ClusterService" + ] + } + }, "/v3/clusters/actions/{action}/{cluster.name}": { "get": { "operationId": "ClusterService_PerformClusterAction", @@ -7831,7 +7862,7 @@ "200": { "description": "A successful response.", "schema": { - "type": "object" + "$ref": "#/definitions/v3Cluster" } }, "default": { @@ -11263,12 +11294,15 @@ "$ref": "#/definitions/ClusterCrash" } }, + "config": { + "type": "object" + }, "monitorType": { "type": "object", "additionalProperties": { "type": "string" }, - "title": "config.Config Conf = 43 [json_name=\"config\"];\nconfigurator.Configurator Configurator = 44 [json_name=\"configurator\"];\n[]VariableDiff DiffVariables = 45 [json_name=\"diffVariables\"];\ns18log.HttpLog Log = 46 [json_name=\"log\"];\nmap[string]*JobResult JobResults = 47 [json_name=\"jobResults\"];\ns18log.HttpLog SQLGeneralLog = 48 [json_name=\"sqlGeneralLog\"];\ns18log.HttpLog SQLErrorLog = 49 [json_name=\"sqlErrorLog\"];" + "title": "configurator.Configurator Configurator = 44 [json_name=\"configurator\"];\n[]VariableDiff DiffVariables = 45 [json_name=\"diffVariables\"];\ns18log.HttpLog Log = 46 [json_name=\"log\"];\nmap[string]*JobResult JobResults = 47 [json_name=\"jobResults\"];\ns18log.HttpLog SQLGeneralLog = 48 [json_name=\"sqlGeneralLog\"];\ns18log.HttpLog SQLErrorLog = 49 [json_name=\"sqlErrorLog\"];" }, "topologyType": { "type": "object", diff --git a/repmanv3/service.desc b/repmanv3/service.desc index fa1c1d529b8c86d43642c6431892201a644bb87a..7ade27872d5571e627f3b63f33f9f317a177c304 100644 GIT binary patch delta 186 zcmeC`V7%1H$jfyvn~N_uwYWGjJ+*l90#gIgf};GA{G`$}{o<0M(&Q37Fn^-SLB`)3 zzwKh<)8%4G&d*De&{km7;5M3^;3&Zn#0C<{Oy9ho{h2P)JK4?CO%0hv{)=((Ip>rX zm!uX2rxulECZ`J3PQGJdKKY!3)?^(^S%C~L9-qwO5~!MDp~-np;*3(0H#%xcD2X&( aelnSfPl!jq%ve7eVoI?A<7N-bLtFrS|3Q5K delta 73 zcmV-P0Ji_qi2;g;0Rjq Date: Thu, 6 Oct 2022 22:48:21 +0200 Subject: [PATCH 09/13] CLI: Allow status to specify cluster name --- clients/client_cmd.go | 1 + 1 file changed, 1 insertion(+) diff --git a/clients/client_cmd.go b/clients/client_cmd.go index 4c6780977..45ab8030d 100644 --- a/clients/client_cmd.go +++ b/clients/client_cmd.go @@ -304,6 +304,7 @@ func init() { rootClientCmd.AddCommand(statusCmd) initStatusFlags(statusCmd) + initClusterFlags(statusCmd) rootClientCmd.AddCommand(bootstrapCmd) initBootstrapFlags(bootstrapCmd) From a3f0ba2a57ba405d70b7fb25462cf437c7ab7a53 Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Thu, 6 Oct 2022 22:50:10 +0200 Subject: [PATCH 10/13] CLI: Migrate status to v3 --- clients/client_show.go | 40 +- clients/client_status.go | 92 +- repmanv3/client.go | 2 + repmanv3/cluster.pb.go | 225 ++- repmanv3/cluster.pb.gw.go | 76 + repmanv3/cluster_grpc.pb.go | 73 +- repmanv3/messages.pb.go | 1795 +++++++++-------- repmanv3/repmanv3.swagger.json | 324 ++- repmanv3/service.desc | Bin 17618 -> 17979 bytes server/repmanv3.go | 59 +- signal18/replication-manager/v3/cluster.proto | 8 +- .../replication-manager/v3/messages.proto | 13 +- 12 files changed, 1690 insertions(+), 1017 deletions(-) diff --git a/clients/client_show.go b/clients/client_show.go index 2244718ba..352d0d131 100644 --- a/clients/client_show.go +++ b/clients/client_show.go @@ -19,6 +19,7 @@ import ( "github.com/signal18/replication-manager/cluster" "github.com/signal18/replication-manager/server" + "github.com/signal18/replication-manager/utils/state" "github.com/spf13/cobra" "google.golang.org/protobuf/encoding/protojson" @@ -30,7 +31,6 @@ var showCmd = &cobra.Command{ Short: "Print json informations", Long: `To use for support issues`, Run: func(cmd *cobra.Command, args []string) { - //cliClusters, err = cliGetClusters() cliInit(false) type Objects struct { Name string @@ -133,41 +133,41 @@ var showCmd = &cobra.Command{ myObjects.Crashes = append(myObjects.Crashes, crash) } } + if strings.Contains(cliShowObjects, "alerts") { - stream, err := client.RetrieveFromTopology(context.Background(), - &v3.TopologyRetrieval{ - Cluster: &v3.Cluster{ - Name: clusterName, - }, - Retrieve: v3.TopologyRetrieval_ALERTS, - }) + stream, err := client.RetrieveAlerts(context.Background(), &v3.Cluster{ + Name: clusterName, + }) if err != nil { - log.Fatalf("Error fetching RetrieveFromTopology: %s", err) + log.Fatal("Error fetching RetrieveAlerts: %s", err) } for { - st, err := stream.Recv() + recv, err := stream.Recv() if err == io.EOF { break } if err != nil { - log.Fatalf("Error retrieving topology: %s", err) + log.Fatalf("Error receiving stream: %s", err) } - buf, err := st.MarshalJSON() - if err != nil { - log.Fatalf("Error marshalling servermonitor: %s", err) + if recv.Severity == v3.StateMessage_WARNING { + myObjects.Alerts.Warnings = append(myObjects.Alerts.Warnings, state.StateHttp{ + ErrNumber: recv.Number, + ErrFrom: recv.From, + ErrDesc: recv.Desc, + }) } - var alerts cluster.Alerts - err = json.Unmarshal(buf, &alerts) - if err != nil { - log.Fatalf("Error unmarshalling servermonitor: %s", err) + if recv.Severity == v3.StateMessage_ERROR { + myObjects.Alerts.Errors = append(myObjects.Alerts.Errors, state.StateHttp{ + ErrNumber: recv.Number, + ErrFrom: recv.From, + ErrDesc: recv.Desc, + }) } - - myObjects.Alerts = alerts } } myReport.Clusters = append(myReport.Clusters, myObjects) diff --git a/clients/client_status.go b/clients/client_status.go index a0bae5f12..93476ee75 100644 --- a/clients/client_status.go +++ b/clients/client_status.go @@ -9,12 +9,15 @@ package clients import ( - "encoding/json" + "context" "fmt" - "os" + "io" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" + "google.golang.org/protobuf/encoding/protojson" + + v3 "github.com/signal18/replication-manager/repmanv3" ) var statusCmd = &cobra.Command{ @@ -24,59 +27,50 @@ var statusCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { log.SetFormatter(&log.TextFormatter{}) cliInit(false) - type Result struct { - Alive string `json:"alive"` - } - var ret Result - if cfgGroup == "" { - urlpost := "https://" + cliHost + ":" + cliPort + "/api/status" - res, err := cliAPICmd(urlpost, nil) - if err != nil { - fmt.Fprintf(os.Stderr, "API call %s", err) - os.Exit(1) - } else { - if res != "" { - err = json.Unmarshal([]byte(res), &ret) - if err != nil { - fmt.Fprintf(os.Stderr, "API call %s", err) - os.Exit(2) - } else { - fmt.Fprintf(os.Stdout, "%s\n", ret.Alive) - os.Exit(0) - } - } - } + client, err := v3.NewClient(context.Background(), v3Config) + if err != nil { + log.Fatal("Could not initialize v3 Client: %s", err) } + + c := &v3.Cluster{} + if cfgGroup != "" { - urlpost := "https://" + cliHost + ":" + cliPort + "/api/clusters/" + cliClusters[cliClusterIndex] + "/status" - res, err := cliAPICmd(urlpost, nil) + c.Name = cliClusters[cliClusterIndex] + } + + res, err := client.ClusterStatus(context.Background(), c) + + if err != nil { + log.Fatal("Error fetching ClusterStatus: %s", err) + } + + if res.Alive == v3.ServiceStatus_ERRORS { + stream, err := client.RetrieveAlerts(context.Background(), c) + if err != nil { - fmt.Fprintf(os.Stderr, "API call %s", err) - os.Exit(1) - } else { - if res != "" { - err = json.Unmarshal([]byte(res), &ret) - if err != nil { - fmt.Fprintf(os.Stderr, "API call %s", err) - os.Exit(2) - } else { - if cliStatusErrors { - urlpost := "https://" + cliHost + ":" + cliPort + "/api/clusters/" + cliClusters[cliClusterIndex] + "/topology/alerts" - res, err := cliAPICmd(urlpost, nil) - if err != nil { - fmt.Fprintf(os.Stderr, "API call %s", err) - os.Exit(3) - } else { - fmt.Fprintf(os.Stdout, "%s\n", res) - } - } else { - fmt.Fprintf(os.Stdout, "%s\n", ret.Alive) - } - os.Exit(0) - } + log.Fatal("Error fetching RetrieveAlerts: %s", err) + } + + for { + recv, err := stream.Recv() + if err == io.EOF { + break } + + if err != nil { + log.Fatalf("Error receiving stream: %s", err) + } + + buf, err := protojson.Marshal(recv) + if err != nil { + log.Fatalf("Could not marshal received message: %s", err) + } + + fmt.Printf("%s\n", buf) } + } else { + fmt.Println(res.Alive) } }, } diff --git a/repmanv3/client.go b/repmanv3/client.go index 36301f68e..44cabe230 100644 --- a/repmanv3/client.go +++ b/repmanv3/client.go @@ -18,6 +18,7 @@ type ClientConfig struct { } type Client struct { + ClusterPublicServiceClient ClusterServiceClient } @@ -58,6 +59,7 @@ func NewClient(ctx context.Context, conf *ClientConfig) (*Client, error) { if err != nil { return nil, fmt.Errorf("Could not create new connection: %s", err) } + c.ClusterPublicServiceClient = NewClusterPublicServiceClient(conn) c.ClusterServiceClient = NewClusterServiceClient(conn) return c, nil diff --git a/repmanv3/cluster.pb.go b/repmanv3/cluster.pb.go index fc048d31f..42fbb0029 100644 --- a/repmanv3/cluster.pb.go +++ b/repmanv3/cluster.pb.go @@ -77,7 +77,7 @@ var file_cluster_proto_rawDesc = []byte{ 0x7d, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x7d, - 0x32, 0xff, 0x16, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, + 0x32, 0x9a, 0x18, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, @@ -183,88 +183,98 @@ var file_cluster_proto_rawDesc = []byte{ 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x7b, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x65, 0x7d, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, - 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, - 0x20, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, + 0x76, 0x65, 0x7d, 0x30, 0x01, 0x12, 0x98, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x1a, 0x2d, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x33, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x30, 0x01, + 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x33, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x23, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, - 0x24, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, + 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x61, + 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, + 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x30, + 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, + 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, - 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, - 0x75, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, - 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, - 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0xbf, 0x02, 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x5a, 0x6d, 0x12, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, - 0x71, 0x12, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x7d, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, - 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, 0x02, 0x12, 0x5b, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, 0x12, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, 0x6f, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x42, 0x32, 0x5a, + 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, + 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_cluster_proto_goTypes = []interface{}{ @@ -279,10 +289,11 @@ var file_cluster_proto_goTypes = []interface{}{ (*StatusMessage)(nil), // 8: signal18.replication_manager.v3.StatusMessage (*wrapperspb.BoolValue)(nil), // 9: google.protobuf.BoolValue (*structpb.Struct)(nil), // 10: google.protobuf.Struct - (*Certificate)(nil), // 11: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 12: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 13: signal18.replication_manager.v3.Tag - (*Table)(nil), // 14: signal18.replication_manager.v3.Table + (*StateMessage)(nil), // 11: signal18.replication_manager.v3.StateMessage + (*Certificate)(nil), // 12: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 13: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 14: signal18.replication_manager.v3.Tag + (*Table)(nil), // 15: signal18.replication_manager.v3.Table } var file_cluster_proto_depIdxs = []int32{ 0, // 0: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:input_type -> signal18.replication_manager.v3.Cluster @@ -295,32 +306,34 @@ var file_cluster_proto_depIdxs = []int32{ 4, // 7: signal18.replication_manager.v3.ClusterService.PerformClusterAction:input_type -> signal18.replication_manager.v3.ClusterAction 5, // 8: signal18.replication_manager.v3.ClusterService.PerformClusterTest:input_type -> signal18.replication_manager.v3.ClusterTest 6, // 9: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:input_type -> signal18.replication_manager.v3.TopologyRetrieval - 0, // 10: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster - 0, // 11: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster - 0, // 12: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster - 0, // 13: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster - 0, // 14: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster - 0, // 15: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster - 7, // 16: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction - 8, // 17: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage - 2, // 18: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty - 9, // 19: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:output_type -> google.protobuf.BoolValue - 0, // 20: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> signal18.replication_manager.v3.Cluster - 0, // 21: signal18.replication_manager.v3.ClusterService.ListClusters:output_type -> signal18.replication_manager.v3.Cluster - 10, // 22: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct - 2, // 23: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty - 2, // 24: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty - 10, // 25: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct - 10, // 26: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct - 11, // 27: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate - 12, // 28: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup - 13, // 29: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag - 0, // 30: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster - 10, // 31: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct - 14, // 32: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table - 2, // 33: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty - 17, // [17:34] is the sub-list for method output_type - 0, // [0:17] is the sub-list for method input_type + 0, // 10: signal18.replication_manager.v3.ClusterService.RetrieveAlerts:input_type -> signal18.replication_manager.v3.Cluster + 0, // 11: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster + 0, // 12: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster + 0, // 13: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster + 0, // 14: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster + 0, // 15: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster + 0, // 16: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster + 7, // 17: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction + 8, // 18: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage + 2, // 19: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty + 9, // 20: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:output_type -> google.protobuf.BoolValue + 0, // 21: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> signal18.replication_manager.v3.Cluster + 0, // 22: signal18.replication_manager.v3.ClusterService.ListClusters:output_type -> signal18.replication_manager.v3.Cluster + 10, // 23: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct + 2, // 24: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty + 2, // 25: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty + 10, // 26: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct + 10, // 27: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct + 11, // 28: signal18.replication_manager.v3.ClusterService.RetrieveAlerts:output_type -> signal18.replication_manager.v3.StateMessage + 12, // 29: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate + 13, // 30: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup + 14, // 31: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag + 0, // 32: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster + 10, // 33: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct + 15, // 34: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table + 2, // 35: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty + 18, // [18:36] is the sub-list for method output_type + 0, // [0:18] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/repmanv3/cluster.pb.gw.go b/repmanv3/cluster.pb.gw.go index 9eaf22989..16776a7cb 100644 --- a/repmanv3/cluster.pb.gw.go +++ b/repmanv3/cluster.pb.gw.go @@ -2191,6 +2191,51 @@ func request_ClusterService_RetrieveFromTopology_0(ctx context.Context, marshale } +var ( + filter_ClusterService_RetrieveAlerts_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ClusterService_RetrieveAlerts_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (ClusterService_RetrieveAlertsClient, runtime.ServerMetadata, error) { + var protoReq Cluster + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_RetrieveAlerts_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.RetrieveAlerts(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + var ( filter_ClusterService_GetClientCertificates_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -3406,6 +3451,13 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve return }) + mux.Handle("GET", pattern_ClusterService_RetrieveAlerts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + mux.Handle("GET", pattern_ClusterService_GetClientCertificates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -4124,6 +4176,26 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ClusterService_RetrieveAlerts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/RetrieveAlerts", runtime.WithHTTPPathPattern("/v3/clusters/{name}/topology/alerts")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_RetrieveAlerts_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_RetrieveAlerts_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ClusterService_GetClientCertificates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -4342,6 +4414,8 @@ var ( pattern_ClusterService_RetrieveFromTopology_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v3", "clusters", "cluster.name", "topology", "retrieve"}, "")) + pattern_ClusterService_RetrieveAlerts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v3", "clusters", "name", "topology", "alerts"}, "")) + pattern_ClusterService_GetClientCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "certificates"}, "")) pattern_ClusterService_GetBackups_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "backups"}, "")) @@ -4396,6 +4470,8 @@ var ( forward_ClusterService_RetrieveFromTopology_0 = runtime.ForwardResponseStream + forward_ClusterService_RetrieveAlerts_0 = runtime.ForwardResponseStream + forward_ClusterService_GetClientCertificates_0 = runtime.ForwardResponseMessage forward_ClusterService_GetBackups_0 = runtime.ForwardResponseStream diff --git a/repmanv3/cluster_grpc.pb.go b/repmanv3/cluster_grpc.pb.go index 06e3114ad..1c02024d6 100644 --- a/repmanv3/cluster_grpc.pb.go +++ b/repmanv3/cluster_grpc.pb.go @@ -236,6 +236,7 @@ type ClusterServiceClient interface { PerformClusterAction(ctx context.Context, in *ClusterAction, opts ...grpc.CallOption) (*emptypb.Empty, error) PerformClusterTest(ctx context.Context, in *ClusterTest, opts ...grpc.CallOption) (*structpb.Struct, error) RetrieveFromTopology(ctx context.Context, in *TopologyRetrieval, opts ...grpc.CallOption) (ClusterService_RetrieveFromTopologyClient, error) + RetrieveAlerts(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_RetrieveAlertsClient, error) GetClientCertificates(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Certificate, error) GetBackups(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetBackupsClient, error) GetTags(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetTagsClient, error) @@ -362,6 +363,38 @@ func (x *clusterServiceRetrieveFromTopologyClient) Recv() (*structpb.Struct, err return m, nil } +func (c *clusterServiceClient) RetrieveAlerts(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_RetrieveAlertsClient, error) { + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[2], "/signal18.replication_manager.v3.ClusterService/RetrieveAlerts", opts...) + if err != nil { + return nil, err + } + x := &clusterServiceRetrieveAlertsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type ClusterService_RetrieveAlertsClient interface { + Recv() (*StateMessage, error) + grpc.ClientStream +} + +type clusterServiceRetrieveAlertsClient struct { + grpc.ClientStream +} + +func (x *clusterServiceRetrieveAlertsClient) Recv() (*StateMessage, error) { + m := new(StateMessage) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *clusterServiceClient) GetClientCertificates(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Certificate, error) { out := new(Certificate) err := c.cc.Invoke(ctx, "/signal18.replication_manager.v3.ClusterService/GetClientCertificates", in, out, opts...) @@ -372,7 +405,7 @@ func (c *clusterServiceClient) GetClientCertificates(ctx context.Context, in *Cl } func (c *clusterServiceClient) GetBackups(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetBackupsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[2], "/signal18.replication_manager.v3.ClusterService/GetBackups", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[3], "/signal18.replication_manager.v3.ClusterService/GetBackups", opts...) if err != nil { return nil, err } @@ -404,7 +437,7 @@ func (x *clusterServiceGetBackupsClient) Recv() (*Backup, error) { } func (c *clusterServiceClient) GetTags(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetTagsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[3], "/signal18.replication_manager.v3.ClusterService/GetTags", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[4], "/signal18.replication_manager.v3.ClusterService/GetTags", opts...) if err != nil { return nil, err } @@ -436,7 +469,7 @@ func (x *clusterServiceGetTagsClient) Recv() (*Tag, error) { } func (c *clusterServiceClient) GetShards(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetShardsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[4], "/signal18.replication_manager.v3.ClusterService/GetShards", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[5], "/signal18.replication_manager.v3.ClusterService/GetShards", opts...) if err != nil { return nil, err } @@ -468,7 +501,7 @@ func (x *clusterServiceGetShardsClient) Recv() (*Cluster, error) { } func (c *clusterServiceClient) GetQueryRules(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetQueryRulesClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[5], "/signal18.replication_manager.v3.ClusterService/GetQueryRules", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[6], "/signal18.replication_manager.v3.ClusterService/GetQueryRules", opts...) if err != nil { return nil, err } @@ -500,7 +533,7 @@ func (x *clusterServiceGetQueryRulesClient) Recv() (*structpb.Struct, error) { } func (c *clusterServiceClient) GetSchema(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetSchemaClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[6], "/signal18.replication_manager.v3.ClusterService/GetSchema", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[7], "/signal18.replication_manager.v3.ClusterService/GetSchema", opts...) if err != nil { return nil, err } @@ -551,6 +584,7 @@ type ClusterServiceServer interface { PerformClusterAction(context.Context, *ClusterAction) (*emptypb.Empty, error) PerformClusterTest(context.Context, *ClusterTest) (*structpb.Struct, error) RetrieveFromTopology(*TopologyRetrieval, ClusterService_RetrieveFromTopologyServer) error + RetrieveAlerts(*Cluster, ClusterService_RetrieveAlertsServer) error GetClientCertificates(context.Context, *Cluster) (*Certificate, error) GetBackups(*Cluster, ClusterService_GetBackupsServer) error GetTags(*Cluster, ClusterService_GetTagsServer) error @@ -586,6 +620,9 @@ func (UnimplementedClusterServiceServer) PerformClusterTest(context.Context, *Cl func (UnimplementedClusterServiceServer) RetrieveFromTopology(*TopologyRetrieval, ClusterService_RetrieveFromTopologyServer) error { return status.Errorf(codes.Unimplemented, "method RetrieveFromTopology not implemented") } +func (UnimplementedClusterServiceServer) RetrieveAlerts(*Cluster, ClusterService_RetrieveAlertsServer) error { + return status.Errorf(codes.Unimplemented, "method RetrieveAlerts not implemented") +} func (UnimplementedClusterServiceServer) GetClientCertificates(context.Context, *Cluster) (*Certificate, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClientCertificates not implemented") } @@ -752,6 +789,27 @@ func (x *clusterServiceRetrieveFromTopologyServer) Send(m *structpb.Struct) erro return x.ServerStream.SendMsg(m) } +func _ClusterService_RetrieveAlerts_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(Cluster) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ClusterServiceServer).RetrieveAlerts(m, &clusterServiceRetrieveAlertsServer{stream}) +} + +type ClusterService_RetrieveAlertsServer interface { + Send(*StateMessage) error + grpc.ServerStream +} + +type clusterServiceRetrieveAlertsServer struct { + grpc.ServerStream +} + +func (x *clusterServiceRetrieveAlertsServer) Send(m *StateMessage) error { + return x.ServerStream.SendMsg(m) +} + func _ClusterService_GetClientCertificates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Cluster) if err := dec(in); err != nil { @@ -940,6 +998,11 @@ var ClusterService_ServiceDesc = grpc.ServiceDesc{ Handler: _ClusterService_RetrieveFromTopology_Handler, ServerStreams: true, }, + { + StreamName: "RetrieveAlerts", + Handler: _ClusterService_RetrieveAlerts_Handler, + ServerStreams: true, + }, { StreamName: "GetBackups", Handler: _ClusterService_GetBackups_Handler, diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index ba9208488..19192cb5e 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -74,6 +74,55 @@ func (ServiceStatus) EnumDescriptor() ([]byte, []int) { return file_messages_proto_rawDescGZIP(), []int{0} } +type StateMessage_Severity int32 + +const ( + StateMessage_UNSPECIFIED StateMessage_Severity = 0 + StateMessage_WARNING StateMessage_Severity = 1 + StateMessage_ERROR StateMessage_Severity = 2 +) + +// Enum value maps for StateMessage_Severity. +var ( + StateMessage_Severity_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "WARNING", + 2: "ERROR", + } + StateMessage_Severity_value = map[string]int32{ + "UNSPECIFIED": 0, + "WARNING": 1, + "ERROR": 2, + } +) + +func (x StateMessage_Severity) Enum() *StateMessage_Severity { + p := new(StateMessage_Severity) + *p = x + return p +} + +func (x StateMessage_Severity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StateMessage_Severity) Descriptor() protoreflect.EnumDescriptor { + return file_messages_proto_enumTypes[1].Descriptor() +} + +func (StateMessage_Severity) Type() protoreflect.EnumType { + return &file_messages_proto_enumTypes[1] +} + +func (x StateMessage_Severity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StateMessage_Severity.Descriptor instead. +func (StateMessage_Severity) EnumDescriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{3, 0} +} + type ClusterSetting_Action int32 const ( @@ -128,11 +177,11 @@ func (x ClusterSetting_Action) String() string { } func (ClusterSetting_Action) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[1].Descriptor() + return file_messages_proto_enumTypes[2].Descriptor() } func (ClusterSetting_Action) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[1] + return &file_messages_proto_enumTypes[2] } func (x ClusterSetting_Action) Number() protoreflect.EnumNumber { @@ -141,7 +190,7 @@ func (x ClusterSetting_Action) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterSetting_Action.Descriptor instead. func (ClusterSetting_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3, 0} + return file_messages_proto_rawDescGZIP(), []int{4, 0} } type ClusterSetting_Setting_SettingName int32 @@ -351,11 +400,11 @@ func (x ClusterSetting_Setting_SettingName) String() string { } func (ClusterSetting_Setting_SettingName) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[2].Descriptor() + return file_messages_proto_enumTypes[3].Descriptor() } func (ClusterSetting_Setting_SettingName) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[2] + return &file_messages_proto_enumTypes[3] } func (x ClusterSetting_Setting_SettingName) Number() protoreflect.EnumNumber { @@ -364,7 +413,7 @@ func (x ClusterSetting_Setting_SettingName) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterSetting_Setting_SettingName.Descriptor instead. func (ClusterSetting_Setting_SettingName) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3, 0, 0} + return file_messages_proto_rawDescGZIP(), []int{4, 0, 0} } type ClusterSetting_Switch_SwitchName int32 @@ -571,11 +620,11 @@ func (x ClusterSetting_Switch_SwitchName) String() string { } func (ClusterSetting_Switch_SwitchName) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[3].Descriptor() + return file_messages_proto_enumTypes[4].Descriptor() } func (ClusterSetting_Switch_SwitchName) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[3] + return &file_messages_proto_enumTypes[4] } func (x ClusterSetting_Switch_SwitchName) Number() protoreflect.EnumNumber { @@ -584,7 +633,7 @@ func (x ClusterSetting_Switch_SwitchName) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterSetting_Switch_SwitchName.Descriptor instead. func (ClusterSetting_Switch_SwitchName) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3, 1, 0} + return file_messages_proto_rawDescGZIP(), []int{4, 1, 0} } type Server_Type int32 @@ -620,11 +669,11 @@ func (x Server_Type) String() string { } func (Server_Type) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[4].Descriptor() + return file_messages_proto_enumTypes[5].Descriptor() } func (Server_Type) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[4] + return &file_messages_proto_enumTypes[5] } func (x Server_Type) Number() protoreflect.EnumNumber { @@ -633,7 +682,7 @@ func (x Server_Type) Number() protoreflect.EnumNumber { // Deprecated: Use Server_Type.Descriptor instead. func (Server_Type) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0} + return file_messages_proto_rawDescGZIP(), []int{5, 0} } type Server_Database int32 @@ -675,11 +724,11 @@ func (x Server_Database) String() string { } func (Server_Database) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[5].Descriptor() + return file_messages_proto_enumTypes[6].Descriptor() } func (Server_Database) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[5] + return &file_messages_proto_enumTypes[6] } func (x Server_Database) Number() protoreflect.EnumNumber { @@ -688,7 +737,7 @@ func (x Server_Database) Number() protoreflect.EnumNumber { // Deprecated: Use Server_Database.Descriptor instead. func (Server_Database) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 1} + return file_messages_proto_rawDescGZIP(), []int{5, 1} } type Server_Proxy int32 @@ -739,11 +788,11 @@ func (x Server_Proxy) String() string { } func (Server_Proxy) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[6].Descriptor() + return file_messages_proto_enumTypes[7].Descriptor() } func (Server_Proxy) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[6] + return &file_messages_proto_enumTypes[7] } func (x Server_Proxy) Number() protoreflect.EnumNumber { @@ -752,7 +801,7 @@ func (x Server_Proxy) Number() protoreflect.EnumNumber { // Deprecated: Use Server_Proxy.Descriptor instead. func (Server_Proxy) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 2} + return file_messages_proto_rawDescGZIP(), []int{5, 2} } type ClusterAction_Action int32 @@ -845,11 +894,11 @@ func (x ClusterAction_Action) String() string { } func (ClusterAction_Action) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[7].Descriptor() + return file_messages_proto_enumTypes[8].Descriptor() } func (ClusterAction_Action) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[7] + return &file_messages_proto_enumTypes[8] } func (x ClusterAction_Action) Number() protoreflect.EnumNumber { @@ -858,7 +907,7 @@ func (x ClusterAction_Action) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterAction_Action.Descriptor instead. func (ClusterAction_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5, 0} + return file_messages_proto_rawDescGZIP(), []int{6, 0} } type ClusterAction_ReplicationTopology int32 @@ -909,11 +958,11 @@ func (x ClusterAction_ReplicationTopology) String() string { } func (ClusterAction_ReplicationTopology) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[8].Descriptor() + return file_messages_proto_enumTypes[9].Descriptor() } func (ClusterAction_ReplicationTopology) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[8] + return &file_messages_proto_enumTypes[9] } func (x ClusterAction_ReplicationTopology) Number() protoreflect.EnumNumber { @@ -922,7 +971,7 @@ func (x ClusterAction_ReplicationTopology) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterAction_ReplicationTopology.Descriptor instead. func (ClusterAction_ReplicationTopology) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5, 1} + return file_messages_proto_rawDescGZIP(), []int{6, 1} } type DatabaseStatus_Status int32 @@ -982,11 +1031,11 @@ func (x DatabaseStatus_Status) String() string { } func (DatabaseStatus_Status) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[9].Descriptor() + return file_messages_proto_enumTypes[10].Descriptor() } func (DatabaseStatus_Status) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[9] + return &file_messages_proto_enumTypes[10] } func (x DatabaseStatus_Status) Number() protoreflect.EnumNumber { @@ -995,7 +1044,7 @@ func (x DatabaseStatus_Status) Number() protoreflect.EnumNumber { // Deprecated: Use DatabaseStatus_Status.Descriptor instead. func (DatabaseStatus_Status) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{6, 0} + return file_messages_proto_rawDescGZIP(), []int{7, 0} } type DatabaseAction_Action int32 @@ -1061,11 +1110,11 @@ func (x DatabaseAction_Action) String() string { } func (DatabaseAction_Action) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[10].Descriptor() + return file_messages_proto_enumTypes[11].Descriptor() } func (DatabaseAction_Action) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[10] + return &file_messages_proto_enumTypes[11] } func (x DatabaseAction_Action) Number() protoreflect.EnumNumber { @@ -1074,14 +1123,13 @@ func (x DatabaseAction_Action) Number() protoreflect.EnumNumber { // Deprecated: Use DatabaseAction_Action.Descriptor instead. func (DatabaseAction_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{7, 0} + return file_messages_proto_rawDescGZIP(), []int{8, 0} } type TopologyRetrieval_Retrieval int32 const ( TopologyRetrieval_RETRIEVAL_UNSPECIFIED TopologyRetrieval_Retrieval = 0 - TopologyRetrieval_ALERTS TopologyRetrieval_Retrieval = 1 TopologyRetrieval_CRASHES TopologyRetrieval_Retrieval = 2 TopologyRetrieval_LOGS TopologyRetrieval_Retrieval = 3 TopologyRetrieval_MASTER TopologyRetrieval_Retrieval = 4 @@ -1094,7 +1142,6 @@ const ( var ( TopologyRetrieval_Retrieval_name = map[int32]string{ 0: "RETRIEVAL_UNSPECIFIED", - 1: "ALERTS", 2: "CRASHES", 3: "LOGS", 4: "MASTER", @@ -1104,7 +1151,6 @@ var ( } TopologyRetrieval_Retrieval_value = map[string]int32{ "RETRIEVAL_UNSPECIFIED": 0, - "ALERTS": 1, "CRASHES": 2, "LOGS": 3, "MASTER": 4, @@ -1125,11 +1171,11 @@ func (x TopologyRetrieval_Retrieval) String() string { } func (TopologyRetrieval_Retrieval) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[11].Descriptor() + return file_messages_proto_enumTypes[12].Descriptor() } func (TopologyRetrieval_Retrieval) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[11] + return &file_messages_proto_enumTypes[12] } func (x TopologyRetrieval_Retrieval) Number() protoreflect.EnumNumber { @@ -1138,7 +1184,7 @@ func (x TopologyRetrieval_Retrieval) Number() protoreflect.EnumNumber { // Deprecated: Use TopologyRetrieval_Retrieval.Descriptor instead. func (TopologyRetrieval_Retrieval) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{9, 0} + return file_messages_proto_rawDescGZIP(), []int{10, 0} } type TableAction_Action int32 @@ -1180,11 +1226,11 @@ func (x TableAction_Action) String() string { } func (TableAction_Action) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[12].Descriptor() + return file_messages_proto_enumTypes[13].Descriptor() } func (TableAction_Action) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[12] + return &file_messages_proto_enumTypes[13] } func (x TableAction_Action) Number() protoreflect.EnumNumber { @@ -1193,7 +1239,7 @@ func (x TableAction_Action) Number() protoreflect.EnumNumber { // Deprecated: Use TableAction_Action.Descriptor instead. func (TableAction_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{13, 0} + return file_messages_proto_rawDescGZIP(), []int{14, 0} } type ClusterTest_Test int32 @@ -1355,11 +1401,11 @@ func (x ClusterTest_Test) String() string { } func (ClusterTest_Test) Descriptor() protoreflect.EnumDescriptor { - return file_messages_proto_enumTypes[13].Descriptor() + return file_messages_proto_enumTypes[14].Descriptor() } func (ClusterTest_Test) Type() protoreflect.EnumType { - return &file_messages_proto_enumTypes[13] + return &file_messages_proto_enumTypes[14] } func (x ClusterTest_Test) Number() protoreflect.EnumNumber { @@ -1368,7 +1414,7 @@ func (x ClusterTest_Test) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterTest_Test.Descriptor instead. func (ClusterTest_Test) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{15, 0} + return file_messages_proto_rawDescGZIP(), []int{16, 0} } type ErrorInfo struct { @@ -1910,6 +1956,77 @@ func (x *Cluster) GetVmType() map[string]bool { return nil } +type StateMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Severity StateMessage_Severity `protobuf:"varint,1,opt,name=severity,proto3,enum=signal18.replication_manager.v3.StateMessage_Severity" json:"severity,omitempty"` + Number string `protobuf:"bytes,2,opt,name=number,proto3" json:"number,omitempty"` + Desc string `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"` + From string `protobuf:"bytes,4,opt,name=from,proto3" json:"from,omitempty"` +} + +func (x *StateMessage) Reset() { + *x = StateMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateMessage) ProtoMessage() {} + +func (x *StateMessage) ProtoReflect() protoreflect.Message { + mi := &file_messages_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 StateMessage.ProtoReflect.Descriptor instead. +func (*StateMessage) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{3} +} + +func (x *StateMessage) GetSeverity() StateMessage_Severity { + if x != nil { + return x.Severity + } + return StateMessage_UNSPECIFIED +} + +func (x *StateMessage) GetNumber() string { + if x != nil { + return x.Number + } + return "" +} + +func (x *StateMessage) GetDesc() string { + if x != nil { + return x.Desc + } + return "" +} + +func (x *StateMessage) GetFrom() string { + if x != nil { + return x.From + } + return "" +} + type ClusterSetting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1925,7 +2042,7 @@ type ClusterSetting struct { func (x *ClusterSetting) Reset() { *x = ClusterSetting{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[3] + mi := &file_messages_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1938,7 +2055,7 @@ func (x *ClusterSetting) String() string { func (*ClusterSetting) ProtoMessage() {} func (x *ClusterSetting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[3] + mi := &file_messages_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1951,7 +2068,7 @@ func (x *ClusterSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterSetting.ProtoReflect.Descriptor instead. func (*ClusterSetting) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3} + return file_messages_proto_rawDescGZIP(), []int{4} } func (x *ClusterSetting) GetCluster() *Cluster { @@ -2004,7 +2121,7 @@ type Server struct { func (x *Server) Reset() { *x = Server{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[4] + mi := &file_messages_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2017,7 +2134,7 @@ func (x *Server) String() string { func (*Server) ProtoMessage() {} func (x *Server) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[4] + mi := &file_messages_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2030,7 +2147,7 @@ func (x *Server) ProtoReflect() protoreflect.Message { // Deprecated: Use Server.ProtoReflect.Descriptor instead. func (*Server) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4} + return file_messages_proto_rawDescGZIP(), []int{5} } func (x *Server) GetHost() string { @@ -2083,7 +2200,7 @@ type ClusterAction struct { func (x *ClusterAction) Reset() { *x = ClusterAction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[5] + mi := &file_messages_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2096,7 +2213,7 @@ func (x *ClusterAction) String() string { func (*ClusterAction) ProtoMessage() {} func (x *ClusterAction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[5] + mi := &file_messages_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2109,7 +2226,7 @@ func (x *ClusterAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterAction.ProtoReflect.Descriptor instead. func (*ClusterAction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5} + return file_messages_proto_rawDescGZIP(), []int{6} } func (x *ClusterAction) GetCluster() *Cluster { @@ -2160,7 +2277,7 @@ type DatabaseStatus struct { func (x *DatabaseStatus) Reset() { *x = DatabaseStatus{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[6] + mi := &file_messages_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2173,7 +2290,7 @@ func (x *DatabaseStatus) String() string { func (*DatabaseStatus) ProtoMessage() {} func (x *DatabaseStatus) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[6] + mi := &file_messages_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2186,7 +2303,7 @@ func (x *DatabaseStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use DatabaseStatus.ProtoReflect.Descriptor instead. func (*DatabaseStatus) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{6} + return file_messages_proto_rawDescGZIP(), []int{7} } func (x *DatabaseStatus) GetCluster() *Cluster { @@ -2223,7 +2340,7 @@ type DatabaseAction struct { func (x *DatabaseAction) Reset() { *x = DatabaseAction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[7] + mi := &file_messages_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2236,7 +2353,7 @@ func (x *DatabaseAction) String() string { func (*DatabaseAction) ProtoMessage() {} func (x *DatabaseAction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[7] + mi := &file_messages_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2249,7 +2366,7 @@ func (x *DatabaseAction) ProtoReflect() protoreflect.Message { // Deprecated: Use DatabaseAction.ProtoReflect.Descriptor instead. func (*DatabaseAction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{7} + return file_messages_proto_rawDescGZIP(), []int{8} } func (x *DatabaseAction) GetCluster() *Cluster { @@ -2284,7 +2401,7 @@ type StatusMessage struct { func (x *StatusMessage) Reset() { *x = StatusMessage{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[8] + mi := &file_messages_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2297,7 +2414,7 @@ func (x *StatusMessage) String() string { func (*StatusMessage) ProtoMessage() {} func (x *StatusMessage) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[8] + mi := &file_messages_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2310,7 +2427,7 @@ func (x *StatusMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusMessage.ProtoReflect.Descriptor instead. func (*StatusMessage) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{8} + return file_messages_proto_rawDescGZIP(), []int{9} } func (x *StatusMessage) GetAlive() ServiceStatus { @@ -2332,7 +2449,7 @@ type TopologyRetrieval struct { func (x *TopologyRetrieval) Reset() { *x = TopologyRetrieval{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[9] + mi := &file_messages_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2345,7 +2462,7 @@ func (x *TopologyRetrieval) String() string { func (*TopologyRetrieval) ProtoMessage() {} func (x *TopologyRetrieval) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[9] + mi := &file_messages_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2358,7 +2475,7 @@ func (x *TopologyRetrieval) ProtoReflect() protoreflect.Message { // Deprecated: Use TopologyRetrieval.ProtoReflect.Descriptor instead. func (*TopologyRetrieval) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{9} + return file_messages_proto_rawDescGZIP(), []int{10} } func (x *TopologyRetrieval) GetCluster() *Cluster { @@ -2388,7 +2505,7 @@ type Certificate struct { func (x *Certificate) Reset() { *x = Certificate{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[10] + mi := &file_messages_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2401,7 +2518,7 @@ func (x *Certificate) String() string { func (*Certificate) ProtoMessage() {} func (x *Certificate) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[10] + mi := &file_messages_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2414,7 +2531,7 @@ func (x *Certificate) ProtoReflect() protoreflect.Message { // Deprecated: Use Certificate.ProtoReflect.Descriptor instead. func (*Certificate) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{10} + return file_messages_proto_rawDescGZIP(), []int{11} } func (x *Certificate) GetClientCertificate() string { @@ -2457,7 +2574,7 @@ type Backup struct { func (x *Backup) Reset() { *x = Backup{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[11] + mi := &file_messages_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2470,7 +2587,7 @@ func (x *Backup) String() string { func (*Backup) ProtoMessage() {} func (x *Backup) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[11] + mi := &file_messages_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2483,7 +2600,7 @@ func (x *Backup) ProtoReflect() protoreflect.Message { // Deprecated: Use Backup.ProtoReflect.Descriptor instead. func (*Backup) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{11} + return file_messages_proto_rawDescGZIP(), []int{12} } func (x *Backup) GetId() string { @@ -2562,7 +2679,7 @@ type Tag struct { func (x *Tag) Reset() { *x = Tag{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2575,7 +2692,7 @@ func (x *Tag) String() string { func (*Tag) ProtoMessage() {} func (x *Tag) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2588,7 +2705,7 @@ func (x *Tag) ProtoReflect() protoreflect.Message { // Deprecated: Use Tag.ProtoReflect.Descriptor instead. func (*Tag) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{12} + return file_messages_proto_rawDescGZIP(), []int{13} } func (x *Tag) GetId() uint64 { @@ -2627,7 +2744,7 @@ type TableAction struct { func (x *TableAction) Reset() { *x = TableAction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2640,7 +2757,7 @@ func (x *TableAction) String() string { func (*TableAction) ProtoMessage() {} func (x *TableAction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2653,7 +2770,7 @@ func (x *TableAction) ProtoReflect() protoreflect.Message { // Deprecated: Use TableAction.ProtoReflect.Descriptor instead. func (*TableAction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{13} + return file_messages_proto_rawDescGZIP(), []int{14} } func (x *TableAction) GetCluster() *Cluster { @@ -2710,7 +2827,7 @@ type Table struct { func (x *Table) Reset() { *x = Table{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[14] + mi := &file_messages_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2723,7 +2840,7 @@ func (x *Table) String() string { func (*Table) ProtoMessage() {} func (x *Table) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[14] + mi := &file_messages_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2736,7 +2853,7 @@ func (x *Table) ProtoReflect() protoreflect.Message { // Deprecated: Use Table.ProtoReflect.Descriptor instead. func (*Table) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{14} + return file_messages_proto_rawDescGZIP(), []int{15} } func (x *Table) GetTableSchema() string { @@ -2816,7 +2933,7 @@ type ClusterTest struct { func (x *ClusterTest) Reset() { *x = ClusterTest{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[15] + mi := &file_messages_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2829,7 +2946,7 @@ func (x *ClusterTest) String() string { func (*ClusterTest) ProtoMessage() {} func (x *ClusterTest) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[15] + mi := &file_messages_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2842,7 +2959,7 @@ func (x *ClusterTest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterTest.ProtoReflect.Descriptor instead. func (*ClusterTest) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{15} + return file_messages_proto_rawDescGZIP(), []int{16} } func (x *ClusterTest) GetCluster() *Cluster { @@ -2891,7 +3008,7 @@ type Cluster_Crash struct { func (x *Cluster_Crash) Reset() { *x = Cluster_Crash{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[16] + mi := &file_messages_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2904,7 +3021,7 @@ func (x *Cluster_Crash) String() string { func (*Cluster_Crash) ProtoMessage() {} func (x *Cluster_Crash) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[16] + mi := &file_messages_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2988,7 +3105,7 @@ type ClusterSetting_Setting struct { func (x *ClusterSetting_Setting) Reset() { *x = ClusterSetting_Setting{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[22] + mi := &file_messages_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3001,7 +3118,7 @@ func (x *ClusterSetting_Setting) String() string { func (*ClusterSetting_Setting) ProtoMessage() {} func (x *ClusterSetting_Setting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[22] + mi := &file_messages_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3014,7 +3131,7 @@ func (x *ClusterSetting_Setting) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterSetting_Setting.ProtoReflect.Descriptor instead. func (*ClusterSetting_Setting) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3, 0} + return file_messages_proto_rawDescGZIP(), []int{4, 0} } func (x *ClusterSetting_Setting) GetName() ClusterSetting_Setting_SettingName { @@ -3042,7 +3159,7 @@ type ClusterSetting_Switch struct { func (x *ClusterSetting_Switch) Reset() { *x = ClusterSetting_Switch{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[23] + mi := &file_messages_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3055,7 +3172,7 @@ func (x *ClusterSetting_Switch) String() string { func (*ClusterSetting_Switch) ProtoMessage() {} func (x *ClusterSetting_Switch) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[23] + mi := &file_messages_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3068,7 +3185,7 @@ func (x *ClusterSetting_Switch) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterSetting_Switch.ProtoReflect.Descriptor instead. func (*ClusterSetting_Switch) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3, 1} + return file_messages_proto_rawDescGZIP(), []int{4, 1} } func (x *ClusterSetting_Switch) GetName() ClusterSetting_Switch_SwitchName { @@ -3281,668 +3398,681 @@ var file_messages_proto_rawDesc = []byte{ 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe3, 0x20, - 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, + 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd7, 0x01, + 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x52, + 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, + 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, + 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, + 0x6f, 0x6d, 0x22, 0x33, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0f, + 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, - 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, - 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, - 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, - 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, - 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, - 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, - 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, - 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, - 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, - 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, - 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, - 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, - 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, - 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, - 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, - 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, - 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, - 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, - 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, - 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, - 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, - 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, - 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, - 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, - 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, - 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, - 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, - 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, - 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, - 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, - 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, - 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, - 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, - 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, - 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, - 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, - 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, - 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, + 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, + 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, + 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, + 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, + 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, + 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, + 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, + 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, + 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, + 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, + 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, + 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, + 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, + 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, + 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, + 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, + 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, + 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, + 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, + 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, + 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, + 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, + 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, + 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, + 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, + 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, + 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, + 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, + 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, + 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, + 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, + 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, + 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, + 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, + 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, + 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, + 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, - 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, - 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, - 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, - 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, - 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, - 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, - 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, - 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, - 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, - 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, - 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, - 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, - 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, - 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, - 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, - 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, - 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, - 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, - 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, - 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, - 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, - 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, - 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, - 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, - 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, - 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, - 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, - 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, - 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, - 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, - 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, - 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, - 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, - 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, - 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, - 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, - 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, - 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, - 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, - 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, - 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, - 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, - 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, - 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, - 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, - 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, - 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, - 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, - 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, - 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, - 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, - 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, - 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, - 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, - 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, - 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, - 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, - 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, - 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, - 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, - 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, - 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, - 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, - 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, - 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, - 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, - 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, - 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, - 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, - 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, - 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, - 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, - 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, - 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, - 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, - 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, - 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, - 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, - 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, - 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, - 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, - 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, - 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, + 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, + 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, + 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, + 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, + 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, + 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, + 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, + 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, + 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, + 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, + 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, + 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, + 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, + 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, + 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, + 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, + 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, + 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, - 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, - 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, - 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, - 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, - 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, - 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, - 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, + 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, + 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, + 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, + 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, + 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, + 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, + 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, + 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, + 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, + 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, - 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, - 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, - 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, - 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, - 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, - 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, - 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, - 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, - 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, - 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, - 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, - 0x47, 0x10, 0x0d, 0x22, 0x97, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, + 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, + 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, + 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, + 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, + 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, + 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, + 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, + 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, + 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, + 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, + 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, + 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, + 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, + 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, + 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, + 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, + 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, + 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, + 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, + 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, + 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, + 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, + 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, + 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, + 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, + 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, + 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, + 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, + 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, + 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, + 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, + 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, + 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, + 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, + 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, + 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, + 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, + 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, + 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, + 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, + 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, + 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, + 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, + 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, + 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, + 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, + 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, + 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, + 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, + 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, + 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, + 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, + 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, + 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, + 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, + 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, + 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, + 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, + 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, + 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, + 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, + 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, + 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, + 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, + 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, + 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, + 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, + 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, + 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, + 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, + 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, + 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, + 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, + 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, + 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, + 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, + 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, + 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, + 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, + 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, + 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, + 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, + 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, + 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, + 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, + 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, + 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, + 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0x97, 0x04, + 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x12, 0x43, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2d, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, + 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, + 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, + 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, + 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, + 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, + 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, + 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, + 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, + 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, 0xe1, 0x07, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, - 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, - 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, - 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, - 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, - 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, - 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, - 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, - 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, - 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, 0xe1, 0x07, - 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x06, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, + 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, + 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, + 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, + 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, + 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, + 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, + 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, + 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, + 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, + 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, + 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, + 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, + 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, + 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, + 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, + 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, + 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, + 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, + 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, + 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, + 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, + 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, + 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, + 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, + 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, + 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, + 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, + 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, + 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, + 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, + 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, + 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, + 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, 0x07, 0x22, 0xab, 0x03, 0x0a, 0x0e, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, + 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, - 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, - 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, - 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, - 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, - 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, - 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, - 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, - 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, - 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, - 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, - 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, - 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, - 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, - 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, - 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, - 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, - 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, - 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, - 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, - 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, - 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, - 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, - 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, - 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, - 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, - 0x07, 0x22, 0xab, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, - 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, - 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, - 0x0d, 0x0a, 0x09, 0x49, 0x53, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x07, 0x12, 0x0c, - 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, - 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, - 0x52, 0x4f, 0x56, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, - 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x0a, 0x22, - 0xd3, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, - 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, - 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, - 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0f, 0x0a, - 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x07, 0x12, 0x13, - 0x0a, 0x0f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, - 0x4c, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, - 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0a, 0x12, 0x18, 0x0a, - 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x51, 0x55, 0x45, 0x52, - 0x59, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, - 0x49, 0x5a, 0x45, 0x10, 0x0c, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xae, 0x02, 0x0a, - 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, - 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, - 0x22, 0x7b, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, - 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, 0x52, - 0x54, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, - 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, - 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, - 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, - 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, + 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, + 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, + 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, + 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, + 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x53, 0x5f, + 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x53, + 0x4c, 0x41, 0x56, 0x45, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, + 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x09, 0x12, + 0x18, 0x0a, 0x14, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, + 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x0a, 0x22, 0xd3, 0x03, 0x0a, 0x0e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, + 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, + 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, + 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, + 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, + 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x12, 0x0a, + 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, + 0x09, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0a, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, + 0x50, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x47, 0x10, + 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x0c, 0x22, + 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xa2, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, - 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, - 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, - 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, - 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, - 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, - 0xf9, 0x11, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, - 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, + 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x22, 0x6f, 0x0a, 0x09, 0x52, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, + 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, 0x02, 0x12, + 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, + 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x45, 0x53, + 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, 0x0b, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, + 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, + 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, - 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x54, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x10, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, - 0x03, 0x41, 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x10, - 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, - 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, - 0x53, 0x79, 0x6e, 0x63, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, - 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, - 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x65, 0x73, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, - 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, - 0x63, 0x6b, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, + 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, + 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, + 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, + 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, + 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, + 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, 0xf9, 0x11, + 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x4e, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, + 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x95, 0x10, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, + 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x10, 0x02, 0x12, + 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, + 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, + 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, + 0x6e, 0x63, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, + 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, + 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x74, 0x69, 0x64, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x65, + 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, + 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x73, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x74, 0x69, 0x64, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, - 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, - 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x73, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, - 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x08, 0x12, 0x16, 0x0a, - 0x12, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x6e, - 0x75, 0x61, 0x6c, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x0a, 0x12, 0x34, 0x0a, 0x30, - 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, - 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, - 0x63, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, - 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x54, - 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, - 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, - 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, - 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, - 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, - 0x58, 0x58, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x54, - 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, - 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, - 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x58, 0x53, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0f, 0x12, 0x2c, - 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, - 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x10, 0x12, 0x31, 0x0a, 0x2d, + 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x75, 0x61, + 0x6c, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, + 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x0a, 0x12, 0x34, 0x0a, 0x30, 0x54, 0x65, + 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4d, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x10, 0x0b, + 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, + 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, + 0x62, 0x61, 0x63, 0x6b, 0x10, 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, + 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, + 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, + 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, + 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, + 0x53, 0x58, 0x58, 0x4d, 0x58, 0x53, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0f, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, - 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x11, 0x12, - 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, - 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, - 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x53, 0x4d, 0x53, - 0x10, 0x12, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x10, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, + 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, + 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, + 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x11, 0x12, 0x31, 0x0a, + 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, + 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, + 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x53, 0x4d, 0x53, 0x10, 0x12, + 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x13, 0x12, 0x2e, + 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, + 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x14, 0x12, 0x32, + 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, + 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, + 0x10, 0x15, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x13, + 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, + 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x16, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, + 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x17, 0x12, 0x32, 0x0a, 0x2e, + 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, + 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, + 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x18, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x14, + 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x19, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x58, - 0x4d, 0x53, 0x10, 0x15, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x4d, 0x58, + 0x4d, 0x53, 0x10, 0x1a, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, - 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, - 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x16, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, - 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, - 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x17, 0x12, 0x32, - 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, - 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, - 0x10, 0x18, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, - 0x10, 0x19, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, - 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x1a, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, - 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, - 0x58, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x1b, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x65, - 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, - 0x6e, 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x65, 0x73, - 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x74, - 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x1d, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x53, - 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, - 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1e, - 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, - 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, - 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1f, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x65, 0x73, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x4e, 0x6f, 0x53, - 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x10, 0x20, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, - 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x21, 0x12, 0x40, 0x0a, 0x3c, + 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, + 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x1b, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x65, 0x73, 0x74, + 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, + 0x53, 0x6c, 0x61, 0x76, 0x65, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x52, 0x65, + 0x61, 0x63, 0x68, 0x10, 0x1d, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, + 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1e, 0x12, 0x26, + 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, + 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, + 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1f, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, + 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, + 0x20, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, + 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, + 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x21, 0x12, 0x40, 0x0a, 0x3c, 0x54, 0x65, + 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, + 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6d, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x22, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, - 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x22, 0x12, 0x35, - 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, - 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, - 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, - 0x79, 0x6e, 0x63, 0x10, 0x23, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, - 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, - 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x24, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, - 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, - 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, - 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x25, 0x12, 0x31, - 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, - 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x70, 0x6c, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, - 0x26, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, - 0x76, 0x65, 0x72, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, - 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x27, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x65, 0x73, - 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, - 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x28, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, - 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x52, 0x70, 0x6c, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, - 0x29, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, - 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x78, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x2a, 0x12, 0x26, 0x0a, - 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4e, - 0x6f, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, - 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2c, 0x2a, 0x55, 0x0a, 0x0d, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, - 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, - 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, - 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, - 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, - 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, + 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, + 0x63, 0x10, 0x23, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, + 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x24, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, + 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, + 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x25, 0x12, 0x31, 0x0a, 0x2d, + 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, + 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x70, 0x6c, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x26, 0x12, + 0x36, 0x0a, 0x32, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, + 0x72, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6d, + 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x27, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, + 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x28, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x29, 0x12, + 0x3a, 0x0a, 0x36, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, + 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x78, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, + 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x2a, 0x12, 0x26, 0x0a, 0x22, 0x54, + 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, + 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, + 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2c, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, + 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, + 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, + 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, + 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, + 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3957,92 +4087,95 @@ func file_messages_proto_rawDescGZIP() []byte { return file_messages_proto_rawDescData } -var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 14) -var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 15) +var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 25) var file_messages_proto_goTypes = []interface{}{ (ServiceStatus)(0), // 0: signal18.replication_manager.v3.ServiceStatus - (ClusterSetting_Action)(0), // 1: signal18.replication_manager.v3.ClusterSetting.Action - (ClusterSetting_Setting_SettingName)(0), // 2: signal18.replication_manager.v3.ClusterSetting.Setting.SettingName - (ClusterSetting_Switch_SwitchName)(0), // 3: signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - (Server_Type)(0), // 4: signal18.replication_manager.v3.Server.Type - (Server_Database)(0), // 5: signal18.replication_manager.v3.Server.Database - (Server_Proxy)(0), // 6: signal18.replication_manager.v3.Server.Proxy - (ClusterAction_Action)(0), // 7: signal18.replication_manager.v3.ClusterAction.Action - (ClusterAction_ReplicationTopology)(0), // 8: signal18.replication_manager.v3.ClusterAction.ReplicationTopology - (DatabaseStatus_Status)(0), // 9: signal18.replication_manager.v3.DatabaseStatus.Status - (DatabaseAction_Action)(0), // 10: signal18.replication_manager.v3.DatabaseAction.Action - (TopologyRetrieval_Retrieval)(0), // 11: signal18.replication_manager.v3.TopologyRetrieval.Retrieval - (TableAction_Action)(0), // 12: signal18.replication_manager.v3.TableAction.Action - (ClusterTest_Test)(0), // 13: signal18.replication_manager.v3.ClusterTest.Test - (*ErrorInfo)(nil), // 14: signal18.replication_manager.v3.ErrorInfo - (*ErrorResource)(nil), // 15: signal18.replication_manager.v3.ErrorResource - (*Cluster)(nil), // 16: signal18.replication_manager.v3.Cluster - (*ClusterSetting)(nil), // 17: signal18.replication_manager.v3.ClusterSetting - (*Server)(nil), // 18: signal18.replication_manager.v3.Server - (*ClusterAction)(nil), // 19: signal18.replication_manager.v3.ClusterAction - (*DatabaseStatus)(nil), // 20: signal18.replication_manager.v3.DatabaseStatus - (*DatabaseAction)(nil), // 21: signal18.replication_manager.v3.DatabaseAction - (*StatusMessage)(nil), // 22: signal18.replication_manager.v3.StatusMessage - (*TopologyRetrieval)(nil), // 23: signal18.replication_manager.v3.TopologyRetrieval - (*Certificate)(nil), // 24: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 25: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 26: signal18.replication_manager.v3.Tag - (*TableAction)(nil), // 27: signal18.replication_manager.v3.TableAction - (*Table)(nil), // 28: signal18.replication_manager.v3.Table - (*ClusterTest)(nil), // 29: signal18.replication_manager.v3.ClusterTest - (*Cluster_Crash)(nil), // 30: signal18.replication_manager.v3.Cluster.Crash - nil, // 31: signal18.replication_manager.v3.Cluster.MonitorTypeEntry - nil, // 32: signal18.replication_manager.v3.Cluster.TopologyTypeEntry - nil, // 33: signal18.replication_manager.v3.Cluster.FsTypeEntry - nil, // 34: signal18.replication_manager.v3.Cluster.DiskTypeEntry - nil, // 35: signal18.replication_manager.v3.Cluster.VmTypeEntry - (*ClusterSetting_Setting)(nil), // 36: signal18.replication_manager.v3.ClusterSetting.Setting - (*ClusterSetting_Switch)(nil), // 37: signal18.replication_manager.v3.ClusterSetting.Switch - (*structpb.Struct)(nil), // 38: google.protobuf.Struct - (*gtid.Gtid)(nil), // 39: signal18.replication_manager.v3.Gtid + (StateMessage_Severity)(0), // 1: signal18.replication_manager.v3.StateMessage.Severity + (ClusterSetting_Action)(0), // 2: signal18.replication_manager.v3.ClusterSetting.Action + (ClusterSetting_Setting_SettingName)(0), // 3: signal18.replication_manager.v3.ClusterSetting.Setting.SettingName + (ClusterSetting_Switch_SwitchName)(0), // 4: signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName + (Server_Type)(0), // 5: signal18.replication_manager.v3.Server.Type + (Server_Database)(0), // 6: signal18.replication_manager.v3.Server.Database + (Server_Proxy)(0), // 7: signal18.replication_manager.v3.Server.Proxy + (ClusterAction_Action)(0), // 8: signal18.replication_manager.v3.ClusterAction.Action + (ClusterAction_ReplicationTopology)(0), // 9: signal18.replication_manager.v3.ClusterAction.ReplicationTopology + (DatabaseStatus_Status)(0), // 10: signal18.replication_manager.v3.DatabaseStatus.Status + (DatabaseAction_Action)(0), // 11: signal18.replication_manager.v3.DatabaseAction.Action + (TopologyRetrieval_Retrieval)(0), // 12: signal18.replication_manager.v3.TopologyRetrieval.Retrieval + (TableAction_Action)(0), // 13: signal18.replication_manager.v3.TableAction.Action + (ClusterTest_Test)(0), // 14: signal18.replication_manager.v3.ClusterTest.Test + (*ErrorInfo)(nil), // 15: signal18.replication_manager.v3.ErrorInfo + (*ErrorResource)(nil), // 16: signal18.replication_manager.v3.ErrorResource + (*Cluster)(nil), // 17: signal18.replication_manager.v3.Cluster + (*StateMessage)(nil), // 18: signal18.replication_manager.v3.StateMessage + (*ClusterSetting)(nil), // 19: signal18.replication_manager.v3.ClusterSetting + (*Server)(nil), // 20: signal18.replication_manager.v3.Server + (*ClusterAction)(nil), // 21: signal18.replication_manager.v3.ClusterAction + (*DatabaseStatus)(nil), // 22: signal18.replication_manager.v3.DatabaseStatus + (*DatabaseAction)(nil), // 23: signal18.replication_manager.v3.DatabaseAction + (*StatusMessage)(nil), // 24: signal18.replication_manager.v3.StatusMessage + (*TopologyRetrieval)(nil), // 25: signal18.replication_manager.v3.TopologyRetrieval + (*Certificate)(nil), // 26: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 27: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 28: signal18.replication_manager.v3.Tag + (*TableAction)(nil), // 29: signal18.replication_manager.v3.TableAction + (*Table)(nil), // 30: signal18.replication_manager.v3.Table + (*ClusterTest)(nil), // 31: signal18.replication_manager.v3.ClusterTest + (*Cluster_Crash)(nil), // 32: signal18.replication_manager.v3.Cluster.Crash + nil, // 33: signal18.replication_manager.v3.Cluster.MonitorTypeEntry + nil, // 34: signal18.replication_manager.v3.Cluster.TopologyTypeEntry + nil, // 35: signal18.replication_manager.v3.Cluster.FsTypeEntry + nil, // 36: signal18.replication_manager.v3.Cluster.DiskTypeEntry + nil, // 37: signal18.replication_manager.v3.Cluster.VmTypeEntry + (*ClusterSetting_Setting)(nil), // 38: signal18.replication_manager.v3.ClusterSetting.Setting + (*ClusterSetting_Switch)(nil), // 39: signal18.replication_manager.v3.ClusterSetting.Switch + (*structpb.Struct)(nil), // 40: google.protobuf.Struct + (*gtid.Gtid)(nil), // 41: signal18.replication_manager.v3.Gtid } var file_messages_proto_depIdxs = []int32{ - 15, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource - 30, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash - 38, // 2: signal18.replication_manager.v3.Cluster.conf:type_name -> google.protobuf.Struct - 31, // 3: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry - 32, // 4: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry - 33, // 5: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry - 34, // 6: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry - 35, // 7: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry - 16, // 8: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster - 1, // 9: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action - 36, // 10: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting - 37, // 11: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch - 4, // 12: signal18.replication_manager.v3.Server.type:type_name -> signal18.replication_manager.v3.Server.Type - 5, // 13: signal18.replication_manager.v3.Server.database:type_name -> signal18.replication_manager.v3.Server.Database - 6, // 14: signal18.replication_manager.v3.Server.proxy:type_name -> signal18.replication_manager.v3.Server.Proxy - 16, // 15: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 7, // 16: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action - 18, // 17: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.Server - 8, // 18: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology - 16, // 19: signal18.replication_manager.v3.DatabaseStatus.cluster:type_name -> signal18.replication_manager.v3.Cluster - 18, // 20: signal18.replication_manager.v3.DatabaseStatus.server:type_name -> signal18.replication_manager.v3.Server - 9, // 21: signal18.replication_manager.v3.DatabaseStatus.status:type_name -> signal18.replication_manager.v3.DatabaseStatus.Status - 16, // 22: signal18.replication_manager.v3.DatabaseAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 18, // 23: signal18.replication_manager.v3.DatabaseAction.server:type_name -> signal18.replication_manager.v3.Server - 10, // 24: signal18.replication_manager.v3.DatabaseAction.action:type_name -> signal18.replication_manager.v3.DatabaseAction.Action - 0, // 25: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus - 16, // 26: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster - 11, // 27: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval - 16, // 28: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 28, // 29: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table - 12, // 30: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action - 16, // 31: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster - 13, // 32: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test - 39, // 33: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid - 2, // 34: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName - 3, // 35: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName - 36, // [36:36] is the sub-list for method output_type - 36, // [36:36] is the sub-list for method input_type - 36, // [36:36] is the sub-list for extension type_name - 36, // [36:36] is the sub-list for extension extendee - 0, // [0:36] is the sub-list for field type_name + 16, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource + 32, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash + 40, // 2: signal18.replication_manager.v3.Cluster.conf:type_name -> google.protobuf.Struct + 33, // 3: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry + 34, // 4: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry + 35, // 5: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry + 36, // 6: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry + 37, // 7: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry + 1, // 8: signal18.replication_manager.v3.StateMessage.severity:type_name -> signal18.replication_manager.v3.StateMessage.Severity + 17, // 9: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster + 2, // 10: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action + 38, // 11: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting + 39, // 12: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch + 5, // 13: signal18.replication_manager.v3.Server.type:type_name -> signal18.replication_manager.v3.Server.Type + 6, // 14: signal18.replication_manager.v3.Server.database:type_name -> signal18.replication_manager.v3.Server.Database + 7, // 15: signal18.replication_manager.v3.Server.proxy:type_name -> signal18.replication_manager.v3.Server.Proxy + 17, // 16: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 8, // 17: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action + 20, // 18: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.Server + 9, // 19: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology + 17, // 20: signal18.replication_manager.v3.DatabaseStatus.cluster:type_name -> signal18.replication_manager.v3.Cluster + 20, // 21: signal18.replication_manager.v3.DatabaseStatus.server:type_name -> signal18.replication_manager.v3.Server + 10, // 22: signal18.replication_manager.v3.DatabaseStatus.status:type_name -> signal18.replication_manager.v3.DatabaseStatus.Status + 17, // 23: signal18.replication_manager.v3.DatabaseAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 20, // 24: signal18.replication_manager.v3.DatabaseAction.server:type_name -> signal18.replication_manager.v3.Server + 11, // 25: signal18.replication_manager.v3.DatabaseAction.action:type_name -> signal18.replication_manager.v3.DatabaseAction.Action + 0, // 26: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus + 17, // 27: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster + 12, // 28: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval + 17, // 29: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 30, // 30: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table + 13, // 31: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action + 17, // 32: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster + 14, // 33: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test + 41, // 34: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid + 3, // 35: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName + 4, // 36: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName + 37, // [37:37] is the sub-list for method output_type + 37, // [37:37] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name } func init() { file_messages_proto_init() } @@ -4088,7 +4221,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterSetting); i { + switch v := v.(*StateMessage); i { case 0: return &v.state case 1: @@ -4100,7 +4233,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Server); i { + switch v := v.(*ClusterSetting); i { case 0: return &v.state case 1: @@ -4112,7 +4245,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterAction); i { + switch v := v.(*Server); i { case 0: return &v.state case 1: @@ -4124,7 +4257,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatabaseStatus); i { + switch v := v.(*ClusterAction); i { case 0: return &v.state case 1: @@ -4136,7 +4269,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatabaseAction); i { + switch v := v.(*DatabaseStatus); i { case 0: return &v.state case 1: @@ -4148,7 +4281,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusMessage); i { + switch v := v.(*DatabaseAction); i { case 0: return &v.state case 1: @@ -4160,7 +4293,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopologyRetrieval); i { + switch v := v.(*StatusMessage); i { case 0: return &v.state case 1: @@ -4172,7 +4305,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Certificate); i { + switch v := v.(*TopologyRetrieval); i { case 0: return &v.state case 1: @@ -4184,7 +4317,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Backup); i { + switch v := v.(*Certificate); i { case 0: return &v.state case 1: @@ -4196,7 +4329,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tag); i { + switch v := v.(*Backup); i { case 0: return &v.state case 1: @@ -4208,7 +4341,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TableAction); i { + switch v := v.(*Tag); i { case 0: return &v.state case 1: @@ -4220,7 +4353,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Table); i { + switch v := v.(*TableAction); i { case 0: return &v.state case 1: @@ -4232,7 +4365,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterTest); i { + switch v := v.(*Table); i { case 0: return &v.state case 1: @@ -4244,6 +4377,18 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClusterTest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Cluster_Crash); i { case 0: return &v.state @@ -4255,7 +4400,7 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_messages_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterSetting_Setting); i { case 0: return &v.state @@ -4267,7 +4412,7 @@ func file_messages_proto_init() { return nil } } - file_messages_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_messages_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterSetting_Switch); i { case 0: return &v.state @@ -4285,8 +4430,8 @@ func file_messages_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_messages_proto_rawDesc, - NumEnums: 14, - NumMessages: 24, + NumEnums: 15, + NumMessages: 25, NumExtensions: 0, NumServices: 0, }, diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index dedcd7bab..c5612a982 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -6859,7 +6859,6 @@ "type": "string", "enum": [ "RETRIEVAL_UNSPECIFIED", - "ALERTS", "CRASHES", "LOGS", "MASTER", @@ -10767,6 +10766,302 @@ "ClusterService" ] } + }, + "/v3/clusters/{name}/topology/alerts": { + "get": { + "operationId": "ClusterService_RetrieveAlerts", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/v3StateMessage" + }, + "error": { + "$ref": "#/definitions/googlerpcStatus" + } + }, + "title": "Stream result of v3StateMessage" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "ClusterService" + ] + } } }, "definitions": { @@ -10978,6 +11273,15 @@ ], "default": "UNSPECIFIED" }, + "StateMessageSeverity": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "WARNING", + "ERROR" + ], + "default": "UNSPECIFIED" + }, "SwitchSwitchName": { "type": "string", "enum": [ @@ -11048,7 +11352,6 @@ "type": "string", "enum": [ "RETRIEVAL_UNSPECIFIED", - "ALERTS", "CRASHES", "LOGS", "MASTER", @@ -11448,6 +11751,23 @@ ], "default": "SERVICESTATUS_UNSPECIFIED" }, + "v3StateMessage": { + "type": "object", + "properties": { + "severity": { + "$ref": "#/definitions/StateMessageSeverity" + }, + "number": { + "type": "string" + }, + "desc": { + "type": "string" + }, + "from": { + "type": "string" + } + } + }, "v3StatusMessage": { "type": "object", "properties": { diff --git a/repmanv3/service.desc b/repmanv3/service.desc index 7ade27872d5571e627f3b63f33f9f317a177c304..57b52e2566834b05448085add50eb0ab2e7bbffd 100644 GIT binary patch delta 320 zcmccA$+)|Rk(p~v?ndT59+m5iTs*-gi6yDNsl~;K>8V0NTpY!zWvNA(C6yA43XB?j zMrM-}%@ymB73l>-RRqD+3W;&C<(1|pr4~sr0d;W(L3u(#Tr4T6#mN%PU{Np|B$if` zpDV!v5d*Q6jJY^qrV8+Wx_P>~2rvk7bBVHtI|liA`nd}*3UP9=x&{UL z2MI83p1|WE#kgqlMYYY0`IB4K)i>`@*WzR9l;8Zs)R38Jmc(Xp%f)O$GZ?w}f>KM0 zGJ(!^%t|iVa delta 81 zcmV-X0IvVLi~-V#0Rsx&Yq0~446|zuKN Date: Thu, 6 Oct 2022 23:19:02 +0200 Subject: [PATCH 11/13] Standalone endpoint for Crashes --- clients/client_show.go | 31 +- cluster/cluster_fail.go | 4 +- cluster/cluster_get.go | 4 +- cluster/srv_rejoin.go | 14 +- repmanv3/cluster.pb.go | 228 +- repmanv3/cluster.pb.gw.go | 76 + repmanv3/cluster_grpc.pb.go | 73 +- repmanv3/crash.go | 12 +- repmanv3/messages.pb.go | 1916 ++++++++--------- repmanv3/repmanv3.swagger.json | 364 +++- repmanv3/service.desc | Bin 17979 -> 18108 bytes server/repmanv3.go | 37 +- signal18/replication-manager/v3/cluster.proto | 8 +- .../replication-manager/v3/messages.proto | 26 +- 14 files changed, 1614 insertions(+), 1179 deletions(-) diff --git a/clients/client_show.go b/clients/client_show.go index 352d0d131..14193733a 100644 --- a/clients/client_show.go +++ b/clients/client_show.go @@ -38,7 +38,7 @@ var showCmd = &cobra.Command{ Servers []cluster.ServerMonitor `json:"servers"` Master cluster.ServerMonitor `json:"master"` Slaves []cluster.ServerMonitor `json:"slaves"` - Crashes []v3.Cluster_Crash `json:"crashes"` + Crashes []v3.Crash `json:"crashes"` Alerts cluster.Alerts `json:"alerts"` } type Report struct { @@ -97,40 +97,25 @@ var showCmd = &cobra.Command{ myObjects.Slaves = append(myObjects.Slaves, srv...) } if strings.Contains(cliShowObjects, "crashes") { - stream, err := client.RetrieveFromTopology(context.Background(), - &v3.TopologyRetrieval{ - Cluster: &v3.Cluster{ - Name: clusterName, - }, - Retrieve: v3.TopologyRetrieval_CRASHES, - }) + stream, err := client.RetrieveCrashes(context.Background(), &v3.Cluster{ + Name: clusterName, + }) if err != nil { - log.Fatalf("Error fetching RetrieveFromTopology: %s", err) + log.Fatal("Error fetching RetrieveCrashes: %s", err) } for { - st, err := stream.Recv() + recv, err := stream.Recv() if err == io.EOF { break } if err != nil { - log.Fatalf("Error retrieving topology: %s", err) - } - - buf, err := st.MarshalJSON() - if err != nil { - log.Fatalf("Error marshalling servermonitor: %s", err) - } - - var crash v3.Cluster_Crash - err = protojson.Unmarshal(buf, &crash) - if err != nil { - log.Fatalf("Error unmarshalling servermonitor: %s", err) + log.Fatalf("Error receiving stream: %s", err) } - myObjects.Crashes = append(myObjects.Crashes, crash) + myObjects.Crashes = append(myObjects.Crashes, *recv) } } diff --git a/cluster/cluster_fail.go b/cluster/cluster_fail.go index 1498a52c4..7a84cb798 100644 --- a/cluster/cluster_fail.go +++ b/cluster/cluster_fail.go @@ -138,7 +138,7 @@ func (cluster *Cluster) MasterFailover(fail bool) bool { // If it's a failover, wait for the SQL thread to read all relay logs. // If maxsclale we should wait for relay catch via old style - crash := new(v3.Cluster_Crash) + crash := new(v3.Crash) crash.Url = cluster.oldMaster.URL crash.ElectedMasterUrl = cluster.master.URL @@ -1178,7 +1178,7 @@ func (cluster *Cluster) VMasterFailover(fail bool) bool { // If it's a failover, wait for the SQL thread to read all relay logs. // If maxsclale we should wait for relay catch via old style - crash := new(v3.Cluster_Crash) + crash := new(v3.Crash) crash.Url = cluster.oldMaster.URL crash.ElectedMasterUrl = cluster.master.URL diff --git a/cluster/cluster_get.go b/cluster/cluster_get.go index 3bb7d38b9..21c6e6997 100644 --- a/cluster/cluster_get.go +++ b/cluster/cluster_get.go @@ -745,7 +745,7 @@ func (cluster *Cluster) GetClientCertificates() (map[string]string, error) { return certs, nil } -func (cluster *Cluster) getCrashFromJoiner(URL string) *v3.Cluster_Crash { +func (cluster *Cluster) getCrashFromJoiner(URL string) *v3.Crash { for _, cr := range cluster.Crashes { if cr.Url == URL { return cr @@ -754,7 +754,7 @@ func (cluster *Cluster) getCrashFromJoiner(URL string) *v3.Cluster_Crash { return nil } -func (cluster *Cluster) getCrashFromMaster(URL string) *v3.Cluster_Crash { +func (cluster *Cluster) getCrashFromMaster(URL string) *v3.Crash { for _, cr := range cluster.Crashes { if cr.ElectedMasterUrl == URL { return cr diff --git a/cluster/srv_rejoin.go b/cluster/srv_rejoin.go index db4cbd20f..8b7e3fde9 100644 --- a/cluster/srv_rejoin.go +++ b/cluster/srv_rejoin.go @@ -183,7 +183,7 @@ func (server *ServerMonitor) ReseedMasterSST() error { return nil } -func (server *ServerMonitor) rejoinMasterSync(crash *v3.Cluster_Crash) error { +func (server *ServerMonitor) rejoinMasterSync(crash *v3.Crash) error { if server.HasGTIDReplication() { server.ClusterGroup.LogPrintf("INFO", "Found same or lower GTID %s and new elected master was %s", server.CurrentGtid.Sprint(), crash.GetFailoverIOGtid().Sprint()) } else { @@ -246,7 +246,7 @@ func (server *ServerMonitor) rejoinMasterSync(crash *v3.Cluster_Crash) error { return err } -func (server *ServerMonitor) rejoinMasterFlashBack(crash *v3.Cluster_Crash) error { +func (server *ServerMonitor) rejoinMasterFlashBack(crash *v3.Crash) error { realmaster := server.ClusterGroup.master if server.ClusterGroup.Conf.MxsBinlogOn || server.ClusterGroup.Conf.MultiTierSlave { realmaster = server.ClusterGroup.GetRelayServer() @@ -343,7 +343,7 @@ func (server *ServerMonitor) RejoinDirectDump() error { return nil } -func (server *ServerMonitor) rejoinMasterIncremental(crash *v3.Cluster_Crash) error { +func (server *ServerMonitor) rejoinMasterIncremental(crash *v3.Crash) error { if server.GetCluster().GetConf().AutorejoinForceRestore { server.ClusterGroup.LogPrintf("INFO", "Cancel incremental rejoin server %s caused by force backup restore ", server.URL) return errors.New("autorejoin-force-restore is on can't just rejoin from current pos") @@ -547,7 +547,7 @@ func (server *ServerMonitor) rejoinSlave(ss dbhelper.SlaveStatus) error { return nil } -func (server *ServerMonitor) isReplicationAheadOfMasterElection(crash *v3.Cluster_Crash) bool { +func (server *ServerMonitor) isReplicationAheadOfMasterElection(crash *v3.Crash) bool { if server.UsedGtidAtElection(crash) { @@ -590,7 +590,7 @@ func (server *ServerMonitor) deletefiles(path string, f os.FileInfo, err error) return } -func (server *ServerMonitor) saveBinlog(crash *v3.Cluster_Crash) error { +func (server *ServerMonitor) saveBinlog(crash *v3.Crash) error { t := time.Now() backupdir := server.ClusterGroup.Conf.WorkingDir + "/" + server.ClusterGroup.Name + "/crash-bin-" + t.Format("20060102150405") server.ClusterGroup.LogPrintf("INFO", "Rejoin old Master %s , backing up lost event to %s", crash.Url, backupdir) @@ -599,7 +599,7 @@ func (server *ServerMonitor) saveBinlog(crash *v3.Cluster_Crash) error { return nil } -func (server *ServerMonitor) backupBinlog(crash *v3.Cluster_Crash) error { +func (server *ServerMonitor) backupBinlog(crash *v3.Crash) error { if _, err := os.Stat(server.ClusterGroup.GetMysqlBinlogPath()); os.IsNotExist(err) { server.ClusterGroup.LogPrintf("ERROR", "mysqlbinlog does not exist %s check binary path", server.ClusterGroup.GetMysqlBinlogPath()) @@ -671,7 +671,7 @@ func (cluster *Cluster) RejoinFixRelay(slave *ServerMonitor, relay *ServerMonito } // UseGtid check is replication use gtid -func (server *ServerMonitor) UsedGtidAtElection(crash *v3.Cluster_Crash) bool { +func (server *ServerMonitor) UsedGtidAtElection(crash *v3.Crash) bool { /* ss, errss := server.GetSlaveStatus(server.ReplicationSourceName) if errss != nil { diff --git a/repmanv3/cluster.pb.go b/repmanv3/cluster.pb.go index 42fbb0029..41cc6c4a4 100644 --- a/repmanv3/cluster.pb.go +++ b/repmanv3/cluster.pb.go @@ -77,7 +77,7 @@ var file_cluster_proto_rawDesc = []byte{ 0x7d, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x7d, - 0x32, 0x9a, 0x18, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, + 0x32, 0xb0, 0x19, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, @@ -193,88 +193,97 @@ var file_cluster_proto_rawDesc = []byte{ 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x30, 0x01, - 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x12, 0x93, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x43, 0x72, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x33, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, - 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x23, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, + 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x72, 0x61, 0x73, 0x68, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2f, 0x63, 0x72, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x30, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, - 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x61, - 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, + 0x12, 0x20, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x27, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, + 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, + 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x1a, 0x24, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x76, 0x33, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, - 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x30, - 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, - 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x29, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x0d, 0x47, 0x65, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x26, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, + 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x33, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbf, 0x02, 0x12, 0x5b, - 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x5a, 0x6d, 0x12, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, 0x5a, 0x71, 0x12, 0x6f, 0x2f, 0x76, - 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x7d, 0x42, 0x32, 0x5a, - 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, - 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, + 0x1a, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x30, 0x01, 0x12, 0xa3, 0x03, + 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc6, 0x02, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0xbf, 0x02, 0x12, 0x5b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x5a, 0x6d, 0x12, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x7d, + 0x5a, 0x71, 0x12, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x7d, 0x2f, 0x7b, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x7d, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, + 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_cluster_proto_goTypes = []interface{}{ @@ -290,10 +299,11 @@ var file_cluster_proto_goTypes = []interface{}{ (*wrapperspb.BoolValue)(nil), // 9: google.protobuf.BoolValue (*structpb.Struct)(nil), // 10: google.protobuf.Struct (*StateMessage)(nil), // 11: signal18.replication_manager.v3.StateMessage - (*Certificate)(nil), // 12: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 13: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 14: signal18.replication_manager.v3.Tag - (*Table)(nil), // 15: signal18.replication_manager.v3.Table + (*Crash)(nil), // 12: signal18.replication_manager.v3.Crash + (*Certificate)(nil), // 13: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 14: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 15: signal18.replication_manager.v3.Tag + (*Table)(nil), // 16: signal18.replication_manager.v3.Table } var file_cluster_proto_depIdxs = []int32{ 0, // 0: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:input_type -> signal18.replication_manager.v3.Cluster @@ -307,33 +317,35 @@ var file_cluster_proto_depIdxs = []int32{ 5, // 8: signal18.replication_manager.v3.ClusterService.PerformClusterTest:input_type -> signal18.replication_manager.v3.ClusterTest 6, // 9: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:input_type -> signal18.replication_manager.v3.TopologyRetrieval 0, // 10: signal18.replication_manager.v3.ClusterService.RetrieveAlerts:input_type -> signal18.replication_manager.v3.Cluster - 0, // 11: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster - 0, // 12: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster - 0, // 13: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster - 0, // 14: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster - 0, // 15: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster - 0, // 16: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster - 7, // 17: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction - 8, // 18: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage - 2, // 19: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty - 9, // 20: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:output_type -> google.protobuf.BoolValue - 0, // 21: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> signal18.replication_manager.v3.Cluster - 0, // 22: signal18.replication_manager.v3.ClusterService.ListClusters:output_type -> signal18.replication_manager.v3.Cluster - 10, // 23: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct - 2, // 24: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty - 2, // 25: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty - 10, // 26: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct - 10, // 27: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct - 11, // 28: signal18.replication_manager.v3.ClusterService.RetrieveAlerts:output_type -> signal18.replication_manager.v3.StateMessage - 12, // 29: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate - 13, // 30: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup - 14, // 31: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag - 0, // 32: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster - 10, // 33: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct - 15, // 34: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table - 2, // 35: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty - 18, // [18:36] is the sub-list for method output_type - 0, // [0:18] is the sub-list for method input_type + 0, // 11: signal18.replication_manager.v3.ClusterService.RetrieveCrashes:input_type -> signal18.replication_manager.v3.Cluster + 0, // 12: signal18.replication_manager.v3.ClusterService.GetClientCertificates:input_type -> signal18.replication_manager.v3.Cluster + 0, // 13: signal18.replication_manager.v3.ClusterService.GetBackups:input_type -> signal18.replication_manager.v3.Cluster + 0, // 14: signal18.replication_manager.v3.ClusterService.GetTags:input_type -> signal18.replication_manager.v3.Cluster + 0, // 15: signal18.replication_manager.v3.ClusterService.GetShards:input_type -> signal18.replication_manager.v3.Cluster + 0, // 16: signal18.replication_manager.v3.ClusterService.GetQueryRules:input_type -> signal18.replication_manager.v3.Cluster + 0, // 17: signal18.replication_manager.v3.ClusterService.GetSchema:input_type -> signal18.replication_manager.v3.Cluster + 7, // 18: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:input_type -> signal18.replication_manager.v3.TableAction + 8, // 19: signal18.replication_manager.v3.ClusterPublicService.ClusterStatus:output_type -> signal18.replication_manager.v3.StatusMessage + 2, // 20: signal18.replication_manager.v3.ClusterPublicService.MasterPhysicalBackup:output_type -> google.protobuf.Empty + 9, // 21: signal18.replication_manager.v3.DatabasePublicService.ServerStatus:output_type -> google.protobuf.BoolValue + 0, // 22: signal18.replication_manager.v3.ClusterService.GetCluster:output_type -> signal18.replication_manager.v3.Cluster + 0, // 23: signal18.replication_manager.v3.ClusterService.ListClusters:output_type -> signal18.replication_manager.v3.Cluster + 10, // 24: signal18.replication_manager.v3.ClusterService.GetSettingsForCluster:output_type -> google.protobuf.Struct + 2, // 25: signal18.replication_manager.v3.ClusterService.SetActionForClusterSettings:output_type -> google.protobuf.Empty + 2, // 26: signal18.replication_manager.v3.ClusterService.PerformClusterAction:output_type -> google.protobuf.Empty + 10, // 27: signal18.replication_manager.v3.ClusterService.PerformClusterTest:output_type -> google.protobuf.Struct + 10, // 28: signal18.replication_manager.v3.ClusterService.RetrieveFromTopology:output_type -> google.protobuf.Struct + 11, // 29: signal18.replication_manager.v3.ClusterService.RetrieveAlerts:output_type -> signal18.replication_manager.v3.StateMessage + 12, // 30: signal18.replication_manager.v3.ClusterService.RetrieveCrashes:output_type -> signal18.replication_manager.v3.Crash + 13, // 31: signal18.replication_manager.v3.ClusterService.GetClientCertificates:output_type -> signal18.replication_manager.v3.Certificate + 14, // 32: signal18.replication_manager.v3.ClusterService.GetBackups:output_type -> signal18.replication_manager.v3.Backup + 15, // 33: signal18.replication_manager.v3.ClusterService.GetTags:output_type -> signal18.replication_manager.v3.Tag + 0, // 34: signal18.replication_manager.v3.ClusterService.GetShards:output_type -> signal18.replication_manager.v3.Cluster + 10, // 35: signal18.replication_manager.v3.ClusterService.GetQueryRules:output_type -> google.protobuf.Struct + 16, // 36: signal18.replication_manager.v3.ClusterService.GetSchema:output_type -> signal18.replication_manager.v3.Table + 2, // 37: signal18.replication_manager.v3.ClusterService.ExecuteTableAction:output_type -> google.protobuf.Empty + 19, // [19:38] is the sub-list for method output_type + 0, // [0:19] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/repmanv3/cluster.pb.gw.go b/repmanv3/cluster.pb.gw.go index 16776a7cb..f8a9c3db8 100644 --- a/repmanv3/cluster.pb.gw.go +++ b/repmanv3/cluster.pb.gw.go @@ -2236,6 +2236,51 @@ func request_ClusterService_RetrieveAlerts_0(ctx context.Context, marshaler runt } +var ( + filter_ClusterService_RetrieveCrashes_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ClusterService_RetrieveCrashes_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterServiceClient, req *http.Request, pathParams map[string]string) (ClusterService_RetrieveCrashesClient, runtime.ServerMetadata, error) { + var protoReq Cluster + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterService_RetrieveCrashes_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.RetrieveCrashes(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + var ( filter_ClusterService_GetClientCertificates_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -3458,6 +3503,13 @@ func RegisterClusterServiceHandlerServer(ctx context.Context, mux *runtime.Serve return }) + mux.Handle("GET", pattern_ClusterService_RetrieveCrashes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + mux.Handle("GET", pattern_ClusterService_GetClientCertificates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -4196,6 +4248,26 @@ func RegisterClusterServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ClusterService_RetrieveCrashes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/signal18.replication_manager.v3.ClusterService/RetrieveCrashes", runtime.WithHTTPPathPattern("/v3/clusters/{name}/topology/crashes")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterService_RetrieveCrashes_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterService_RetrieveCrashes_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ClusterService_GetClientCertificates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -4416,6 +4488,8 @@ var ( pattern_ClusterService_RetrieveAlerts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v3", "clusters", "name", "topology", "alerts"}, "")) + pattern_ClusterService_RetrieveCrashes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v3", "clusters", "name", "topology", "crashes"}, "")) + pattern_ClusterService_GetClientCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "certificates"}, "")) pattern_ClusterService_GetBackups_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v3", "clusters", "name", "backups"}, "")) @@ -4472,6 +4546,8 @@ var ( forward_ClusterService_RetrieveAlerts_0 = runtime.ForwardResponseStream + forward_ClusterService_RetrieveCrashes_0 = runtime.ForwardResponseStream + forward_ClusterService_GetClientCertificates_0 = runtime.ForwardResponseMessage forward_ClusterService_GetBackups_0 = runtime.ForwardResponseStream diff --git a/repmanv3/cluster_grpc.pb.go b/repmanv3/cluster_grpc.pb.go index 1c02024d6..295ad05d7 100644 --- a/repmanv3/cluster_grpc.pb.go +++ b/repmanv3/cluster_grpc.pb.go @@ -237,6 +237,7 @@ type ClusterServiceClient interface { PerformClusterTest(ctx context.Context, in *ClusterTest, opts ...grpc.CallOption) (*structpb.Struct, error) RetrieveFromTopology(ctx context.Context, in *TopologyRetrieval, opts ...grpc.CallOption) (ClusterService_RetrieveFromTopologyClient, error) RetrieveAlerts(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_RetrieveAlertsClient, error) + RetrieveCrashes(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_RetrieveCrashesClient, error) GetClientCertificates(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Certificate, error) GetBackups(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetBackupsClient, error) GetTags(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetTagsClient, error) @@ -395,6 +396,38 @@ func (x *clusterServiceRetrieveAlertsClient) Recv() (*StateMessage, error) { return m, nil } +func (c *clusterServiceClient) RetrieveCrashes(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_RetrieveCrashesClient, error) { + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[3], "/signal18.replication_manager.v3.ClusterService/RetrieveCrashes", opts...) + if err != nil { + return nil, err + } + x := &clusterServiceRetrieveCrashesClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type ClusterService_RetrieveCrashesClient interface { + Recv() (*Crash, error) + grpc.ClientStream +} + +type clusterServiceRetrieveCrashesClient struct { + grpc.ClientStream +} + +func (x *clusterServiceRetrieveCrashesClient) Recv() (*Crash, error) { + m := new(Crash) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *clusterServiceClient) GetClientCertificates(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Certificate, error) { out := new(Certificate) err := c.cc.Invoke(ctx, "/signal18.replication_manager.v3.ClusterService/GetClientCertificates", in, out, opts...) @@ -405,7 +438,7 @@ func (c *clusterServiceClient) GetClientCertificates(ctx context.Context, in *Cl } func (c *clusterServiceClient) GetBackups(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetBackupsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[3], "/signal18.replication_manager.v3.ClusterService/GetBackups", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[4], "/signal18.replication_manager.v3.ClusterService/GetBackups", opts...) if err != nil { return nil, err } @@ -437,7 +470,7 @@ func (x *clusterServiceGetBackupsClient) Recv() (*Backup, error) { } func (c *clusterServiceClient) GetTags(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetTagsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[4], "/signal18.replication_manager.v3.ClusterService/GetTags", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[5], "/signal18.replication_manager.v3.ClusterService/GetTags", opts...) if err != nil { return nil, err } @@ -469,7 +502,7 @@ func (x *clusterServiceGetTagsClient) Recv() (*Tag, error) { } func (c *clusterServiceClient) GetShards(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetShardsClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[5], "/signal18.replication_manager.v3.ClusterService/GetShards", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[6], "/signal18.replication_manager.v3.ClusterService/GetShards", opts...) if err != nil { return nil, err } @@ -501,7 +534,7 @@ func (x *clusterServiceGetShardsClient) Recv() (*Cluster, error) { } func (c *clusterServiceClient) GetQueryRules(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetQueryRulesClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[6], "/signal18.replication_manager.v3.ClusterService/GetQueryRules", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[7], "/signal18.replication_manager.v3.ClusterService/GetQueryRules", opts...) if err != nil { return nil, err } @@ -533,7 +566,7 @@ func (x *clusterServiceGetQueryRulesClient) Recv() (*structpb.Struct, error) { } func (c *clusterServiceClient) GetSchema(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (ClusterService_GetSchemaClient, error) { - stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[7], "/signal18.replication_manager.v3.ClusterService/GetSchema", opts...) + stream, err := c.cc.NewStream(ctx, &ClusterService_ServiceDesc.Streams[8], "/signal18.replication_manager.v3.ClusterService/GetSchema", opts...) if err != nil { return nil, err } @@ -585,6 +618,7 @@ type ClusterServiceServer interface { PerformClusterTest(context.Context, *ClusterTest) (*structpb.Struct, error) RetrieveFromTopology(*TopologyRetrieval, ClusterService_RetrieveFromTopologyServer) error RetrieveAlerts(*Cluster, ClusterService_RetrieveAlertsServer) error + RetrieveCrashes(*Cluster, ClusterService_RetrieveCrashesServer) error GetClientCertificates(context.Context, *Cluster) (*Certificate, error) GetBackups(*Cluster, ClusterService_GetBackupsServer) error GetTags(*Cluster, ClusterService_GetTagsServer) error @@ -623,6 +657,9 @@ func (UnimplementedClusterServiceServer) RetrieveFromTopology(*TopologyRetrieval func (UnimplementedClusterServiceServer) RetrieveAlerts(*Cluster, ClusterService_RetrieveAlertsServer) error { return status.Errorf(codes.Unimplemented, "method RetrieveAlerts not implemented") } +func (UnimplementedClusterServiceServer) RetrieveCrashes(*Cluster, ClusterService_RetrieveCrashesServer) error { + return status.Errorf(codes.Unimplemented, "method RetrieveCrashes not implemented") +} func (UnimplementedClusterServiceServer) GetClientCertificates(context.Context, *Cluster) (*Certificate, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClientCertificates not implemented") } @@ -810,6 +847,27 @@ func (x *clusterServiceRetrieveAlertsServer) Send(m *StateMessage) error { return x.ServerStream.SendMsg(m) } +func _ClusterService_RetrieveCrashes_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(Cluster) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ClusterServiceServer).RetrieveCrashes(m, &clusterServiceRetrieveCrashesServer{stream}) +} + +type ClusterService_RetrieveCrashesServer interface { + Send(*Crash) error + grpc.ServerStream +} + +type clusterServiceRetrieveCrashesServer struct { + grpc.ServerStream +} + +func (x *clusterServiceRetrieveCrashesServer) Send(m *Crash) error { + return x.ServerStream.SendMsg(m) +} + func _ClusterService_GetClientCertificates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Cluster) if err := dec(in); err != nil { @@ -1003,6 +1061,11 @@ var ClusterService_ServiceDesc = grpc.ServiceDesc{ Handler: _ClusterService_RetrieveAlerts_Handler, ServerStreams: true, }, + { + StreamName: "RetrieveCrashes", + Handler: _ClusterService_RetrieveCrashes_Handler, + ServerStreams: true, + }, { StreamName: "GetBackups", Handler: _ClusterService_GetBackups_Handler, diff --git a/repmanv3/crash.go b/repmanv3/crash.go index 168392ebf..d48753f33 100644 --- a/repmanv3/crash.go +++ b/repmanv3/crash.go @@ -31,22 +31,22 @@ import ( // } // Collection of Cluster_Crash reports -type CrashList []*Cluster_Crash +type CrashList []*Crash -func (crash *Cluster_Crash) GetFailoverIOGtid() (l gtid.List) { +func (crash *Crash) GetFailoverIOGtid() (l gtid.List) { for _, g := range crash.FailoverIoGtids { l = append(l, *g) } return l } -func (crash *Cluster_Crash) SetFailoverIOGtid(l gtid.List) { +func (crash *Crash) SetFailoverIOGtid(l gtid.List) { for _, g := range l { crash.FailoverIoGtids = append(crash.FailoverIoGtids, &g) } } -func (crash *Cluster_Crash) delete(cl *CrashList) { +func (crash *Crash) delete(cl *CrashList) { lsm := *cl for k, s := range lsm { if crash.Url == s.Url { @@ -59,7 +59,7 @@ func (crash *Cluster_Crash) delete(cl *CrashList) { *cl = lsm } -func (crash *Cluster_Crash) Save(path string) error { +func (crash *Crash) Save(path string) error { saveJson, _ := json.MarshalIndent(crash, "", "\t") err := ioutil.WriteFile(path, saveJson, 0644) if err != nil { @@ -68,7 +68,7 @@ func (crash *Cluster_Crash) Save(path string) error { return nil } -func (crash *Cluster_Crash) Purge(path string, keep int) error { +func (crash *Crash) Purge(path string, keep int) error { drop := make(map[string]int) files, err := ioutil.ReadDir(path) diff --git a/repmanv3/messages.pb.go b/repmanv3/messages.pb.go index 19192cb5e..d3693b9fa 100644 --- a/repmanv3/messages.pb.go +++ b/repmanv3/messages.pb.go @@ -120,7 +120,7 @@ func (x StateMessage_Severity) Number() protoreflect.EnumNumber { // Deprecated: Use StateMessage_Severity.Descriptor instead. func (StateMessage_Severity) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3, 0} + return file_messages_proto_rawDescGZIP(), []int{4, 0} } type ClusterSetting_Action int32 @@ -190,7 +190,7 @@ func (x ClusterSetting_Action) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterSetting_Action.Descriptor instead. func (ClusterSetting_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0} + return file_messages_proto_rawDescGZIP(), []int{5, 0} } type ClusterSetting_Setting_SettingName int32 @@ -413,7 +413,7 @@ func (x ClusterSetting_Setting_SettingName) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterSetting_Setting_SettingName.Descriptor instead. func (ClusterSetting_Setting_SettingName) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0, 0} + return file_messages_proto_rawDescGZIP(), []int{5, 0, 0} } type ClusterSetting_Switch_SwitchName int32 @@ -633,7 +633,7 @@ func (x ClusterSetting_Switch_SwitchName) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterSetting_Switch_SwitchName.Descriptor instead. func (ClusterSetting_Switch_SwitchName) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 1, 0} + return file_messages_proto_rawDescGZIP(), []int{5, 1, 0} } type Server_Type int32 @@ -682,7 +682,7 @@ func (x Server_Type) Number() protoreflect.EnumNumber { // Deprecated: Use Server_Type.Descriptor instead. func (Server_Type) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5, 0} + return file_messages_proto_rawDescGZIP(), []int{6, 0} } type Server_Database int32 @@ -737,7 +737,7 @@ func (x Server_Database) Number() protoreflect.EnumNumber { // Deprecated: Use Server_Database.Descriptor instead. func (Server_Database) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5, 1} + return file_messages_proto_rawDescGZIP(), []int{6, 1} } type Server_Proxy int32 @@ -801,7 +801,7 @@ func (x Server_Proxy) Number() protoreflect.EnumNumber { // Deprecated: Use Server_Proxy.Descriptor instead. func (Server_Proxy) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5, 2} + return file_messages_proto_rawDescGZIP(), []int{6, 2} } type ClusterAction_Action int32 @@ -907,7 +907,7 @@ func (x ClusterAction_Action) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterAction_Action.Descriptor instead. func (ClusterAction_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{6, 0} + return file_messages_proto_rawDescGZIP(), []int{7, 0} } type ClusterAction_ReplicationTopology int32 @@ -971,7 +971,7 @@ func (x ClusterAction_ReplicationTopology) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterAction_ReplicationTopology.Descriptor instead. func (ClusterAction_ReplicationTopology) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{6, 1} + return file_messages_proto_rawDescGZIP(), []int{7, 1} } type DatabaseStatus_Status int32 @@ -1044,7 +1044,7 @@ func (x DatabaseStatus_Status) Number() protoreflect.EnumNumber { // Deprecated: Use DatabaseStatus_Status.Descriptor instead. func (DatabaseStatus_Status) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{7, 0} + return file_messages_proto_rawDescGZIP(), []int{8, 0} } type DatabaseAction_Action int32 @@ -1123,14 +1123,13 @@ func (x DatabaseAction_Action) Number() protoreflect.EnumNumber { // Deprecated: Use DatabaseAction_Action.Descriptor instead. func (DatabaseAction_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{8, 0} + return file_messages_proto_rawDescGZIP(), []int{9, 0} } type TopologyRetrieval_Retrieval int32 const ( TopologyRetrieval_RETRIEVAL_UNSPECIFIED TopologyRetrieval_Retrieval = 0 - TopologyRetrieval_CRASHES TopologyRetrieval_Retrieval = 2 TopologyRetrieval_LOGS TopologyRetrieval_Retrieval = 3 TopologyRetrieval_MASTER TopologyRetrieval_Retrieval = 4 TopologyRetrieval_PROXIES TopologyRetrieval_Retrieval = 5 @@ -1142,7 +1141,6 @@ const ( var ( TopologyRetrieval_Retrieval_name = map[int32]string{ 0: "RETRIEVAL_UNSPECIFIED", - 2: "CRASHES", 3: "LOGS", 4: "MASTER", 5: "PROXIES", @@ -1151,7 +1149,6 @@ var ( } TopologyRetrieval_Retrieval_value = map[string]int32{ "RETRIEVAL_UNSPECIFIED": 0, - "CRASHES": 2, "LOGS": 3, "MASTER": 4, "PROXIES": 5, @@ -1184,7 +1181,7 @@ func (x TopologyRetrieval_Retrieval) Number() protoreflect.EnumNumber { // Deprecated: Use TopologyRetrieval_Retrieval.Descriptor instead. func (TopologyRetrieval_Retrieval) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{10, 0} + return file_messages_proto_rawDescGZIP(), []int{11, 0} } type TableAction_Action int32 @@ -1239,7 +1236,7 @@ func (x TableAction_Action) Number() protoreflect.EnumNumber { // Deprecated: Use TableAction_Action.Descriptor instead. func (TableAction_Action) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{14, 0} + return file_messages_proto_rawDescGZIP(), []int{15, 0} } type ClusterTest_Test int32 @@ -1414,7 +1411,7 @@ func (x ClusterTest_Test) Number() protoreflect.EnumNumber { // Deprecated: Use ClusterTest_Test.Descriptor instead. func (ClusterTest_Test) EnumDescriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{16, 0} + return file_messages_proto_rawDescGZIP(), []int{17, 0} } type ErrorInfo struct { @@ -1573,7 +1570,7 @@ type Cluster struct { WaitingRejoin int32 `protobuf:"varint,39,opt,name=waiting_rejoin,json=waitingRejoin,proto3" json:"waiting_rejoin,omitempty"` WaitingSwitchover int32 `protobuf:"varint,40,opt,name=waiting_switchover,json=waitingSwitchover,proto3" json:"waiting_switchover,omitempty"` WaitingFailover int32 `protobuf:"varint,41,opt,name=waiting_failover,json=waitingFailover,proto3" json:"waiting_failover,omitempty"` - Crashes []*Cluster_Crash `protobuf:"bytes,42,rep,name=crashes,json=dbServersCrashes,proto3" json:"crashes,omitempty"` + Crashes []*Crash `protobuf:"bytes,42,rep,name=crashes,json=dbServersCrashes,proto3" json:"crashes,omitempty"` Conf *structpb.Struct `protobuf:"bytes,43,opt,name=conf,json=config,proto3" json:"conf,omitempty"` // configurator.Configurator Configurator = 44 [json_name="configurator"]; // []VariableDiff DiffVariables = 45 [json_name="diffVariables"]; @@ -1907,7 +1904,7 @@ func (x *Cluster) GetWaitingFailover() int32 { return 0 } -func (x *Cluster) GetCrashes() []*Cluster_Crash { +func (x *Cluster) GetCrashes() []*Crash { if x != nil { return x.Crashes } @@ -1956,6 +1953,109 @@ func (x *Cluster) GetVmType() map[string]bool { return nil } +type Crash struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=url,json=URL,proto3" json:"url,omitempty"` + FailoverMasterLogFile string `protobuf:"bytes,2,opt,name=failover_master_log_file,json=FailoverMasterLogFile,proto3" json:"failover_master_log_file,omitempty"` + FailoverMasterLogPos string `protobuf:"bytes,3,opt,name=failover_master_log_pos,json=FailoverMasterLogPos,proto3" json:"failover_master_log_pos,omitempty"` + NewMasterLogFile string `protobuf:"bytes,4,opt,name=new_master_log_file,json=NewMasterLogFile,proto3" json:"new_master_log_file,omitempty"` + NewMasterLogPos string `protobuf:"bytes,5,opt,name=new_master_log_pos,json=NewMasterLogPos,proto3" json:"new_master_log_pos,omitempty"` + FailoverSemiSyncSlaveStatus bool `protobuf:"varint,6,opt,name=failover_semi_sync_slave_status,json=FailoverSemiSyncSlaveStatus,proto3" json:"failover_semi_sync_slave_status,omitempty"` + FailoverIoGtids []*gtid.Gtid `protobuf:"bytes,7,rep,name=failover_io_gtids,json=FailoverIOGtid,proto3" json:"failover_io_gtids,omitempty"` + ElectedMasterUrl string `protobuf:"bytes,8,opt,name=elected_master_url,json=ElectedMasterURL,proto3" json:"elected_master_url,omitempty"` +} + +func (x *Crash) Reset() { + *x = Crash{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Crash) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Crash) ProtoMessage() {} + +func (x *Crash) ProtoReflect() protoreflect.Message { + mi := &file_messages_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 Crash.ProtoReflect.Descriptor instead. +func (*Crash) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{3} +} + +func (x *Crash) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Crash) GetFailoverMasterLogFile() string { + if x != nil { + return x.FailoverMasterLogFile + } + return "" +} + +func (x *Crash) GetFailoverMasterLogPos() string { + if x != nil { + return x.FailoverMasterLogPos + } + return "" +} + +func (x *Crash) GetNewMasterLogFile() string { + if x != nil { + return x.NewMasterLogFile + } + return "" +} + +func (x *Crash) GetNewMasterLogPos() string { + if x != nil { + return x.NewMasterLogPos + } + return "" +} + +func (x *Crash) GetFailoverSemiSyncSlaveStatus() bool { + if x != nil { + return x.FailoverSemiSyncSlaveStatus + } + return false +} + +func (x *Crash) GetFailoverIoGtids() []*gtid.Gtid { + if x != nil { + return x.FailoverIoGtids + } + return nil +} + +func (x *Crash) GetElectedMasterUrl() string { + if x != nil { + return x.ElectedMasterUrl + } + return "" +} + type StateMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1970,7 +2070,7 @@ type StateMessage struct { func (x *StateMessage) Reset() { *x = StateMessage{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[3] + mi := &file_messages_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1983,7 +2083,7 @@ func (x *StateMessage) String() string { func (*StateMessage) ProtoMessage() {} func (x *StateMessage) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[3] + mi := &file_messages_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1996,7 +2096,7 @@ func (x *StateMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use StateMessage.ProtoReflect.Descriptor instead. func (*StateMessage) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3} + return file_messages_proto_rawDescGZIP(), []int{4} } func (x *StateMessage) GetSeverity() StateMessage_Severity { @@ -2042,7 +2142,7 @@ type ClusterSetting struct { func (x *ClusterSetting) Reset() { *x = ClusterSetting{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[4] + mi := &file_messages_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2055,7 +2155,7 @@ func (x *ClusterSetting) String() string { func (*ClusterSetting) ProtoMessage() {} func (x *ClusterSetting) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[4] + mi := &file_messages_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2068,7 +2168,7 @@ func (x *ClusterSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterSetting.ProtoReflect.Descriptor instead. func (*ClusterSetting) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4} + return file_messages_proto_rawDescGZIP(), []int{5} } func (x *ClusterSetting) GetCluster() *Cluster { @@ -2121,7 +2221,7 @@ type Server struct { func (x *Server) Reset() { *x = Server{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[5] + mi := &file_messages_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2134,7 +2234,7 @@ func (x *Server) String() string { func (*Server) ProtoMessage() {} func (x *Server) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[5] + mi := &file_messages_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2147,7 +2247,7 @@ func (x *Server) ProtoReflect() protoreflect.Message { // Deprecated: Use Server.ProtoReflect.Descriptor instead. func (*Server) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5} + return file_messages_proto_rawDescGZIP(), []int{6} } func (x *Server) GetHost() string { @@ -2200,7 +2300,7 @@ type ClusterAction struct { func (x *ClusterAction) Reset() { *x = ClusterAction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[6] + mi := &file_messages_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2213,7 +2313,7 @@ func (x *ClusterAction) String() string { func (*ClusterAction) ProtoMessage() {} func (x *ClusterAction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[6] + mi := &file_messages_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2226,7 +2326,7 @@ func (x *ClusterAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterAction.ProtoReflect.Descriptor instead. func (*ClusterAction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{6} + return file_messages_proto_rawDescGZIP(), []int{7} } func (x *ClusterAction) GetCluster() *Cluster { @@ -2277,7 +2377,7 @@ type DatabaseStatus struct { func (x *DatabaseStatus) Reset() { *x = DatabaseStatus{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[7] + mi := &file_messages_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2290,7 +2390,7 @@ func (x *DatabaseStatus) String() string { func (*DatabaseStatus) ProtoMessage() {} func (x *DatabaseStatus) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[7] + mi := &file_messages_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2303,7 +2403,7 @@ func (x *DatabaseStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use DatabaseStatus.ProtoReflect.Descriptor instead. func (*DatabaseStatus) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{7} + return file_messages_proto_rawDescGZIP(), []int{8} } func (x *DatabaseStatus) GetCluster() *Cluster { @@ -2340,7 +2440,7 @@ type DatabaseAction struct { func (x *DatabaseAction) Reset() { *x = DatabaseAction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[8] + mi := &file_messages_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2353,7 +2453,7 @@ func (x *DatabaseAction) String() string { func (*DatabaseAction) ProtoMessage() {} func (x *DatabaseAction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[8] + mi := &file_messages_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2366,7 +2466,7 @@ func (x *DatabaseAction) ProtoReflect() protoreflect.Message { // Deprecated: Use DatabaseAction.ProtoReflect.Descriptor instead. func (*DatabaseAction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{8} + return file_messages_proto_rawDescGZIP(), []int{9} } func (x *DatabaseAction) GetCluster() *Cluster { @@ -2401,7 +2501,7 @@ type StatusMessage struct { func (x *StatusMessage) Reset() { *x = StatusMessage{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[9] + mi := &file_messages_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2414,7 +2514,7 @@ func (x *StatusMessage) String() string { func (*StatusMessage) ProtoMessage() {} func (x *StatusMessage) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[9] + mi := &file_messages_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2427,7 +2527,7 @@ func (x *StatusMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusMessage.ProtoReflect.Descriptor instead. func (*StatusMessage) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{9} + return file_messages_proto_rawDescGZIP(), []int{10} } func (x *StatusMessage) GetAlive() ServiceStatus { @@ -2449,7 +2549,7 @@ type TopologyRetrieval struct { func (x *TopologyRetrieval) Reset() { *x = TopologyRetrieval{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[10] + mi := &file_messages_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2462,7 +2562,7 @@ func (x *TopologyRetrieval) String() string { func (*TopologyRetrieval) ProtoMessage() {} func (x *TopologyRetrieval) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[10] + mi := &file_messages_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2475,7 +2575,7 @@ func (x *TopologyRetrieval) ProtoReflect() protoreflect.Message { // Deprecated: Use TopologyRetrieval.ProtoReflect.Descriptor instead. func (*TopologyRetrieval) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{10} + return file_messages_proto_rawDescGZIP(), []int{11} } func (x *TopologyRetrieval) GetCluster() *Cluster { @@ -2505,7 +2605,7 @@ type Certificate struct { func (x *Certificate) Reset() { *x = Certificate{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[11] + mi := &file_messages_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2518,7 +2618,7 @@ func (x *Certificate) String() string { func (*Certificate) ProtoMessage() {} func (x *Certificate) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[11] + mi := &file_messages_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2531,7 +2631,7 @@ func (x *Certificate) ProtoReflect() protoreflect.Message { // Deprecated: Use Certificate.ProtoReflect.Descriptor instead. func (*Certificate) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{11} + return file_messages_proto_rawDescGZIP(), []int{12} } func (x *Certificate) GetClientCertificate() string { @@ -2574,7 +2674,7 @@ type Backup struct { func (x *Backup) Reset() { *x = Backup{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2587,7 +2687,7 @@ func (x *Backup) String() string { func (*Backup) ProtoMessage() {} func (x *Backup) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[12] + mi := &file_messages_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2600,7 +2700,7 @@ func (x *Backup) ProtoReflect() protoreflect.Message { // Deprecated: Use Backup.ProtoReflect.Descriptor instead. func (*Backup) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{12} + return file_messages_proto_rawDescGZIP(), []int{13} } func (x *Backup) GetId() string { @@ -2679,7 +2779,7 @@ type Tag struct { func (x *Tag) Reset() { *x = Tag{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2692,7 +2792,7 @@ func (x *Tag) String() string { func (*Tag) ProtoMessage() {} func (x *Tag) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[13] + mi := &file_messages_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2705,7 +2805,7 @@ func (x *Tag) ProtoReflect() protoreflect.Message { // Deprecated: Use Tag.ProtoReflect.Descriptor instead. func (*Tag) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{13} + return file_messages_proto_rawDescGZIP(), []int{14} } func (x *Tag) GetId() uint64 { @@ -2744,7 +2844,7 @@ type TableAction struct { func (x *TableAction) Reset() { *x = TableAction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[14] + mi := &file_messages_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2757,7 +2857,7 @@ func (x *TableAction) String() string { func (*TableAction) ProtoMessage() {} func (x *TableAction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[14] + mi := &file_messages_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2770,7 +2870,7 @@ func (x *TableAction) ProtoReflect() protoreflect.Message { // Deprecated: Use TableAction.ProtoReflect.Descriptor instead. func (*TableAction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{14} + return file_messages_proto_rawDescGZIP(), []int{15} } func (x *TableAction) GetCluster() *Cluster { @@ -2827,7 +2927,7 @@ type Table struct { func (x *Table) Reset() { *x = Table{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[15] + mi := &file_messages_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2840,7 +2940,7 @@ func (x *Table) String() string { func (*Table) ProtoMessage() {} func (x *Table) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[15] + mi := &file_messages_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2853,7 +2953,7 @@ func (x *Table) ProtoReflect() protoreflect.Message { // Deprecated: Use Table.ProtoReflect.Descriptor instead. func (*Table) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{15} + return file_messages_proto_rawDescGZIP(), []int{16} } func (x *Table) GetTableSchema() string { @@ -2933,7 +3033,7 @@ type ClusterTest struct { func (x *ClusterTest) Reset() { *x = ClusterTest{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[16] + mi := &file_messages_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2946,7 +3046,7 @@ func (x *ClusterTest) String() string { func (*ClusterTest) ProtoMessage() {} func (x *ClusterTest) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[16] + mi := &file_messages_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2959,7 +3059,7 @@ func (x *ClusterTest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterTest.ProtoReflect.Descriptor instead. func (*ClusterTest) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{16} + return file_messages_proto_rawDescGZIP(), []int{17} } func (x *ClusterTest) GetCluster() *Cluster { @@ -2990,109 +3090,6 @@ func (x *ClusterTest) GetUnprovision() bool { return false } -type Cluster_Crash struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Url string `protobuf:"bytes,1,opt,name=url,json=URL,proto3" json:"url,omitempty"` - FailoverMasterLogFile string `protobuf:"bytes,2,opt,name=failover_master_log_file,json=FailoverMasterLogFile,proto3" json:"failover_master_log_file,omitempty"` - FailoverMasterLogPos string `protobuf:"bytes,3,opt,name=failover_master_log_pos,json=FailoverMasterLogPos,proto3" json:"failover_master_log_pos,omitempty"` - NewMasterLogFile string `protobuf:"bytes,4,opt,name=new_master_log_file,json=NewMasterLogFile,proto3" json:"new_master_log_file,omitempty"` - NewMasterLogPos string `protobuf:"bytes,5,opt,name=new_master_log_pos,json=NewMasterLogPos,proto3" json:"new_master_log_pos,omitempty"` - FailoverSemiSyncSlaveStatus bool `protobuf:"varint,6,opt,name=failover_semi_sync_slave_status,json=FailoverSemiSyncSlaveStatus,proto3" json:"failover_semi_sync_slave_status,omitempty"` - FailoverIoGtids []*gtid.Gtid `protobuf:"bytes,7,rep,name=failover_io_gtids,json=FailoverIOGtid,proto3" json:"failover_io_gtids,omitempty"` - ElectedMasterUrl string `protobuf:"bytes,8,opt,name=elected_master_url,json=ElectedMasterURL,proto3" json:"elected_master_url,omitempty"` -} - -func (x *Cluster_Crash) Reset() { - *x = Cluster_Crash{} - if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Cluster_Crash) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Cluster_Crash) ProtoMessage() {} - -func (x *Cluster_Crash) ProtoReflect() protoreflect.Message { - mi := &file_messages_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 Cluster_Crash.ProtoReflect.Descriptor instead. -func (*Cluster_Crash) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{2, 0} -} - -func (x *Cluster_Crash) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -func (x *Cluster_Crash) GetFailoverMasterLogFile() string { - if x != nil { - return x.FailoverMasterLogFile - } - return "" -} - -func (x *Cluster_Crash) GetFailoverMasterLogPos() string { - if x != nil { - return x.FailoverMasterLogPos - } - return "" -} - -func (x *Cluster_Crash) GetNewMasterLogFile() string { - if x != nil { - return x.NewMasterLogFile - } - return "" -} - -func (x *Cluster_Crash) GetNewMasterLogPos() string { - if x != nil { - return x.NewMasterLogPos - } - return "" -} - -func (x *Cluster_Crash) GetFailoverSemiSyncSlaveStatus() bool { - if x != nil { - return x.FailoverSemiSyncSlaveStatus - } - return false -} - -func (x *Cluster_Crash) GetFailoverIoGtids() []*gtid.Gtid { - if x != nil { - return x.FailoverIoGtids - } - return nil -} - -func (x *Cluster_Crash) GetElectedMasterUrl() string { - if x != nil { - return x.ElectedMasterUrl - } - return "" -} - type ClusterSetting_Setting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3131,7 +3128,7 @@ func (x *ClusterSetting_Setting) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterSetting_Setting.ProtoReflect.Descriptor instead. func (*ClusterSetting_Setting) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 0} + return file_messages_proto_rawDescGZIP(), []int{5, 0} } func (x *ClusterSetting_Setting) GetName() ClusterSetting_Setting_SettingName { @@ -3185,7 +3182,7 @@ func (x *ClusterSetting_Switch) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterSetting_Switch.ProtoReflect.Descriptor instead. func (*ClusterSetting_Switch) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4, 1} + return file_messages_proto_rawDescGZIP(), []int{5, 1} } func (x *ClusterSetting_Switch) GetName() ClusterSetting_Switch_SwitchName { @@ -3215,7 +3212,7 @@ var file_messages_proto_rawDesc = []byte{ 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, - 0xfb, 0x16, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0xc5, 0x13, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, @@ -3317,762 +3314,761 @@ var file_messages_proto_rawDesc = []byte{ 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x07, 0x63, 0x72, 0x61, 0x73, 0x68, - 0x65, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x07, 0x63, 0x72, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x2e, 0x43, 0x72, 0x61, 0x73, 0x68, 0x52, 0x10, 0x64, 0x62, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x73, 0x43, 0x72, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x63, 0x6f, - 0x6e, 0x66, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5c, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x39, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x0d, 0x74, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, - 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x66, 0x73, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x2e, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x53, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x07, - 0x76, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x36, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xab, 0x03, 0x0a, 0x05, - 0x43, 0x72, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, - 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x46, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, - 0x12, 0x35, 0x0a, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x14, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, - 0x72, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x77, 0x5f, 0x6d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, - 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, - 0x50, 0x6f, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, - 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x6c, - 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x66, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6f, 0x5f, 0x67, 0x74, 0x69, 0x64, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x74, 0x69, 0x64, 0x52, 0x0e, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x4f, 0x47, 0x74, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x55, 0x52, 0x4c, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x73, - 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd7, 0x01, - 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x52, - 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x61, 0x73, 0x68, + 0x52, 0x10, 0x64, 0x62, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x43, 0x72, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x66, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x5c, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x5f, 0x0a, 0x0d, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x33, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0c, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x4d, 0x0a, 0x07, 0x66, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x34, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x46, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x53, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x35, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x69, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x76, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x36, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x3b, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, + 0x56, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xab, 0x03, 0x0a, 0x05, 0x43, 0x72, 0x61, 0x73, + 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x55, 0x52, 0x4c, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, + 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x17, + 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, + 0x50, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x46, 0x69, + 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x12, + 0x44, 0x0a, 0x1f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6d, 0x69, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x5f, 0x69, 0x6f, 0x5f, 0x67, 0x74, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, - 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, - 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x12, - 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, - 0x6f, 0x6d, 0x22, 0x33, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x22, 0xe3, 0x20, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, - 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, - 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, - 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, - 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x76, 0x33, 0x2e, 0x47, 0x74, 0x69, 0x64, 0x52, 0x0e, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x49, 0x4f, 0x47, 0x74, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x55, 0x52, 0x4c, 0x22, 0xd7, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, - 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, - 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, - 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, - 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, - 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, - 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, - 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, - 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, - 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, - 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, - 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, - 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, - 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, - 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, - 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, - 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, - 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, - 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, - 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, - 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, - 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, - 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, - 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, - 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, - 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, - 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, - 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, - 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, - 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, - 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x1b, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, - 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, - 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, - 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, - 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, - 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, - 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, - 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, - 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, - 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, - 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, - 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, - 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, - 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, - 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, - 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, - 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, - 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, - 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, - 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, - 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, - 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, - 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, - 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, - 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x35, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, - 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, - 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, - 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, - 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, - 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, - 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, - 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, - 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, - 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, - 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, - 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, - 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, - 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, - 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, - 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, - 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, - 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, - 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, - 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, - 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, - 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, 0xf6, 0x0d, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, + 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x33, 0x0a, 0x08, 0x53, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, + 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x22, + 0xe3, 0x20, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x67, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0xd6, 0x0e, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x43, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, - 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, - 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, - 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, - 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, - 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, - 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, - 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, - 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, - 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, - 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, - 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, - 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, - 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, - 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, - 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, - 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, - 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, - 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, - 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, - 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, - 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, - 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, - 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, - 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, - 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, - 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, - 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, - 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, - 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, - 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, - 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, - 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, - 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, - 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, - 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, - 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, - 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, - 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, - 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, - 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, - 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, - 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, - 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, - 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, - 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, - 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, - 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, - 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, - 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, - 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, - 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, - 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, - 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, - 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, - 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, - 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, - 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, - 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, - 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, - 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, - 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, - 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, - 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, - 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, - 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, - 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, - 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, - 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, - 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, - 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, + 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xdb, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, + 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x44, 0x41, 0x49, 0x4c, 0x59, + 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, + 0x50, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, + 0x59, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, + 0x45, 0x50, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x42, + 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x4c, + 0x59, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, + 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, + 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, + 0x48, 0x4f, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x4f, + 0x56, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x46, + 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x4c, 0x41, 0x56, + 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x58, + 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, + 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, + 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, + 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, 0x47, + 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, + 0x42, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0x10, 0x12, 0x17, 0x0a, + 0x13, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, + 0x56, 0x49, 0x43, 0x45, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, + 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x49, 0x4f, 0x50, 0x53, + 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, + 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x15, + 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x44, 0x49, 0x53, 0x4b, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x44, 0x42, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x41, + 0x59, 0x53, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, + 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x44, 0x42, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x53, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, + 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x1b, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x43, + 0x4e, 0x49, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, + 0x52, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, + 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, + 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x43, 0x4f, 0x52, 0x45, + 0x53, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x21, 0x12, + 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, + 0x53, 0x4b, 0x5f, 0x46, 0x53, 0x10, 0x22, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, + 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, + 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x48, 0x41, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4d, 0x41, + 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, + 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, + 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x2f, + 0x12, 0x24, 0x0a, 0x20, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x44, + 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x30, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x31, 0x12, 0x1b, 0x0a, + 0x17, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x32, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, + 0x4f, 0x56, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x10, + 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, + 0x5f, 0x49, 0x4d, 0x47, 0x10, 0x34, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, + 0x4d, 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, + 0x35, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, + 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x36, + 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, + 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x38, 0x12, 0x2c, 0x0a, + 0x28, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x53, + 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3a, 0x12, + 0x2f, 0x0a, 0x2b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3b, + 0x12, 0x26, 0x0a, 0x22, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, + 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3c, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, - 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, - 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, - 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, - 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, - 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, - 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, - 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, - 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, - 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, - 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, - 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, - 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, - 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, - 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, - 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, - 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, - 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, - 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, - 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, - 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0x97, 0x04, - 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, - 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, + 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, + 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x48, 0x45, 0x44, + 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x5f, 0x43, 0x52, + 0x4f, 0x4e, 0x10, 0x3e, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, + 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, + 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x43, 0x48, 0x45, 0x44, + 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, + 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x1d, 0x0a, 0x19, 0x53, + 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x52, 0x4f, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x48, + 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, + 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x42, 0x12, 0x20, 0x0a, + 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x49, 0x54, + 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x43, 0x1a, + 0xf6, 0x0d, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x94, 0x0d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, + 0x20, 0x0a, 0x1c, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, + 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, + 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, + 0x59, 0x4e, 0x43, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, + 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, + 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x05, 0x12, 0x18, + 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4d, 0x59, 0x53, + 0x51, 0x4c, 0x44, 0x55, 0x4d, 0x50, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x4f, + 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x54, 0x4f, + 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x53, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x48, 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, + 0x54, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x5a, 0x46, 0x53, 0x5f, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x10, + 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, + 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x55, 0x54, 0x4f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x0b, 0x12, + 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, + 0x53, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x52, 0x45, + 0x53, 0x54, 0x49, 0x43, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, + 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, + 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x52, + 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, + 0x45, 0x41, 0x52, 0x54, 0x42, 0x45, 0x41, 0x54, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, + 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x11, + 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x12, 0x12, 0x19, + 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x49, + 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, + 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, + 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x41, 0x49, + 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x55, 0x4e, + 0x53, 0x41, 0x46, 0x45, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, + 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, + 0x5f, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, 0x10, 0x18, 0x12, 0x14, 0x0a, 0x10, 0x47, + 0x52, 0x41, 0x50, 0x48, 0x49, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, + 0x19, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, + 0x43, 0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x10, 0x1a, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, + 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x4e, 0x4f, 0x44, 0x42, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1b, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x4e, 0x49, 0x54, + 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x1a, 0x0a, + 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x43, + 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x4f, 0x4e, + 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x49, 0x45, 0x53, 0x10, + 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, + 0x53, 0x41, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x1f, 0x12, 0x18, 0x0a, + 0x14, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, + 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, + 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x46, + 0x46, 0x10, 0x22, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x42, 0x5f, 0x41, + 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x10, 0x23, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x44, 0x4f, + 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x56, + 0x41, 0x54, 0x45, 0x10, 0x24, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x56, 0x5f, 0x4e, 0x45, + 0x54, 0x5f, 0x43, 0x4e, 0x49, 0x10, 0x25, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, + 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x20, + 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, + 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x27, + 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, + 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x53, 0x10, 0x28, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, + 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, + 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x29, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x53, 0x10, 0x2b, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, + 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x56, 0x41, 0x52, 0x49, + 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, + 0x53, 0x51, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x2d, 0x12, + 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x43, 0x4f, 0x50, 0x59, + 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x2f, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x43, 0x48, 0x45, 0x44, + 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, + 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x30, + 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x1d, 0x0a, 0x19, + 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x53, + 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x53, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x33, 0x12, 0x28, + 0x0a, 0x24, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x44, 0x42, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, + 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x34, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x53, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x35, + 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, + 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x36, 0x12, 0x1d, + 0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, + 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x37, 0x12, 0x1a, 0x0a, + 0x16, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x43, 0x4f, 0x50, 0x59, + 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x53, 0x10, 0x38, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, + 0x39, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, 0x3a, 0x12, 0x0b, 0x0a, 0x07, 0x56, + 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, 0x3b, 0x22, 0xaa, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x5f, 0x44, 0x59, 0x4e, 0x41, + 0x4d, 0x49, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, + 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, + 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, 0x12, 0x0e, 0x0a, + 0x0a, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0a, 0x12, 0x0f, 0x0a, + 0x0b, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0b, 0x12, 0x11, + 0x0a, 0x0d, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, + 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, + 0x54, 0x41, 0x47, 0x10, 0x0d, 0x22, 0x97, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, + 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, + 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, + 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, + 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, + 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, + 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, + 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, + 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, + 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, + 0xe1, 0x07, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x12, 0x43, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x05, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, - 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x02, 0x22, 0x59, 0x0a, 0x08, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, - 0x42, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x52, 0x49, 0x41, 0x44, 0x42, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x43, 0x4f, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, - 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4f, 0x53, 0x54, 0x47, - 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x04, 0x22, 0x7e, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x53, 0x43, - 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x53, 0x51, - 0x4c, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x44, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x04, - 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, - 0x08, 0x45, 0x58, 0x54, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, - 0x50, 0x48, 0x49, 0x4e, 0x58, 0x10, 0x07, 0x22, 0xe1, 0x07, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, + 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, + 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, + 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, + 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, + 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, + 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, + 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, + 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, + 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, + 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, + 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, + 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, + 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, + 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, + 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, + 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, + 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, + 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, + 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, + 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, + 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, + 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, + 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, + 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, + 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, + 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, + 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, + 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, + 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, + 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, + 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, + 0x50, 0x10, 0x07, 0x22, 0xab, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x06, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, + 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, + 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, + 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x53, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x07, + 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x08, 0x12, 0x17, + 0x0a, 0x13, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, + 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x45, 0x45, 0x44, 0x5f, + 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, + 0x0a, 0x22, 0xd3, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x06, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, + 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, + 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, + 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, + 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x07, + 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, + 0x43, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, + 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, 0x43, + 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0a, 0x12, + 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x51, 0x55, + 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, + 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x0c, 0x22, 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0x95, + 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x22, 0x62, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, + 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, + 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x04, + 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, + 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4c, + 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, + 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4d, 0x0a, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x06, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, + 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x5e, 0x0a, - 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x42, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x41, 0x44, 0x44, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, - 0x15, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, - 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4e, 0x43, - 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, - 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, - 0x08, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, - 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, - 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x46, - 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, - 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x4c, 0x41, 0x10, 0x0b, - 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x0e, 0x0a, - 0x0a, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x0d, 0x12, 0x11, 0x0a, - 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10, 0x0e, - 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, - 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, - 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x42, 0x45, 0x4e, 0x43, 0x48, 0x10, 0x11, - 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x41, 0x49, 0x54, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, - 0x53, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x13, 0x12, 0x17, - 0x0a, 0x13, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, - 0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, - 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, - 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x22, 0xc1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, - 0x12, 0x0a, 0x0e, 0x52, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x4c, - 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, - 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x47, 0x54, 0x49, 0x44, 0x10, 0x02, 0x12, - 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, - 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, - 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x58, 0x53, 0x43, - 0x41, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, - 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x49, 0x4e, - 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4d, 0x41, 0x53, - 0x54, 0x45, 0x52, 0x5f, 0x57, 0x53, 0x52, 0x45, 0x50, 0x10, 0x07, 0x22, 0xab, 0x03, 0x0a, 0x0e, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, - 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, - 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, - 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, - 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, - 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, - 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, - 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x53, 0x5f, - 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x53, - 0x4c, 0x41, 0x56, 0x45, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, - 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, 0x10, 0x09, 0x12, - 0x18, 0x0a, 0x14, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, - 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x0a, 0x22, 0xd3, 0x03, 0x0a, 0x0e, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, - 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, - 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x50, 0x52, 0x4f, 0x56, 0x49, - 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x56, - 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, - 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x41, 0x43, 0x4b, - 0x55, 0x50, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x12, 0x0a, - 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, - 0x09, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x0a, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x47, 0x10, - 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x45, 0x10, 0x0c, 0x22, - 0x55, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x44, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2e, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xa2, 0x02, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x58, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, - 0x52, 0x08, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x22, 0x6f, 0x0a, 0x09, 0x52, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x54, 0x52, 0x49, - 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x53, 0x10, 0x02, 0x12, - 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x53, - 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x45, 0x53, - 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x53, 0x10, 0x07, 0x22, 0x79, 0x0a, 0x0b, 0x43, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, - 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, - 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x92, - 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, - 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, + 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x48, 0x41, 0x52, + 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x49, + 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x22, 0xa7, + 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x77, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, + 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, + 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, 0xf9, 0x11, 0x0a, 0x0b, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x09, + 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x31, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x33, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x76, 0x33, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, - 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x45, 0x43, 0x4b, - 0x53, 0x55, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, - 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, - 0x45, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x13, - 0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x56, 0x45, 0x52, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x04, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, - 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, - 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, 0xf9, 0x11, - 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, - 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x12, 0x4e, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2e, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, - 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x95, 0x10, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, - 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x10, 0x02, 0x12, - 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, - 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, - 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, - 0x6e, 0x63, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, - 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x65, 0x73, 0x74, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, - 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, + 0x73, 0x74, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x75, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x10, 0x0a, + 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6c, 0x6c, 0x10, 0x01, 0x12, + 0x09, 0x0a, 0x05, 0x53, 0x75, 0x69, 0x74, 0x65, 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, + 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, + 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x03, 0x12, + 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, + 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, + 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x74, 0x69, 0x64, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x65, - 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, - 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x73, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, - 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x75, 0x61, - 0x6c, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, - 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x0a, 0x12, 0x34, 0x0a, 0x30, 0x54, 0x65, - 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x10, 0x0b, - 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x65, 0x73, + 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, 0x05, 0x12, 0x26, 0x0a, + 0x22, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, + 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x47, + 0x74, 0x69, 0x64, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x10, 0x07, 0x12, + 0x25, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x41, + 0x73, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, + 0x65, 0x6c, 0x61, 0x79, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x10, 0x09, 0x12, 0x25, + 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, + 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, + 0x79, 0x6e, 0x63, 0x10, 0x0a, 0x12, 0x34, 0x0a, 0x30, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, + 0x63, 0x68, 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, + 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x10, + 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x53, 0x58, 0x4d, 0x53, + 0x53, 0x4d, 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, + 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, 0x4d, 0x58, + 0x53, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0f, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, + 0x58, 0x4d, 0x53, 0x10, 0x10, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, + 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x11, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, + 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, + 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, + 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x53, 0x4d, 0x53, 0x10, 0x12, 0x12, 0x2c, 0x0a, 0x28, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, + 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, + 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x13, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, - 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x73, 0x68, - 0x62, 0x61, 0x63, 0x6b, 0x10, 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, - 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, 0x53, 0x58, 0x58, - 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, + 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, + 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x14, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, - 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x53, 0x53, 0x58, 0x4d, - 0x53, 0x58, 0x58, 0x4d, 0x58, 0x53, 0x4d, 0x53, 0x53, 0x4d, 0x10, 0x0f, 0x12, 0x2c, 0x0a, 0x28, - 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, - 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, - 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x10, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, - 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, - 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, - 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x11, 0x12, 0x31, 0x0a, - 0x2d, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, - 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x53, - 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x53, 0x4d, 0x53, 0x10, 0x12, - 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x13, 0x12, 0x2e, - 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, - 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x14, 0x12, 0x32, - 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, - 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, - 0x10, 0x15, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, + 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x15, 0x12, 0x33, 0x0a, + 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, + 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, + 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x4d, 0x58, 0x4d, 0x53, + 0x10, 0x16, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, - 0x52, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x16, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x46, + 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x17, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, - 0x53, 0x4d, 0x58, 0x58, 0x58, 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x17, 0x12, 0x32, 0x0a, 0x2e, - 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, - 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, - 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x4d, 0x58, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x18, - 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x19, - 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x4d, 0x58, - 0x4d, 0x53, 0x10, 0x1a, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, - 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, - 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x1b, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x65, 0x73, 0x74, - 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, - 0x53, 0x6c, 0x61, 0x76, 0x65, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x52, - 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x65, 0x73, 0x74, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x52, 0x65, - 0x61, 0x63, 0x68, 0x10, 0x1d, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, - 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1e, 0x12, 0x26, - 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, - 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, - 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1f, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, - 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, - 0x20, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, + 0x53, 0x4d, 0x58, 0x58, 0x58, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x18, 0x12, 0x2e, 0x0a, 0x2a, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, + 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, + 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x53, 0x4d, 0x10, 0x19, 0x12, 0x32, 0x0a, 0x2e, 0x54, + 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, + 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x55, 0x6e, 0x73, + 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x4d, 0x58, 0x4d, 0x53, 0x10, 0x1a, 0x12, + 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, + 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, + 0x6e, 0x55, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x4d, 0x53, 0x58, 0x4d, 0x58, 0x58, 0x58, 0x4d, 0x53, + 0x4d, 0x10, 0x1b, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x53, 0x65, 0x6d, 0x69, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x6c, 0x61, 0x76, 0x65, + 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x1d, + 0x12, 0x27, 0x0a, 0x23, 0x54, 0x65, 0x73, 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, + 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x53, + 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x1e, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, + 0x74, 0x53, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, + 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, + 0x1f, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, - 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x21, 0x12, 0x40, 0x0a, 0x3c, 0x54, 0x65, - 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, - 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x22, 0x12, 0x35, 0x0a, 0x31, - 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, - 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, - 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, - 0x63, 0x10, 0x23, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, - 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x24, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, + 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x20, 0x12, 0x37, 0x0a, 0x33, + 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x32, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x10, 0x21, 0x12, 0x40, 0x0a, 0x3c, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, + 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x22, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, - 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, - 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x25, 0x12, 0x31, 0x0a, 0x2d, - 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, - 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x70, 0x6c, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x26, 0x12, - 0x36, 0x0a, 0x32, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, - 0x72, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6d, - 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x27, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x65, 0x73, 0x74, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, - 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x28, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x29, 0x12, - 0x3a, 0x0a, 0x36, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, - 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x78, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, - 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x2a, 0x12, 0x26, 0x0a, 0x22, 0x54, - 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, - 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x10, 0x2b, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, - 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2c, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, - 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, - 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, - 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, - 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, - 0x61, 0x6e, 0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x23, 0x12, 0x32, + 0x0a, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, + 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x70, + 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, + 0x10, 0x24, 0x12, 0x33, 0x0a, 0x2f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x73, 0x53, 0x74, 0x6f, + 0x70, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x52, 0x70, 0x6c, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x25, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x53, 0x6c, 0x61, 0x76, + 0x65, 0x73, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, + 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x26, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x65, + 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x63, 0x6b, + 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, + 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, + 0x10, 0x27, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x52, + 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, + 0x63, 0x10, 0x28, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, + 0x53, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x10, 0x29, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x65, + 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, + 0x54, 0x72, 0x78, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4e, 0x6f, 0x53, 0x65, 0x6d, 0x69, + 0x53, 0x79, 0x6e, 0x63, 0x10, 0x2a, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, + 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x10, 0x2b, 0x12, 0x24, + 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, + 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x4e, 0x6f, 0x52, 0x70, 0x6c, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x10, 0x2c, 0x2a, 0x55, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, + 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, + 0x0a, 0x0a, 0x06, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x03, 0x42, 0x32, 0x5a, 0x30, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x31, 0x38, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x70, 0x6d, 0x61, 0x6e, 0x76, 0x33, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4108,21 +4104,21 @@ var file_messages_proto_goTypes = []interface{}{ (*ErrorInfo)(nil), // 15: signal18.replication_manager.v3.ErrorInfo (*ErrorResource)(nil), // 16: signal18.replication_manager.v3.ErrorResource (*Cluster)(nil), // 17: signal18.replication_manager.v3.Cluster - (*StateMessage)(nil), // 18: signal18.replication_manager.v3.StateMessage - (*ClusterSetting)(nil), // 19: signal18.replication_manager.v3.ClusterSetting - (*Server)(nil), // 20: signal18.replication_manager.v3.Server - (*ClusterAction)(nil), // 21: signal18.replication_manager.v3.ClusterAction - (*DatabaseStatus)(nil), // 22: signal18.replication_manager.v3.DatabaseStatus - (*DatabaseAction)(nil), // 23: signal18.replication_manager.v3.DatabaseAction - (*StatusMessage)(nil), // 24: signal18.replication_manager.v3.StatusMessage - (*TopologyRetrieval)(nil), // 25: signal18.replication_manager.v3.TopologyRetrieval - (*Certificate)(nil), // 26: signal18.replication_manager.v3.Certificate - (*Backup)(nil), // 27: signal18.replication_manager.v3.Backup - (*Tag)(nil), // 28: signal18.replication_manager.v3.Tag - (*TableAction)(nil), // 29: signal18.replication_manager.v3.TableAction - (*Table)(nil), // 30: signal18.replication_manager.v3.Table - (*ClusterTest)(nil), // 31: signal18.replication_manager.v3.ClusterTest - (*Cluster_Crash)(nil), // 32: signal18.replication_manager.v3.Cluster.Crash + (*Crash)(nil), // 18: signal18.replication_manager.v3.Crash + (*StateMessage)(nil), // 19: signal18.replication_manager.v3.StateMessage + (*ClusterSetting)(nil), // 20: signal18.replication_manager.v3.ClusterSetting + (*Server)(nil), // 21: signal18.replication_manager.v3.Server + (*ClusterAction)(nil), // 22: signal18.replication_manager.v3.ClusterAction + (*DatabaseStatus)(nil), // 23: signal18.replication_manager.v3.DatabaseStatus + (*DatabaseAction)(nil), // 24: signal18.replication_manager.v3.DatabaseAction + (*StatusMessage)(nil), // 25: signal18.replication_manager.v3.StatusMessage + (*TopologyRetrieval)(nil), // 26: signal18.replication_manager.v3.TopologyRetrieval + (*Certificate)(nil), // 27: signal18.replication_manager.v3.Certificate + (*Backup)(nil), // 28: signal18.replication_manager.v3.Backup + (*Tag)(nil), // 29: signal18.replication_manager.v3.Tag + (*TableAction)(nil), // 30: signal18.replication_manager.v3.TableAction + (*Table)(nil), // 31: signal18.replication_manager.v3.Table + (*ClusterTest)(nil), // 32: signal18.replication_manager.v3.ClusterTest nil, // 33: signal18.replication_manager.v3.Cluster.MonitorTypeEntry nil, // 34: signal18.replication_manager.v3.Cluster.TopologyTypeEntry nil, // 35: signal18.replication_manager.v3.Cluster.FsTypeEntry @@ -4135,40 +4131,40 @@ var file_messages_proto_goTypes = []interface{}{ } var file_messages_proto_depIdxs = []int32{ 16, // 0: signal18.replication_manager.v3.ErrorInfo.resource:type_name -> signal18.replication_manager.v3.ErrorResource - 32, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Cluster.Crash + 18, // 1: signal18.replication_manager.v3.Cluster.crashes:type_name -> signal18.replication_manager.v3.Crash 40, // 2: signal18.replication_manager.v3.Cluster.conf:type_name -> google.protobuf.Struct 33, // 3: signal18.replication_manager.v3.Cluster.monitor_type:type_name -> signal18.replication_manager.v3.Cluster.MonitorTypeEntry 34, // 4: signal18.replication_manager.v3.Cluster.topology_type:type_name -> signal18.replication_manager.v3.Cluster.TopologyTypeEntry 35, // 5: signal18.replication_manager.v3.Cluster.fs_type:type_name -> signal18.replication_manager.v3.Cluster.FsTypeEntry 36, // 6: signal18.replication_manager.v3.Cluster.disk_type:type_name -> signal18.replication_manager.v3.Cluster.DiskTypeEntry 37, // 7: signal18.replication_manager.v3.Cluster.vm_type:type_name -> signal18.replication_manager.v3.Cluster.VmTypeEntry - 1, // 8: signal18.replication_manager.v3.StateMessage.severity:type_name -> signal18.replication_manager.v3.StateMessage.Severity - 17, // 9: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster - 2, // 10: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action - 38, // 11: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting - 39, // 12: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch - 5, // 13: signal18.replication_manager.v3.Server.type:type_name -> signal18.replication_manager.v3.Server.Type - 6, // 14: signal18.replication_manager.v3.Server.database:type_name -> signal18.replication_manager.v3.Server.Database - 7, // 15: signal18.replication_manager.v3.Server.proxy:type_name -> signal18.replication_manager.v3.Server.Proxy - 17, // 16: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 8, // 17: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action - 20, // 18: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.Server - 9, // 19: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology - 17, // 20: signal18.replication_manager.v3.DatabaseStatus.cluster:type_name -> signal18.replication_manager.v3.Cluster - 20, // 21: signal18.replication_manager.v3.DatabaseStatus.server:type_name -> signal18.replication_manager.v3.Server - 10, // 22: signal18.replication_manager.v3.DatabaseStatus.status:type_name -> signal18.replication_manager.v3.DatabaseStatus.Status - 17, // 23: signal18.replication_manager.v3.DatabaseAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 20, // 24: signal18.replication_manager.v3.DatabaseAction.server:type_name -> signal18.replication_manager.v3.Server - 11, // 25: signal18.replication_manager.v3.DatabaseAction.action:type_name -> signal18.replication_manager.v3.DatabaseAction.Action - 0, // 26: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus - 17, // 27: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster - 12, // 28: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval - 17, // 29: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster - 30, // 30: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table - 13, // 31: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action - 17, // 32: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster - 14, // 33: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test - 41, // 34: signal18.replication_manager.v3.Cluster.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid + 41, // 8: signal18.replication_manager.v3.Crash.failover_io_gtids:type_name -> signal18.replication_manager.v3.Gtid + 1, // 9: signal18.replication_manager.v3.StateMessage.severity:type_name -> signal18.replication_manager.v3.StateMessage.Severity + 17, // 10: signal18.replication_manager.v3.ClusterSetting.cluster:type_name -> signal18.replication_manager.v3.Cluster + 2, // 11: signal18.replication_manager.v3.ClusterSetting.action:type_name -> signal18.replication_manager.v3.ClusterSetting.Action + 38, // 12: signal18.replication_manager.v3.ClusterSetting.setting:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting + 39, // 13: signal18.replication_manager.v3.ClusterSetting.switch:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch + 5, // 14: signal18.replication_manager.v3.Server.type:type_name -> signal18.replication_manager.v3.Server.Type + 6, // 15: signal18.replication_manager.v3.Server.database:type_name -> signal18.replication_manager.v3.Server.Database + 7, // 16: signal18.replication_manager.v3.Server.proxy:type_name -> signal18.replication_manager.v3.Server.Proxy + 17, // 17: signal18.replication_manager.v3.ClusterAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 8, // 18: signal18.replication_manager.v3.ClusterAction.action:type_name -> signal18.replication_manager.v3.ClusterAction.Action + 21, // 19: signal18.replication_manager.v3.ClusterAction.server:type_name -> signal18.replication_manager.v3.Server + 9, // 20: signal18.replication_manager.v3.ClusterAction.topology:type_name -> signal18.replication_manager.v3.ClusterAction.ReplicationTopology + 17, // 21: signal18.replication_manager.v3.DatabaseStatus.cluster:type_name -> signal18.replication_manager.v3.Cluster + 21, // 22: signal18.replication_manager.v3.DatabaseStatus.server:type_name -> signal18.replication_manager.v3.Server + 10, // 23: signal18.replication_manager.v3.DatabaseStatus.status:type_name -> signal18.replication_manager.v3.DatabaseStatus.Status + 17, // 24: signal18.replication_manager.v3.DatabaseAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 21, // 25: signal18.replication_manager.v3.DatabaseAction.server:type_name -> signal18.replication_manager.v3.Server + 11, // 26: signal18.replication_manager.v3.DatabaseAction.action:type_name -> signal18.replication_manager.v3.DatabaseAction.Action + 0, // 27: signal18.replication_manager.v3.StatusMessage.alive:type_name -> signal18.replication_manager.v3.ServiceStatus + 17, // 28: signal18.replication_manager.v3.TopologyRetrieval.cluster:type_name -> signal18.replication_manager.v3.Cluster + 12, // 29: signal18.replication_manager.v3.TopologyRetrieval.retrieve:type_name -> signal18.replication_manager.v3.TopologyRetrieval.Retrieval + 17, // 30: signal18.replication_manager.v3.TableAction.cluster:type_name -> signal18.replication_manager.v3.Cluster + 31, // 31: signal18.replication_manager.v3.TableAction.table:type_name -> signal18.replication_manager.v3.Table + 13, // 32: signal18.replication_manager.v3.TableAction.action:type_name -> signal18.replication_manager.v3.TableAction.Action + 17, // 33: signal18.replication_manager.v3.ClusterTest.cluster:type_name -> signal18.replication_manager.v3.Cluster + 14, // 34: signal18.replication_manager.v3.ClusterTest.test_name:type_name -> signal18.replication_manager.v3.ClusterTest.Test 3, // 35: signal18.replication_manager.v3.ClusterSetting.Setting.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Setting.SettingName 4, // 36: signal18.replication_manager.v3.ClusterSetting.Switch.name:type_name -> signal18.replication_manager.v3.ClusterSetting.Switch.SwitchName 37, // [37:37] is the sub-list for method output_type @@ -4221,7 +4217,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateMessage); i { + switch v := v.(*Crash); i { case 0: return &v.state case 1: @@ -4233,7 +4229,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterSetting); i { + switch v := v.(*StateMessage); i { case 0: return &v.state case 1: @@ -4245,7 +4241,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Server); i { + switch v := v.(*ClusterSetting); i { case 0: return &v.state case 1: @@ -4257,7 +4253,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterAction); i { + switch v := v.(*Server); i { case 0: return &v.state case 1: @@ -4269,7 +4265,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatabaseStatus); i { + switch v := v.(*ClusterAction); i { case 0: return &v.state case 1: @@ -4281,7 +4277,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatabaseAction); i { + switch v := v.(*DatabaseStatus); i { case 0: return &v.state case 1: @@ -4293,7 +4289,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusMessage); i { + switch v := v.(*DatabaseAction); i { case 0: return &v.state case 1: @@ -4305,7 +4301,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopologyRetrieval); i { + switch v := v.(*StatusMessage); i { case 0: return &v.state case 1: @@ -4317,7 +4313,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Certificate); i { + switch v := v.(*TopologyRetrieval); i { case 0: return &v.state case 1: @@ -4329,7 +4325,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Backup); i { + switch v := v.(*Certificate); i { case 0: return &v.state case 1: @@ -4341,7 +4337,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tag); i { + switch v := v.(*Backup); i { case 0: return &v.state case 1: @@ -4353,7 +4349,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TableAction); i { + switch v := v.(*Tag); i { case 0: return &v.state case 1: @@ -4365,7 +4361,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Table); i { + switch v := v.(*TableAction); i { case 0: return &v.state case 1: @@ -4377,7 +4373,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterTest); i { + switch v := v.(*Table); i { case 0: return &v.state case 1: @@ -4389,7 +4385,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Cluster_Crash); i { + switch v := v.(*ClusterTest); i { case 0: return &v.state case 1: diff --git a/repmanv3/repmanv3.swagger.json b/repmanv3/repmanv3.swagger.json index c5612a982..44468eb39 100644 --- a/repmanv3/repmanv3.swagger.json +++ b/repmanv3/repmanv3.swagger.json @@ -6859,7 +6859,6 @@ "type": "string", "enum": [ "RETRIEVAL_UNSPECIFIED", - "CRASHES", "LOGS", "MASTER", "PROXIES", @@ -11062,6 +11061,302 @@ "ClusterService" ] } + }, + "/v3/clusters/{name}/topology/crashes": { + "get": { + "operationId": "ClusterService_RetrieveCrashes", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/v3Crash" + }, + "error": { + "$ref": "#/definitions/googlerpcStatus" + } + }, + "title": "Stream result of v3Crash" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenant", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "workingDir", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "proxyServers", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "failoverCounter", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "failoverLastTime", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "activePassiveStatus", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "isSplitBrain", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailedArbitrator", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isLostMajority", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isClusterDown", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isAllDbUp", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isFailable", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isPostgres", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isProvision", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxyRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedProxiesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingRestart", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesRollingReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNeedDatabasesReprov", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isValidBackup", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isNotMonitoring", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "isCapturing", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "cleanReplication", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "topology", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptime", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeFailable", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "uptimeSemisync", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "monitorSpin", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "dbTableSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "dbIndexSize", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "connections", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "qps", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "haveDBTLSCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "haveDBTLSOldCert", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "waitingRejoin", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingSwitchover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "waitingFailover", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "ClusterService" + ] + } } }, "definitions": { @@ -11079,38 +11374,6 @@ ], "default": "RT_UNSPECIFIED" }, - "ClusterCrash": { - "type": "object", - "properties": { - "URL": { - "type": "string" - }, - "FailoverMasterLogFile": { - "type": "string" - }, - "FailoverMasterLogPos": { - "type": "string" - }, - "NewMasterLogFile": { - "type": "string" - }, - "NewMasterLogPos": { - "type": "string" - }, - "FailoverSemiSyncSlaveStatus": { - "type": "boolean" - }, - "FailoverIOGtid": { - "type": "array", - "items": { - "$ref": "#/definitions/v3Gtid" - } - }, - "ElectedMasterURL": { - "type": "string" - } - } - }, "ClusterSettingSetting": { "type": "object", "properties": { @@ -11352,7 +11615,6 @@ "type": "string", "enum": [ "RETRIEVAL_UNSPECIFIED", - "CRASHES", "LOGS", "MASTER", "PROXIES", @@ -11594,7 +11856,7 @@ "dbServersCrashes": { "type": "array", "items": { - "$ref": "#/definitions/ClusterCrash" + "$ref": "#/definitions/v3Crash" } }, "config": { @@ -11677,6 +11939,38 @@ ], "default": "UNSPECIFIED" }, + "v3Crash": { + "type": "object", + "properties": { + "URL": { + "type": "string" + }, + "FailoverMasterLogFile": { + "type": "string" + }, + "FailoverMasterLogPos": { + "type": "string" + }, + "NewMasterLogFile": { + "type": "string" + }, + "NewMasterLogPos": { + "type": "string" + }, + "FailoverSemiSyncSlaveStatus": { + "type": "boolean" + }, + "FailoverIOGtid": { + "type": "array", + "items": { + "$ref": "#/definitions/v3Gtid" + } + }, + "ElectedMasterURL": { + "type": "string" + } + } + }, "v3DatabaseStatusStatus": { "type": "string", "enum": [ diff --git a/repmanv3/service.desc b/repmanv3/service.desc index 57b52e2566834b05448085add50eb0ab2e7bbffd..f84d1eb3569164f8de178a4095916deb3f5620d2 100644 GIT binary patch delta 172 zcmdnp!?>rHk%?>iMkYZ%xQ)~%JMt-Q-p>Am zadRxU3FGGVoNF03PvDV~W}G^Cwfbhpq{;Cb>YFEP$ntT|SK#7J&M7S}NiCYlYq0sX z*$*bB4U(ImTH3J-O=jfc4@xa5%1kXwbp~57InYUGGLMTAKbWhe({%aCWF|EsmC1=# S!jlCYx!54?*evfT!wLX0bvFJ0 delta 115 zcmV-(0F3{uhR0{a%T6#-@j5>W~VV{&10Xk~L4Dj)+W3o ztq1x6v)c--0kftFH374U3>g~%qLZU1vjK0DS12b83knBAQbAKlMN<$0vwbKY4g!fE Vvz<0E0|J^Dv(Py{2eYI>7zOm2BG~`{ diff --git a/server/repmanv3.go b/server/repmanv3.go index 65f68cd2a..a4f33c217 100644 --- a/server/repmanv3.go +++ b/server/repmanv3.go @@ -784,6 +784,26 @@ func (s *ReplicationManager) RetrieveAlerts(in *v3.Cluster, stream v3.ClusterSer return nil } +func (s *ReplicationManager) RetrieveCrashes(in *v3.Cluster, stream v3.ClusterService_RetrieveCrashesServer) error { + user, mycluster, err := s.getClusterAndUser(stream.Context(), in) + if err != nil { + return err + } + + // TODO: introduce new Grants for this type of endpoint + if err = user.Granted(config.GrantClusterSettings); err != nil { + return err + } + + for _, crash := range mycluster.GetCrashes() { + if err := stream.Send(crash); err != nil { + return err + } + } + + return nil +} + func (s *ReplicationManager) RetrieveFromTopology(in *v3.TopologyRetrieval, stream v3.ClusterService_RetrieveFromTopologyServer) error { user, mycluster, err := s.getClusterAndUser(stream.Context(), in.Cluster) if err != nil { @@ -799,23 +819,6 @@ func (s *ReplicationManager) RetrieveFromTopology(in *v3.TopologyRetrieval, stre return v3.NewErrorResource(codes.InvalidArgument, v3.ErrEnumNotSet, "retrieve", "").Err() } - if in.Retrieve == v3.TopologyRetrieval_CRASHES { - cr := mycluster.GetCrashes() - if cr == nil { - return nil - } - data, err := json.Marshal(cr) - if err != nil { - return status.Error(codes.Internal, "could not marshal crashes list") - } - var crashes []*v3.Cluster_Crash - err = json.Unmarshal(data, &crashes) - if err != nil { - return status.Error(codes.Internal, "could not unmarshal crashes list") - } - return marshalAndSend(crashes, stream.Send) - } - if in.Retrieve == v3.TopologyRetrieval_LOGS { var clusterlogs []string for _, slog := range s.tlog.Buffer { diff --git a/signal18/replication-manager/v3/cluster.proto b/signal18/replication-manager/v3/cluster.proto index b701c9d44..9fd6f56cd 100644 --- a/signal18/replication-manager/v3/cluster.proto +++ b/signal18/replication-manager/v3/cluster.proto @@ -176,7 +176,6 @@ service ClusterService { rpc RetrieveFromTopology(TopologyRetrieval) returns (stream google.protobuf.Struct) { option (google.api.http) = { - // /api/clusters/{clusterName}/topology/crashes // /api/clusters/{clusterName}/topology/logs // /api/clusters/{clusterName}/topology/master // /api/clusters/{clusterName}/topology/proxies @@ -193,6 +192,13 @@ service ClusterService { }; } + rpc RetrieveCrashes(Cluster) returns (stream Crash) { + option (google.api.http) = { + // /api/clusters/{clusterName}/topology/crashes + get : "/v3/clusters/{name}/topology/crashes" + }; + } + rpc GetClientCertificates(Cluster) returns (Certificate) { option (google.api.http) = { // /api/clusters/{clusterName}/certificates diff --git a/signal18/replication-manager/v3/messages.proto b/signal18/replication-manager/v3/messages.proto index d116d831e..f0ddc3d10 100644 --- a/signal18/replication-manager/v3/messages.proto +++ b/signal18/replication-manager/v3/messages.proto @@ -61,18 +61,6 @@ message Cluster { int32 waiting_rejoin = 39 [ json_name = "waitingRejoin" ]; int32 waiting_switchover = 40 [ json_name = "waitingSwitchover" ]; int32 waiting_failover = 41 [ json_name = "waitingFailover" ]; - message Crash { - string url = 1 [ json_name = "URL" ]; - string failover_master_log_file = 2 [ json_name = "FailoverMasterLogFile" ]; - string failover_master_log_pos = 3 [ json_name = "FailoverMasterLogPos" ]; - string new_master_log_file = 4 [ json_name = "NewMasterLogFile" ]; - string new_master_log_pos = 5 [ json_name = "NewMasterLogPos" ]; - bool failover_semi_sync_slave_status = 6 - [ json_name = "FailoverSemiSyncSlaveStatus" ]; - repeated signal18.replication_manager.v3.Gtid failover_io_gtids = 7 - [ json_name = "FailoverIOGtid" ]; - string elected_master_url = 8 [ json_name = "ElectedMasterURL" ]; - } repeated Crash crashes = 42 [ json_name = "dbServersCrashes" ]; google.protobuf.Struct conf = 43 [ json_name = "config" ]; // configurator.Configurator Configurator = 44 [json_name="configurator"]; @@ -91,6 +79,19 @@ message Cluster { // map[string]APIUser APIUsers = 57 [json_name="apiUsers"]; } +message Crash { + string url = 1 [ json_name = "URL" ]; + string failover_master_log_file = 2 [ json_name = "FailoverMasterLogFile" ]; + string failover_master_log_pos = 3 [ json_name = "FailoverMasterLogPos" ]; + string new_master_log_file = 4 [ json_name = "NewMasterLogFile" ]; + string new_master_log_pos = 5 [ json_name = "NewMasterLogPos" ]; + bool failover_semi_sync_slave_status = 6 + [ json_name = "FailoverSemiSyncSlaveStatus" ]; + repeated signal18.replication_manager.v3.Gtid failover_io_gtids = 7 + [ json_name = "FailoverIOGtid" ]; + string elected_master_url = 8 [ json_name = "ElectedMasterURL" ]; +} + message StateMessage { enum Severity { UNSPECIFIED = 0; @@ -381,7 +382,6 @@ message TopologyRetrieval { Cluster cluster = 1; enum Retrieval { RETRIEVAL_UNSPECIFIED = 0; - CRASHES = 2; LOGS = 3; MASTER = 4; PROXIES = 5; From 6d6f9bb90871e4a2f698c4f16cfb831c20779ba6 Mon Sep 17 00:00:00 2001 From: Yorick Terweijden Date: Sun, 20 Nov 2022 22:19:21 +0100 Subject: [PATCH 12/13] Embed Swagger-UI --- Makefile | 2 +- server/repmanv3.go | 7 +- swagger/dist/favicon-16x16.png | Bin 0 -> 665 bytes swagger/dist/favicon-32x32.png | Bin 0 -> 628 bytes swagger/dist/index.css | 16 ++++ swagger/dist/index.html | 19 +++++ swagger/dist/oauth2-redirect.html | 79 ++++++++++++++++++ swagger/dist/swagger-initializer.js | 20 +++++ swagger/dist/swagger-ui-bundle.js | 3 + swagger/dist/swagger-ui-bundle.js.map | 1 + swagger/dist/swagger-ui-es-bundle-core.js | 3 + swagger/dist/swagger-ui-es-bundle-core.js.map | 1 + swagger/dist/swagger-ui-es-bundle.js | 3 + swagger/dist/swagger-ui-es-bundle.js.map | 1 + swagger/dist/swagger-ui-standalone-preset.js | 3 + .../dist/swagger-ui-standalone-preset.js.map | 1 + swagger/dist/swagger-ui.css | 3 + swagger/dist/swagger-ui.css.map | 1 + swagger/dist/swagger-ui.js | 2 + swagger/dist/swagger-ui.js.map | 1 + {repmanv3 => swagger}/repmanv3.swagger.json | 0 swagger/swagger.go | 44 ++++++++++ 22 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 swagger/dist/favicon-16x16.png create mode 100644 swagger/dist/favicon-32x32.png create mode 100644 swagger/dist/index.css create mode 100644 swagger/dist/index.html create mode 100644 swagger/dist/oauth2-redirect.html create mode 100644 swagger/dist/swagger-initializer.js create mode 100644 swagger/dist/swagger-ui-bundle.js create mode 100644 swagger/dist/swagger-ui-bundle.js.map create mode 100644 swagger/dist/swagger-ui-es-bundle-core.js create mode 100644 swagger/dist/swagger-ui-es-bundle-core.js.map create mode 100644 swagger/dist/swagger-ui-es-bundle.js create mode 100644 swagger/dist/swagger-ui-es-bundle.js.map create mode 100644 swagger/dist/swagger-ui-standalone-preset.js create mode 100644 swagger/dist/swagger-ui-standalone-preset.js.map create mode 100644 swagger/dist/swagger-ui.css create mode 100644 swagger/dist/swagger-ui.css.map create mode 100644 swagger/dist/swagger-ui.js create mode 100644 swagger/dist/swagger-ui.js.map rename {repmanv3 => swagger}/repmanv3.swagger.json (100%) create mode 100644 swagger/swagger.go diff --git a/Makefile b/Makefile index 7c4297cb1..26960a340 100755 --- a/Makefile +++ b/Makefile @@ -73,7 +73,7 @@ proto: --grpc-gateway_opt logtostderr=true \ --grpc-gateway_opt paths=source_relative \ --grpc-gateway_out repmanv3 \ - --openapiv2_out repmanv3 \ + --openapiv2_out swagger \ --openapiv2_opt logtostderr=true \ --openapiv2_opt allow_merge=true \ --openapiv2_opt merge_file_name=repmanv3 \ diff --git a/server/repmanv3.go b/server/repmanv3.go index a4f33c217..98873d0fd 100644 --- a/server/repmanv3.go +++ b/server/repmanv3.go @@ -20,6 +20,7 @@ import ( "github.com/signal18/replication-manager/cluster" "github.com/signal18/replication-manager/config" v3 "github.com/signal18/replication-manager/repmanv3" + "github.com/signal18/replication-manager/swagger" "golang.org/x/net/http2" "golang.org/x/net/http2/h2c" "google.golang.org/grpc" @@ -144,6 +145,10 @@ func (s *ReplicationManager) StartServerV3(debug bool, router *mux.Router) error httpmux.Handle("/", gwmux) + httpmux.HandleFunc("/v3/swagger.json", swagger.JsonHandle) + httpmux.HandleFunc("/v3/swagger-ui/swagger-initializer.js", swagger.InitHandle) + httpmux.Handle("/v3/swagger-ui/", http.StripPrefix("/v3/swagger-ui/", swagger.Handler())) + srv := &http.Server{ Addr: s.v3Config.Listen.AddressWithPort(), Handler: grpcHandlerFunc(s, @@ -154,8 +159,6 @@ func (s *ReplicationManager) StartServerV3(debug bool, router *mux.Router) error handlers.AllowedOrigins([]string{"*"}), )(router), ), - - // ErrorLog: zap.NewStdLog(s.log), } s.grpcWrapped = grpcweb.WrapServer(s.grpcServer, grpcweb.WithOriginFunc(func(origin string) bool { diff --git a/swagger/dist/favicon-16x16.png b/swagger/dist/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..8b194e617af1c135e6b37939591d24ac3a5efa18 GIT binary patch literal 665 zcmV;K0%rY*P)}JKSduyL>)s!A4EhTMMEM%Q;aL6%l#xiZiF>S;#Y{N2Zz%pvTGHJduXuC6Lx-)0EGfRy*N{Tv4i8@4oJ41gw zKzThrcRe|7J~(YYIBq{SYCkn-KQm=N8$CrEK1CcqMI1dv9z#VRL_{D)L|`QmF8}}l zJ9JV`Q}p!p_4f7m_U`WQ@apR4;o;!mnU<7}iG_qr zF(e)x9~BG-3IzcG2M4an0002kNkl41`ZiN1i62V%{PM@Ry|IS_+Yc7{bb`MM~xm(7p4|kMHP&!VGuDW4kFixat zXw43VmgwEvB$hXt_u=vZ>+v4i7E}n~eG6;n4Z=zF1n?T*yg<;W6kOfxpC6nao>VR% z?fpr=asSJ&`L*wu^rLJ5Peq*PB0;alL#XazZCBxJLd&giTfw@!hW167F^`7kobi;( ze<<>qNlP|xy7S1zl@lZNIBR7#o9ybJsptO#%}P0hz~sBp00000NkvXXu0mjfUsDF? literal 0 HcmV?d00001 diff --git a/swagger/dist/favicon-32x32.png b/swagger/dist/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..249737fe44558e679f0b67134e274461d988fa98 GIT binary patch literal 628 zcmV-)0*n2LP)Ma*GM0}OV<074bNCP7P7GVd{iMr*I6y~TMLss@FjvgL~HxU z%Vvj33AwpD(Z4*$Mfx=HaU16axM zt2xG_rloN<$iy9j9I5 + + + + + Swagger UI + + + + + + + +
+ + + + + diff --git a/swagger/dist/oauth2-redirect.html b/swagger/dist/oauth2-redirect.html new file mode 100644 index 000000000..564091718 --- /dev/null +++ b/swagger/dist/oauth2-redirect.html @@ -0,0 +1,79 @@ + + + + Swagger UI: OAuth2 Redirect + + + + + diff --git a/swagger/dist/swagger-initializer.js b/swagger/dist/swagger-initializer.js new file mode 100644 index 000000000..8ea0ea3af --- /dev/null +++ b/swagger/dist/swagger-initializer.js @@ -0,0 +1,20 @@ +window.onload = function() { + // + + // the following lines will be replaced by docker/configurator, when it runs in a docker-container + window.ui = SwaggerUIBundle({ + url: "https://petstore.swagger.io/v2/swagger.json", + dom_id: '#swagger-ui', + deepLinking: true, + presets: [ + SwaggerUIBundle.presets.apis, + SwaggerUIStandalonePreset + ], + plugins: [ + SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "StandaloneLayout" + }); + + // +}; diff --git a/swagger/dist/swagger-ui-bundle.js b/swagger/dist/swagger-ui-bundle.js new file mode 100644 index 000000000..763a11668 --- /dev/null +++ b/swagger/dist/swagger-ui-bundle.js @@ -0,0 +1,3 @@ +/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUIBundle=t():e.SwaggerUIBundle=t()}(this,(function(){return(()=>{var e={17967:(e,t)=>{"use strict";t.N=void 0;var r=/^([^\w]*)(javascript|data|vbscript)/im,n=/&#(\w+)(^\w|;)?/g,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^([^:]+):/gm,i=[".","/"];t.N=function(e){var t,s=(t=e||"",t.replace(n,(function(e,t){return String.fromCharCode(t)}))).replace(o,"").trim();if(!s)return"about:blank";if(function(e){return i.indexOf(e[0])>-1}(s))return s;var l=s.match(a);if(!l)return s;var u=l[0];return r.test(u)?"about:blank":s}},53795:(e,t,r)=>{"use strict";r.d(t,{Z:()=>P});var n=r(23101),o=r.n(n),a=r(61125),i=r.n(a),s=r(11882),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294),f=r(43393);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=k(t,r),o=e||Object.keys(y({},r,{},t));return o.every(n)}function k(e,t){return function(r){if("string"==typeof r)return(0,f.is)(t[r],e[r]);if(Array.isArray(r))return(0,f.is)(S(t,r),S(e,r));throw new TypeError("Invalid key: expected Array or string: "+r)}}var C=function(e){function t(){return d(this,t),E(this,b(t).apply(this,arguments))}var r,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&w(e,t)}(t,e),r=t,n=[{key:"shouldComponentUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!A(this.updateOnProps,this.props,e,"updateOnProps")||!A(this.updateOnStates,this.state,t,"updateOnStates")}}],n&&m(r.prototype,n),o&&m(r,o),t}(p.Component);const O=C;var j=r(23930),I=r.n(j),N=r(45697),T=r.n(N);class P extends O{constructor(){super(...arguments),i()(this,"getModelName",(e=>-1!==l()(e).call(e,"#/definitions/")?e.replace(/^.*#\/definitions\//,""):-1!==l()(e).call(e,"#/components/schemas/")?e.replace(/^.*#\/components\/schemas\//,""):void 0)),i()(this,"getRefSchema",(e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)}))}render(){let{getComponent:e,getConfigs:t,specSelectors:n,schema:a,required:i,name:s,isRef:l,specPath:u,displayName:c,includeReadOnly:f,includeWriteOnly:h}=this.props;const d=e("ObjectModel"),m=e("ArrayModel"),g=e("PrimitiveModel");let v="object",y=a&&a.get("$$ref");if(!s&&y&&(s=this.getModelName(y)),!a&&y&&(a=this.getRefSchema(s)),!a)return p.createElement("span",{className:"model model-title"},p.createElement("span",{className:"model-title__text"},c||s),p.createElement("img",{src:r(2517),height:"20px",width:"20px"}));const b=n.isOAS3()&&a.get("deprecated");switch(l=void 0!==l?l:!!y,v=a&&a.get("type")||v,v){case"object":return p.createElement(d,o()({className:"object"},this.props,{specPath:u,getConfigs:t,schema:a,name:s,deprecated:b,isRef:l,includeReadOnly:f,includeWriteOnly:h}));case"array":return p.createElement(m,o()({className:"array"},this.props,{getConfigs:t,schema:a,name:s,deprecated:b,required:i,includeReadOnly:f,includeWriteOnly:h}));default:return p.createElement(g,o()({},this.props,{getComponent:e,getConfigs:t,schema:a,name:s,deprecated:b,required:i}))}}}i()(P,"propTypes",{schema:c()(I()).isRequired,getComponent:T().func.isRequired,getConfigs:T().func.isRequired,specSelectors:T().object.isRequired,name:T().string,displayName:T().string,isRef:T().bool,required:T().bool,expandDepth:T().number,depth:T().number,specPath:I().list.isRequired,includeReadOnly:T().bool,includeWriteOnly:T().bool})},5623:(e,t,r)=>{"use strict";r.d(t,{Z:()=>f});var n=r(61125),o=r.n(n),a=r(28222),i=r.n(a),s=r(67294),l=r(84564),u=r.n(l),c=r(90242),p=r(27504);class f extends s.Component{constructor(e,t){super(e,t),o()(this,"getDefinitionUrl",(()=>{let{specSelectors:e}=this.props;return new(u())(e.url(),p.Z.location).toString()}));let{getConfigs:r}=e,{validatorUrl:n}=r();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===n?"https://validator.swagger.io/validator":n}}UNSAFE_componentWillReceiveProps(e){let{getConfigs:t}=e,{validatorUrl:r}=t();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===r?"https://validator.swagger.io/validator":r})}render(){let{getConfigs:e}=this.props,{spec:t}=e(),r=(0,c.Nm)(this.state.validatorUrl);return"object"==typeof t&&i()(t).length?null:this.state.url&&(0,c.hW)(this.state.validatorUrl)&&(0,c.hW)(this.state.url)?s.createElement("span",{className:"float-right"},s.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:`${r}/debug?url=${encodeURIComponent(this.state.url)}`},s.createElement(h,{src:`${r}?url=${encodeURIComponent(this.state.url)}`,alt:"Online validator badge"}))):null}}class h extends s.Component{constructor(e){super(e),this.state={loaded:!1,error:!1}}componentDidMount(){const e=new Image;e.onload=()=>{this.setState({loaded:!0})},e.onerror=()=>{this.setState({error:!0})},e.src=this.props.src}UNSAFE_componentWillReceiveProps(e){if(e.src!==this.props.src){const t=new Image;t.onload=()=>{this.setState({loaded:!0})},t.onerror=()=>{this.setState({error:!0})},t.src=e.src}}render(){return this.state.error?s.createElement("img",{alt:"Error"}):this.state.loaded?s.createElement("img",{src:this.props.src,alt:this.props.alt}):null}}},86019:(e,t,r)=>{"use strict";r.d(t,{Z:()=>me,s:()=>ge});var n=r(67294),o=r(89927);function a(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r=0;r--)!0===t(e[r])&&e.splice(r,1)}function s(e){throw new Error("Unhandled case for value: '"+e+"'")}var l=function(){function e(e){void 0===e&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}return e.prototype.setTagName=function(e){return this.tagName=e,this},e.prototype.getTagName=function(){return this.tagName||""},e.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},e.prototype.getAttr=function(e){return this.getAttrs()[e]},e.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},e.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},e.prototype.setClass=function(e){return this.setAttr("class",e)},e.prototype.addClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],i=e.split(n);t=i.shift();)-1===a(o,t)&&o.push(t);return this.getAttrs().class=o.join(" "),this},e.prototype.removeClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],i=e.split(n);o.length&&(t=i.shift());){var s=a(o,t);-1!==s&&o.splice(s,1)}return this.getAttrs().class=o.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(e){return-1!==(" "+this.getClass()+" ").indexOf(" "+e+" ")},e.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},e.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return["<",e,t=t?" "+t:"",">",this.getInnerHtml(),""].join("")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r+'="'+e[r]+'"');return t.join(" ")},e}();var u=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return e.prototype.build=function(e){return new l({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},r=this.createCssClass(e);return r&&(t.class=r),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=s)return l.host.length==t?(l.host.substr(0,t-o)+r).substr(0,s+n):i(c,s).substr(0,s+n);var p="";if(l.path&&(p+="/"+l.path),l.query&&(p+="?"+l.query),p){if((c+p).length>=s)return(c+p).length==t?(c+p).substr(0,t):(c+i(p,s-c.length)).substr(0,s+n);c+=p}if(l.fragment){var f="#"+l.fragment;if((c+f).length>=s)return(c+f).length==t?(c+f).substr(0,t):(c+i(f,s-c.length)).substr(0,s+n);c+=f}if(l.scheme&&l.host){var h=l.scheme+"://";if((c+h).length0&&(d=c.substr(-1*Math.floor(s/2))),(c.substr(0,Math.ceil(s/2))+r+d).substr(0,s+n)}(e,r):"middle"===n?function(e,t,r){if(e.length<=t)return e;var n,o;null==r?(r="…",n=8,o=3):(n=r.length,o=r.length);var a=t-o,i="";return a>0&&(i=e.substr(-1*Math.floor(a/2))),(e.substr(0,Math.ceil(a/2))+r+i).substr(0,a+n)}(e,r):function(e,t,r){return function(e,t,r){var n;return e.length>t&&(null==r?(r="…",n=3):n=r.length,e=e.substring(0,t-n)+r),e}(e,t,r)}(e,r)},e}(),c=function(){function e(e){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.getType()]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}(),p=function(e,t){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},p(e,t)};function f(e,t){function r(){this.constructor=e}p(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var h=function(){return h=Object.assign||function(e){for(var t,r=1,n=arguments.length;r-1},e.isValidUriScheme=function(e){var t=e.match(this.uriSchemeRegex),r=t&&t[0].toLowerCase();return"javascript:"!==r&&"vbscript:"!==r},e.urlMatchDoesNotHaveProtocolOrDot=function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf("."))},e.urlMatchDoesNotHaveAtLeastOneWordChar=function(e,t){return!(!e||!t)&&(!this.hasFullProtocolRegex.test(t)&&!this.hasWordCharAfterProtocolRegex.test(e))},e.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,e.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,e.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+C+"]"),e.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,e}(),V=(d=new RegExp("[/?#](?:["+N+"\\-+&@#/%=~_()|'$*\\[\\]{}?!:,.;^✓]*["+N+"\\-+&@#/%=~_()|'$*\\[\\]{}✓])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,M(2),")","|","(","(//)?",/(?:www\.)/.source,M(6),")","|","(","(//)?",M(10)+"\\.",L.source,"(?![-"+I+"])",")",")","(?::[0-9]+)?","(?:"+d.source+")?"].join(""),"gi")),$=new RegExp("["+N+"]"),W=function(e){function t(t){var r=e.call(this,t)||this;return r.stripPrefix={scheme:!0,www:!0},r.stripTrailingSlash=!0,r.decodePercentEncoding=!0,r.matcherRegex=V,r.wordCharRegExp=$,r.stripPrefix=t.stripPrefix,r.stripTrailingSlash=t.stripTrailingSlash,r.decodePercentEncoding=t.decodePercentEncoding,r}return f(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.stripPrefix,o=this.stripTrailingSlash,a=this.decodePercentEncoding,i=this.tagBuilder,s=[],l=function(){var r=t[0],l=t[1],c=t[4],p=t[5],f=t[9],h=t.index,d=p||f,m=e.charAt(h-1);if(!q.isValid(r,l))return"continue";if(h>0&&"@"===m)return"continue";if(h>0&&d&&u.wordCharRegExp.test(m))return"continue";if(/\?$/.test(r)&&(r=r.substr(0,r.length-1)),u.matchHasUnbalancedClosingParen(r))r=r.substr(0,r.length-1);else{var g=u.matchHasInvalidCharAfterTld(r,l);g>-1&&(r=r.substr(0,g))}var v=["http://","https://"].find((function(e){return!!l&&-1!==l.indexOf(e)}));if(v){var y=r.indexOf(v);r=r.substr(y),l=l.substr(y),h+=y}var w=l?"scheme":c?"www":"tld",E=!!l;s.push(new b({tagBuilder:i,matchedText:r,offset:h,urlMatchType:w,url:r,protocolUrlMatch:E,protocolRelativeMatch:!!d,stripPrefix:n,stripTrailingSlash:o,decodePercentEncoding:a}))},u=this;null!==(t=r.exec(e));)l();return s},t.prototype.matchHasUnbalancedClosingParen=function(e){var t,r=e.charAt(e.length-1);if(")"===r)t="(";else if("]"===r)t="[";else{if("}"!==r)return!1;t="{"}for(var n=0,o=0,a=e.length-1;o"===e?(m=new ne(h(h({},m),{name:H()})),W()):E.test(e)||x.test(e)||":"===e||V()}function w(e){">"===e?V():E.test(e)?f=3:V()}function _(e){S.test(e)||("/"===e?f=12:">"===e?W():"<"===e?$():"="===e||A.test(e)||k.test(e)?V():f=5)}function C(e){S.test(e)?f=6:"/"===e?f=12:"="===e?f=7:">"===e?W():"<"===e?$():A.test(e)&&V()}function O(e){S.test(e)||("/"===e?f=12:"="===e?f=7:">"===e?W():"<"===e?$():A.test(e)?V():f=5)}function j(e){S.test(e)||('"'===e?f=8:"'"===e?f=9:/[>=`]/.test(e)?V():"<"===e?$():f=10)}function I(e){'"'===e&&(f=11)}function N(e){"'"===e&&(f=11)}function T(e){S.test(e)?f=4:">"===e?W():"<"===e&&$()}function P(e){S.test(e)?f=4:"/"===e?f=12:">"===e?W():"<"===e?$():(f=4,c--)}function R(e){">"===e?(m=new ne(h(h({},m),{isClosing:!0})),W()):f=4}function M(t){"--"===e.substr(c,2)?(c+=2,m=new ne(h(h({},m),{type:"comment"})),f=14):"DOCTYPE"===e.substr(c,7).toUpperCase()?(c+=7,m=new ne(h(h({},m),{type:"doctype"})),f=20):V()}function D(e){"-"===e?f=15:">"===e?V():f=16}function L(e){"-"===e?f=18:">"===e?V():f=16}function B(e){"-"===e&&(f=17)}function F(e){f="-"===e?18:16}function z(e){">"===e?W():"!"===e?f=19:"-"===e||(f=16)}function U(e){"-"===e?f=17:">"===e?W():f=16}function q(e){">"===e?W():"<"===e&&$()}function V(){f=0,m=u}function $(){f=1,m=new ne({idx:c})}function W(){var t=e.slice(d,m.idx);t&&a(t,d),"comment"===m.type?i(m.idx):"doctype"===m.type?l(m.idx):(m.isOpening&&n(m.name,m.idx),m.isClosing&&o(m.name,m.idx)),V(),d=c+1}function H(){var t=m.idx+(m.isClosing?2:1);return e.slice(t,c).toLowerCase()}d=0&&n++},onText:function(e,r){if(0===n){var a=function(e,t){if(!t.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var r,n=[],o=0;r=t.exec(e);)n.push(e.substring(o,r.index)),n.push(r[0]),o=r.index+r[0].length;return n.push(e.substring(o)),n}(e,/( | |<|<|>|>|"|"|')/gi),i=r;a.forEach((function(e,r){if(r%2==0){var n=t.parseText(e,i);o.push.apply(o,n)}i+=e.length}))}},onCloseTag:function(e){r.indexOf(e)>=0&&(n=Math.max(n-1,0))},onComment:function(e){},onDoctype:function(e){}}),o=this.compactMatches(o),o=this.removeUnwantedMatches(o)},e.prototype.compactMatches=function(e){e.sort((function(e,t){return e.getOffset()-t.getOffset()}));for(var t=0;to?t:t+1;e.splice(i,1);continue}e[t+1].getOffset()/g,">"));for(var t=this.parse(e),r=[],n=0,o=0,a=t.length;o/i.test(e)}function se(){var e=[],t=new oe({stripPrefix:!1,url:!0,email:!0,replaceFn:function(t){switch(t.getType()){case"url":e.push({text:t.matchedText,url:t.getUrl()});break;case"email":e.push({text:t.matchedText,url:"mailto:"+t.getEmail().replace(/^mailto:/i,"")})}return!1}});return{links:e,autolinker:t}}function le(e){var t,r,n,o,a,i,s,l,u,c,p,f,h,d,m=e.tokens,g=null;for(r=0,n=m.length;r=0;t--)if("link_close"!==(a=o[t]).type){if("htmltag"===a.type&&(d=a.content,/^\s]/i.test(d)&&p>0&&p--,ie(a.content)&&p++),!(p>0)&&"text"===a.type&&ae.test(a.content)){if(g||(f=(g=se()).links,h=g.autolinker),i=a.content,f.length=0,h.link(i),!f.length)continue;for(s=[],c=a.level,l=0;l({useUnsafeMarkdown:!1})};const me=de;function ge(e){let{useUnsafeMarkdown:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=t,n=t?[]:["style","class"];return t&&!ge.hasWarnedAboutDeprecation&&(console.warn("useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0."),ge.hasWarnedAboutDeprecation=!0),pe().sanitize(e,{ADD_ATTR:["target"],FORBID_TAGS:["style","form"],ALLOW_DATA_ATTR:r,FORBID_ATTR:n})}ge.hasWarnedAboutDeprecation=!1},45308:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var n,o=r(86),a=r.n(o),i=r(8712),s=r.n(i),l=r(90242),u=r(27621);const c=r(95102),p={},f=p;a()(n=s()(c).call(c)).call(n,(function(e){if("./index.js"===e)return;let t=c(e);p[(0,l.Zl)(e)]=t.default?t.default:t})),p.SafeRender=u.default},55812:(e,t,r)=>{"use strict";r.r(t),r.d(t,{SHOW_AUTH_POPUP:()=>p,AUTHORIZE:()=>f,LOGOUT:()=>h,PRE_AUTHORIZE_OAUTH2:()=>d,AUTHORIZE_OAUTH2:()=>m,VALIDATE:()=>g,CONFIGURE_AUTH:()=>v,RESTORE_AUTHORIZATION:()=>y,showDefinitions:()=>b,authorize:()=>w,authorizeWithPersistOption:()=>E,logout:()=>x,logoutWithPersistOption:()=>_,preAuthorizeImplicit:()=>S,authorizeOauth2:()=>A,authorizeOauth2WithPersistOption:()=>k,authorizePassword:()=>C,authorizeApplication:()=>O,authorizeAccessCodeWithFormParams:()=>j,authorizeAccessCodeWithBasicAuthentication:()=>I,authorizeRequest:()=>N,configureAuth:()=>T,restoreAuthorization:()=>P,persistAuthorizationIfNeeded:()=>R,authPopup:()=>M});var n=r(35627),o=r.n(n),a=r(76986),i=r.n(a),s=r(84564),l=r.n(s),u=r(27504),c=r(90242);const p="show_popup",f="authorize",h="logout",d="pre_authorize_oauth2",m="authorize_oauth2",g="validate",v="configure_auth",y="restore_authorization";function b(e){return{type:p,payload:e}}function w(e){return{type:f,payload:e}}const E=e=>t=>{let{authActions:r}=t;r.authorize(e),r.persistAuthorizationIfNeeded()};function x(e){return{type:h,payload:e}}const _=e=>t=>{let{authActions:r}=t;r.logout(e),r.persistAuthorizationIfNeeded()},S=e=>t=>{let{authActions:r,errActions:n}=t,{auth:a,token:i,isValid:s}=e,{schema:l,name:c}=a,p=l.get("flow");delete u.Z.swaggerUIRedirectOauth2,"accessCode"===p||s||n.newAuthErr({authId:c,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),i.error?n.newAuthErr({authId:c,source:"auth",level:"error",message:o()(i)}):r.authorizeOauth2WithPersistOption({auth:a,token:i})};function A(e){return{type:m,payload:e}}const k=e=>t=>{let{authActions:r}=t;r.authorizeOauth2(e),r.persistAuthorizationIfNeeded()},C=e=>t=>{let{authActions:r}=t,{schema:n,name:o,username:a,password:s,passwordType:l,clientId:u,clientSecret:p}=e,f={grant_type:"password",scope:e.scopes.join(" "),username:a,password:s},h={};switch(l){case"request-body":!function(e,t,r){t&&i()(e,{client_id:t});r&&i()(e,{client_secret:r})}(f,u,p);break;case"basic":h.Authorization="Basic "+(0,c.r3)(u+":"+p);break;default:console.warn(`Warning: invalid passwordType ${l} was passed, not including client id and secret`)}return r.authorizeRequest({body:(0,c.GZ)(f),url:n.get("tokenUrl"),name:o,headers:h,query:{},auth:e})};const O=e=>t=>{let{authActions:r}=t,{schema:n,scopes:o,name:a,clientId:i,clientSecret:s}=e,l={Authorization:"Basic "+(0,c.r3)(i+":"+s)},u={grant_type:"client_credentials",scope:o.join(" ")};return r.authorizeRequest({body:(0,c.GZ)(u),name:a,url:n.get("tokenUrl"),auth:e,headers:l})},j=e=>{let{auth:t,redirectUrl:r}=e;return e=>{let{authActions:n}=e,{schema:o,name:a,clientId:i,clientSecret:s,codeVerifier:l}=t,u={grant_type:"authorization_code",code:t.code,client_id:i,client_secret:s,redirect_uri:r,code_verifier:l};return n.authorizeRequest({body:(0,c.GZ)(u),name:a,url:o.get("tokenUrl"),auth:t})}},I=e=>{let{auth:t,redirectUrl:r}=e;return e=>{let{authActions:n}=e,{schema:o,name:a,clientId:i,clientSecret:s,codeVerifier:l}=t,u={Authorization:"Basic "+(0,c.r3)(i+":"+s)},p={grant_type:"authorization_code",code:t.code,client_id:i,redirect_uri:r,code_verifier:l};return n.authorizeRequest({body:(0,c.GZ)(p),name:a,url:o.get("tokenUrl"),auth:t,headers:u})}},N=e=>t=>{let r,{fn:n,getConfigs:a,authActions:s,errActions:u,oas3Selectors:c,specSelectors:p,authSelectors:f}=t,{body:h,query:d={},headers:m={},name:g,url:v,auth:y}=e,{additionalQueryStringParams:b}=f.getConfigs()||{};if(p.isOAS3()){let e=c.serverEffectiveValue(c.selectedServer());r=l()(v,e,!0)}else r=l()(v,p.url(),!0);"object"==typeof b&&(r.query=i()({},r.query,b));const w=r.toString();let E=i()({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},m);n.fetch({url:w,method:"post",headers:E,query:d,body:h,requestInterceptor:a().requestInterceptor,responseInterceptor:a().responseInterceptor}).then((function(e){let t=JSON.parse(e.data),r=t&&(t.error||""),n=t&&(t.parseError||"");e.ok?r||n?u.newAuthErr({authId:g,level:"error",source:"auth",message:o()(t)}):s.authorizeOauth2WithPersistOption({auth:y,token:t}):u.newAuthErr({authId:g,level:"error",source:"auth",message:e.statusText})})).catch((e=>{let t=new Error(e).message;if(e.response&&e.response.data){const r=e.response.data;try{const e="string"==typeof r?JSON.parse(r):r;e.error&&(t+=`, error: ${e.error}`),e.error_description&&(t+=`, description: ${e.error_description}`)}catch(e){}}u.newAuthErr({authId:g,level:"error",source:"auth",message:t})}))};function T(e){return{type:v,payload:e}}function P(e){return{type:y,payload:e}}const R=()=>e=>{let{authSelectors:t,getConfigs:r}=e;if(r().persistAuthorization){const e=t.authorized();localStorage.setItem("authorized",o()(e.toJS()))}},M=(e,t)=>()=>{u.Z.swaggerUIRedirectOauth2=t,u.Z.open(e)}},93705:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u,preauthorizeBasic:()=>c,preauthorizeApiKey:()=>p});var n=r(11189),o=r.n(n),a=r(43962),i=r(55812),s=r(60035),l=r(48302);function u(){return{afterLoad(e){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=e.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=o()(p).call(p,null,e),this.rootInjects.preauthorizeBasic=o()(c).call(c,null,e)},statePlugins:{auth:{reducers:a.default,actions:i,selectors:s},spec:{wrapActions:l}}}}function c(e,t,r,n){const{authActions:{authorize:o},specSelectors:{specJson:a,isOAS3:i}}=e,s=i()?["components","securitySchemes"]:["securityDefinitions"],l=a().getIn([...s,t]);return l?o({[t]:{value:{username:r,password:n},schema:l.toJS()}}):null}function p(e,t,r){const{authActions:{authorize:n},specSelectors:{specJson:o,isOAS3:a}}=e,i=a()?["components","securitySchemes"]:["securityDefinitions"],s=o().getIn([...i,t]);return s?n({[t]:{value:r,schema:s.toJS()}}):null}},43962:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(86),o=r.n(n),a=r(76986),i=r.n(a),s=r(43393),l=r(90242),u=r(55812);const c={[u.SHOW_AUTH_POPUP]:(e,t)=>{let{payload:r}=t;return e.set("showDefinitions",r)},[u.AUTHORIZE]:(e,t)=>{var r;let{payload:n}=t,a=(0,s.fromJS)(n),i=e.get("authorized")||(0,s.Map)();return o()(r=a.entrySeq()).call(r,(t=>{let[r,n]=t;if(!(0,l.Wl)(n.getIn))return e.set("authorized",i);let o=n.getIn(["schema","type"]);if("apiKey"===o||"http"===o)i=i.set(r,n);else if("basic"===o){let e=n.getIn(["value","username"]),t=n.getIn(["value","password"]);i=i.setIn([r,"value"],{username:e,header:"Basic "+(0,l.r3)(e+":"+t)}),i=i.setIn([r,"schema"],n.get("schema"))}})),e.set("authorized",i)},[u.AUTHORIZE_OAUTH2]:(e,t)=>{let r,{payload:n}=t,{auth:o,token:a}=n;o.token=i()({},a),r=(0,s.fromJS)(o);let l=e.get("authorized")||(0,s.Map)();return l=l.set(r.get("name"),r),e.set("authorized",l)},[u.LOGOUT]:(e,t)=>{let{payload:r}=t,n=e.get("authorized").withMutations((e=>{o()(r).call(r,(t=>{e.delete(t)}))}));return e.set("authorized",n)},[u.CONFIGURE_AUTH]:(e,t)=>{let{payload:r}=t;return e.set("configs",r)},[u.RESTORE_AUTHORIZATION]:(e,t)=>{let{payload:r}=t;return e.set("authorized",(0,s.fromJS)(r.authorized))}}},60035:(e,t,r)=>{"use strict";r.r(t),r.d(t,{shownDefinitions:()=>y,definitionsToAuthorize:()=>b,getDefinitionsByNames:()=>w,definitionsForRequirements:()=>E,authorized:()=>x,isAuthorized:()=>_,getConfigs:()=>S});var n=r(86),o=r.n(n),a=r(51679),i=r.n(a),s=r(14418),l=r.n(s),u=r(11882),c=r.n(u),p=r(97606),f=r.n(p),h=r(28222),d=r.n(h),m=r(20573),g=r(43393);const v=e=>e,y=(0,m.P1)(v,(e=>e.get("showDefinitions"))),b=(0,m.P1)(v,(()=>e=>{var t;let{specSelectors:r}=e,n=r.securityDefinitions()||(0,g.Map)({}),a=(0,g.List)();return o()(t=n.entrySeq()).call(t,(e=>{let[t,r]=e,n=(0,g.Map)();n=n.set(t,r),a=a.push(n)})),a})),w=(e,t)=>e=>{var r;let{specSelectors:n}=e;console.warn("WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.");let a=n.securityDefinitions(),i=(0,g.List)();return o()(r=t.valueSeq()).call(r,(e=>{var t;let r=(0,g.Map)();o()(t=e.entrySeq()).call(t,(e=>{let t,[n,i]=e,s=a.get(n);var l;"oauth2"===s.get("type")&&i.size&&(t=s.get("scopes"),o()(l=t.keySeq()).call(l,(e=>{i.contains(e)||(t=t.delete(e))})),s=s.set("allowedScopes",t));r=r.set(n,s)})),i=i.push(r)})),i},E=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,g.List)();return e=>{let{authSelectors:r}=e;const n=r.definitionsToAuthorize()||(0,g.List)();let a=(0,g.List)();return o()(n).call(n,(e=>{let r=i()(t).call(t,(t=>t.get(e.keySeq().first())));r&&(o()(e).call(e,((t,n)=>{if("oauth2"===t.get("type")){const i=r.get(n);let s=t.get("scopes");var a;if(g.List.isList(i)&&g.Map.isMap(s))o()(a=s.keySeq()).call(a,(e=>{i.contains(e)||(s=s.delete(e))})),e=e.set(n,t.set("scopes",s))}})),a=a.push(e))})),a}},x=(0,m.P1)(v,(e=>e.get("authorized")||(0,g.Map)())),_=(e,t)=>e=>{var r;let{authSelectors:n}=e,o=n.authorized();return g.List.isList(t)?!!l()(r=t.toJS()).call(r,(e=>{var t,r;return-1===c()(t=f()(r=d()(e)).call(r,(e=>!!o.get(e)))).call(t,!1)})).length:null},S=(0,m.P1)(v,(e=>e.get("configs")))},48302:(e,t,r)=>{"use strict";r.r(t),r.d(t,{execute:()=>n});const n=(e,t)=>{let{authSelectors:r,specSelectors:n}=t;return t=>{let{path:o,method:a,operation:i,extras:s}=t,l={authorized:r.authorized()&&r.authorized().toJS(),definitions:n.securityDefinitions()&&n.securityDefinitions().toJS(),specSecurity:n.security()&&n.security().toJS()};return e({path:o,method:a,operation:i,securities:l,...s})}}},70714:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_CONFIGS:()=>n,TOGGLE_CONFIGS:()=>o,update:()=>a,toggle:()=>i,loaded:()=>s});const n="configs_update",o="configs_toggle";function a(e,t){return{type:n,payload:{[e]:t}}}function i(e){return{type:o,payload:e}}const s=()=>e=>{let{getConfigs:t,authActions:r}=e;if(t().persistAuthorization){const e=localStorage.getItem("authorized");e&&r.restoreAuthorization({authorized:JSON.parse(e)})}}},92256:(e,t,r)=>{"use strict";r.r(t),r.d(t,{parseYamlConfig:()=>o});var n=r(1272);const o=(e,t)=>{try{return n.ZP.load(e)}catch(e){return t&&t.errActions.newThrownErr(new Error(e)),{}}}},1661:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(15163),o=r(92256),a=r(70714),i=r(22698),s=r(69018),l=r(37743);const u={getLocalConfig:()=>(0,o.parseYamlConfig)(n)};function c(){return{statePlugins:{spec:{actions:i,selectors:u},configs:{reducers:l.default,actions:a,selectors:s}}}}},37743:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(43393),o=r(70714);const a={[o.UPDATE_CONFIGS]:(e,t)=>e.merge((0,n.fromJS)(t.payload)),[o.TOGGLE_CONFIGS]:(e,t)=>{const r=t.payload,n=e.get(r);return e.set(r,!n)}}},69018:(e,t,r)=>{"use strict";r.r(t),r.d(t,{get:()=>a});var n=r(58309),o=r.n(n);const a=(e,t)=>e.getIn(o()(t)?t:[t])},22698:(e,t,r)=>{"use strict";r.r(t),r.d(t,{downloadConfig:()=>o,getConfigByUrl:()=>a});var n=r(92256);const o=e=>t=>{const{fn:{fetch:r}}=t;return r(e)},a=(e,t)=>r=>{let{specActions:o}=r;if(e)return o.downloadConfig(e).then(a,a);function a(r){r instanceof Error||r.status>=400?(o.updateLoadingStatus("failedConfig"),o.updateLoadingStatus("failedConfig"),o.updateUrl(""),console.error(r.statusText+" "+e.url),t(null)):t((0,n.parseYamlConfig)(r.text))}}},31970:(e,t,r)=>{"use strict";r.r(t),r.d(t,{setHash:()=>n});const n=e=>e?history.pushState(null,null,`#${e}`):window.location.hash=""},34980:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(41599),o=r(60877),a=r(34584);function i(){return[n.default,{statePlugins:{configs:{wrapActions:{loaded:(e,t)=>function(){e(...arguments);const r=decodeURIComponent(window.location.hash);t.layoutActions.parseDeepLinkHash(r)}}}},wrapComponents:{operation:o.default,OperationTag:a.default}}]}},41599:(e,t,r)=>{"use strict";r.r(t),r.d(t,{show:()=>b,scrollTo:()=>w,parseDeepLinkHash:()=>E,readyToScroll:()=>x,scrollToElement:()=>_,clearScrollTo:()=>S,default:()=>A});var n=r(58309),o=r.n(n),a=r(24278),i=r.n(a),s=r(97606),l=r.n(s),u=r(11882),c=r.n(u),p=r(31970),f=r(45172),h=r.n(f),d=r(90242),m=r(43393),g=r.n(m);const v="layout_scroll_to",y="layout_clear_scroll",b=(e,t)=>{let{getConfigs:r,layoutSelectors:n}=t;return function(){for(var t=arguments.length,a=new Array(t),i=0;i({type:v,payload:o()(e)?e:[e]}),E=e=>t=>{let{layoutActions:r,layoutSelectors:n,getConfigs:o}=t;if(o().deepLinking&&e){var a;let t=i()(e).call(e,1);"!"===t[0]&&(t=i()(t).call(t,1)),"/"===t[0]&&(t=i()(t).call(t,1));const o=l()(a=t.split("/")).call(a,(e=>e||"")),s=n.isShownKeyFromUrlHashArray(o),[u,p="",f=""]=s;if("operations"===u){const e=n.isShownKeyFromUrlHashArray([p]);c()(p).call(p,"_")>-1&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),r.show(l()(e).call(e,(e=>e.replace(/_/g," "))),!0)),r.show(e,!0)}(c()(p).call(p,"_")>-1||c()(f).call(f,"_")>-1)&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),r.show(l()(s).call(s,(e=>e.replace(/_/g," "))),!0)),r.show(s,!0),r.scrollTo(s)}},x=(e,t)=>r=>{const n=r.layoutSelectors.getScrollToKey();g().is(n,(0,m.fromJS)(e))&&(r.layoutActions.scrollToElement(t),r.layoutActions.clearScrollTo())},_=(e,t)=>r=>{try{t=t||r.fn.getScrollParent(e),h().createScroller(t).to(e)}catch(e){console.error(e)}},S=()=>({type:y});const A={fn:{getScrollParent:function(e,t){const r=document.documentElement;let n=getComputedStyle(e);const o="absolute"===n.position,a=t?/(auto|scroll|hidden)/:/(auto|scroll)/;if("fixed"===n.position)return r;for(let t=e;t=t.parentElement;)if(n=getComputedStyle(t),(!o||"static"!==n.position)&&a.test(n.overflow+n.overflowY+n.overflowX))return t;return r}},statePlugins:{layout:{actions:{scrollToElement:_,scrollTo:w,clearScrollTo:S,readyToScroll:x,parseDeepLinkHash:E},selectors:{getScrollToKey:e=>e.get("scrollToKey"),isShownKeyFromUrlHashArray(e,t){const[r,n]=t;return n?["operations",r,n]:r?["operations-tag",r]:[]},urlHashArrayFromIsShownKey(e,t){let[r,n,o]=t;return"operations"==r?[n,o]:"operations-tag"==r?[n]:[]}},reducers:{[v]:(e,t)=>e.set("scrollToKey",g().fromJS(t.payload)),[y]:e=>e.delete("scrollToKey")},wrapActions:{show:b}}}}},34584:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);const i=(e,t)=>class extends a.Component{constructor(){super(...arguments),o()(this,"onLoad",(e=>{const{tag:r}=this.props,n=["operations-tag",r];t.layoutActions.readyToScroll(n,e)}))}render(){return a.createElement("span",{ref:this.onLoad},a.createElement(e,this.props))}}},60877:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);r(23930);const i=(e,t)=>class extends a.Component{constructor(){super(...arguments),o()(this,"onLoad",(e=>{const{operation:r}=this.props,{tag:n,operationId:o}=r.toObject();let{isShownKey:a}=r.toObject();a=a||["operations",n,o],t.layoutActions.readyToScroll(a,e)}))}render(){return a.createElement("span",{ref:this.onLoad},a.createElement(e,this.props))}}},48011:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var n=r(76986),o=r.n(n),a=r(63460),i=r.n(a),s=r(11882),l=r.n(s),u=r(35627),c=r.n(u),p=r(20573),f=r(43393),h=r(27504);function d(e){let{fn:t}=e;return{statePlugins:{spec:{actions:{download:e=>r=>{let{errActions:n,specSelectors:a,specActions:s,getConfigs:l}=r,{fetch:u}=t;const c=l();function p(t){if(t instanceof Error||t.status>=400)return s.updateLoadingStatus("failed"),n.newThrownErr(o()(new Error((t.message||t.statusText)+" "+e),{source:"fetch"})),void(!t.status&&t instanceof Error&&function(){try{let t;if("URL"in h.Z?t=new(i())(e):(t=document.createElement("a"),t.href=e),"https:"!==t.protocol&&"https:"===h.Z.location.protocol){const e=o()(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${t.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:"fetch"});return void n.newThrownErr(e)}if(t.origin!==h.Z.location.origin){const e=o()(new Error(`Possible cross-origin (CORS) issue? The URL origin (${t.origin}) does not match the page (${h.Z.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:"fetch"});n.newThrownErr(e)}}catch(e){return}}());s.updateLoadingStatus("success"),s.updateSpec(t.text),a.url()!==e&&s.updateUrl(e)}e=e||a.url(),s.updateLoadingStatus("loading"),n.clear({source:"fetch"}),u({url:e,loadSpec:!0,requestInterceptor:c.requestInterceptor||(e=>e),responseInterceptor:c.responseInterceptor||(e=>e),credentials:"same-origin",headers:{Accept:"application/json,*/*"}}).then(p,p)},updateLoadingStatus:e=>{let t=[null,"loading","failed","success","failedConfig"];return-1===l()(t).call(t,e)&&console.error(`Error: ${e} is not one of ${c()(t)}`),{type:"spec_update_loading_status",payload:e}}},reducers:{spec_update_loading_status:(e,t)=>"string"==typeof t.payload?e.set("loadingStatus",t.payload):e},selectors:{loadingStatus:(0,p.P1)((e=>e||(0,f.Map)()),(e=>e.get("loadingStatus")||null))}}}}}},34966:(e,t,r)=>{"use strict";r.r(t),r.d(t,{NEW_THROWN_ERR:()=>o,NEW_THROWN_ERR_BATCH:()=>a,NEW_SPEC_ERR:()=>i,NEW_SPEC_ERR_BATCH:()=>s,NEW_AUTH_ERR:()=>l,CLEAR:()=>u,CLEAR_BY:()=>c,newThrownErr:()=>p,newThrownErrBatch:()=>f,newSpecErr:()=>h,newSpecErrBatch:()=>d,newAuthErr:()=>m,clear:()=>g,clearBy:()=>v});var n=r(7710);const o="err_new_thrown_err",a="err_new_thrown_err_batch",i="err_new_spec_err",s="err_new_spec_err_batch",l="err_new_auth_err",u="err_clear",c="err_clear_by";function p(e){return{type:o,payload:(0,n.serializeError)(e)}}function f(e){return{type:a,payload:e}}function h(e){return{type:i,payload:e}}function d(e){return{type:s,payload:e}}function m(e){return{type:l,payload:e}}function g(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{type:u,payload:e}}function v(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>!0;return{type:c,payload:e}}},56982:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(14418),o=r.n(n),a=r(97606),i=r.n(a),s=r(54061),l=r.n(s);const u=[r(2392),r(21835)];function c(e){var t;let r={jsSpec:{}},n=l()(u,((e,t)=>{try{let n=t.transform(e,r);return o()(n).call(n,(e=>!!e))}catch(t){return console.error("Transformer error:",t),e}}),e);return i()(t=o()(n).call(n,(e=>!!e))).call(t,(e=>(!e.get("line")&&e.get("path"),e)))}},2392:(e,t,r)=>{"use strict";r.r(t),r.d(t,{transform:()=>p});var n=r(97606),o=r.n(n),a=r(11882),i=r.n(a),s=r(24278),l=r.n(s),u=r(24282),c=r.n(u);function p(e){return o()(e).call(e,(e=>{var t;let r="is not of a type(s)",n=i()(t=e.get("message")).call(t,r);if(n>-1){var o,a;let t=l()(o=e.get("message")).call(o,n+r.length).split(",");return e.set("message",l()(a=e.get("message")).call(a,0,n)+function(e){return c()(e).call(e,((e,t,r,n)=>r===n.length-1&&n.length>1?e+"or "+t:n[r+1]&&n.length>2?e+t+", ":n[r+1]?e+t+" ":e+t),"should be a")}(t))}return e}))}},21835:(e,t,r)=>{"use strict";r.r(t),r.d(t,{transform:()=>n});r(97606),r(11882),r(27361),r(43393);function n(e,t){let{jsSpec:r}=t;return e}},77793:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(93527),o=r(34966),a=r(87667);function i(e){return{statePlugins:{err:{reducers:(0,n.default)(e),actions:o,selectors:a}}}}},93527:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>v});var n=r(76986),o=r.n(n),a=r(97606),i=r.n(a),s=r(39022),l=r.n(s),u=r(14418),c=r.n(u),p=r(2250),f=r.n(p),h=r(34966),d=r(43393),m=r(56982);let g={line:0,level:"error",message:"Unknown error"};function v(){return{[h.NEW_THROWN_ERR]:(e,t)=>{let{payload:r}=t,n=o()(g,r,{type:"thrown"});return e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)))).update("errors",(e=>(0,m.default)(e)))},[h.NEW_THROWN_ERR_BATCH]:(e,t)=>{let{payload:r}=t;return r=i()(r).call(r,(e=>(0,d.fromJS)(o()(g,e,{type:"thrown"})))),e.update("errors",(e=>{var t;return l()(t=e||(0,d.List)()).call(t,(0,d.fromJS)(r))})).update("errors",(e=>(0,m.default)(e)))},[h.NEW_SPEC_ERR]:(e,t)=>{let{payload:r}=t,n=(0,d.fromJS)(r);return n=n.set("type","spec"),e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)).sortBy((e=>e.get("line"))))).update("errors",(e=>(0,m.default)(e)))},[h.NEW_SPEC_ERR_BATCH]:(e,t)=>{let{payload:r}=t;return r=i()(r).call(r,(e=>(0,d.fromJS)(o()(g,e,{type:"spec"})))),e.update("errors",(e=>{var t;return l()(t=e||(0,d.List)()).call(t,(0,d.fromJS)(r))})).update("errors",(e=>(0,m.default)(e)))},[h.NEW_AUTH_ERR]:(e,t)=>{let{payload:r}=t,n=(0,d.fromJS)(o()({},r));return n=n.set("type","auth"),e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)))).update("errors",(e=>(0,m.default)(e)))},[h.CLEAR]:(e,t)=>{var r;let{payload:n}=t;if(!n||!e.get("errors"))return e;let o=c()(r=e.get("errors")).call(r,(e=>{var t;return f()(t=e.keySeq()).call(t,(t=>{const r=e.get(t),o=n[t];return!o||r!==o}))}));return e.merge({errors:o})},[h.CLEAR_BY]:(e,t)=>{var r;let{payload:n}=t;if(!n||"function"!=typeof n)return e;let o=c()(r=e.get("errors")).call(r,(e=>n(e)));return e.merge({errors:o})}}}},87667:(e,t,r)=>{"use strict";r.r(t),r.d(t,{allErrors:()=>a,lastError:()=>i});var n=r(43393),o=r(20573);const a=(0,o.P1)((e=>e),(e=>e.get("errors",(0,n.List)()))),i=(0,o.P1)(a,(e=>e.last()))},49978:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(4309);function o(){return{fn:{opsFilter:n.default}}}},4309:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(14418),o=r.n(n),a=r(11882),i=r.n(a);function s(e,t){return o()(e).call(e,((e,r)=>-1!==i()(r).call(r,t)))}},25474:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_LAYOUT:()=>o,UPDATE_FILTER:()=>a,UPDATE_MODE:()=>i,SHOW:()=>s,updateLayout:()=>l,updateFilter:()=>u,show:()=>c,changeMode:()=>p});var n=r(90242);const o="layout_update_layout",a="layout_update_filter",i="layout_update_mode",s="layout_show";function l(e){return{type:o,payload:e}}function u(e){return{type:a,payload:e}}function c(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e=(0,n.AF)(e),{type:s,payload:{thing:e,shown:t}}}function p(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e=(0,n.AF)(e),{type:i,payload:{thing:e,mode:t}}}},26821:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(5672),o=r(25474),a=r(4400),i=r(28989);function s(){return{statePlugins:{layout:{reducers:n.default,actions:o,selectors:a},spec:{wrapSelectors:i}}}}},5672:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(39022),o=r.n(n),a=r(43393),i=r(25474);const s={[i.UPDATE_LAYOUT]:(e,t)=>e.set("layout",t.payload),[i.UPDATE_FILTER]:(e,t)=>e.set("filter",t.payload),[i.SHOW]:(e,t)=>{const r=t.payload.shown,n=(0,a.fromJS)(t.payload.thing);return e.update("shown",(0,a.fromJS)({}),(e=>e.set(n,r)))},[i.UPDATE_MODE]:(e,t)=>{var r;let n=t.payload.thing,a=t.payload.mode;return e.setIn(o()(r=["modes"]).call(r,n),(a||"")+"")}}},4400:(e,t,r)=>{"use strict";r.r(t),r.d(t,{current:()=>i,currentFilter:()=>s,isShown:()=>l,whatMode:()=>u,showSummary:()=>c});var n=r(20573),o=r(90242),a=r(43393);const i=e=>e.get("layout"),s=e=>e.get("filter"),l=(e,t,r)=>(t=(0,o.AF)(t),e.get("shown",(0,a.fromJS)({})).get((0,a.fromJS)(t),r)),u=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return t=(0,o.AF)(t),e.getIn(["modes",...t],r)},c=(0,n.P1)((e=>e),(e=>!l(e,"editor")))},28989:(e,t,r)=>{"use strict";r.r(t),r.d(t,{taggedOperations:()=>a});var n=r(24278),o=r.n(n);const a=(e,t)=>function(r){for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i=0&&(s=o()(s).call(s,0,f)),s}},9150:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(11189),o=r.n(n);function a(e){let{configs:t}=e;const r={debug:0,info:1,log:2,warn:3,error:4},n=e=>r[e]||-1;let{logLevel:a}=t,i=n(a);function s(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o=i&&console[e](...r)}return s.warn=o()(s).call(s,null,"warn"),s.error=o()(s).call(s,null,"error"),s.info=o()(s).call(s,null,"info"),s.debug=o()(s).call(s,null,"debug"),{rootInjects:{log:s}}}},67002:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_SELECTED_SERVER:()=>n,UPDATE_REQUEST_BODY_VALUE:()=>o,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>a,UPDATE_REQUEST_BODY_INCLUSION:()=>i,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>s,UPDATE_REQUEST_CONTENT_TYPE:()=>l,UPDATE_RESPONSE_CONTENT_TYPE:()=>u,UPDATE_SERVER_VARIABLE_VALUE:()=>c,SET_REQUEST_BODY_VALIDATE_ERROR:()=>p,CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>f,CLEAR_REQUEST_BODY_VALUE:()=>h,setSelectedServer:()=>d,setRequestBodyValue:()=>m,setRetainRequestBodyValueFlag:()=>g,setRequestBodyInclusion:()=>v,setActiveExamplesMember:()=>y,setRequestContentType:()=>b,setResponseContentType:()=>w,setServerVariableValue:()=>E,setRequestBodyValidateError:()=>x,clearRequestBodyValidateError:()=>_,initRequestBodyValidateError:()=>S,clearRequestBodyValue:()=>A});const n="oas3_set_servers",o="oas3_set_request_body_value",a="oas3_set_request_body_retain_flag",i="oas3_set_request_body_inclusion",s="oas3_set_active_examples_member",l="oas3_set_request_content_type",u="oas3_set_response_content_type",c="oas3_set_server_variable_value",p="oas3_set_request_body_validate_error",f="oas3_clear_request_body_validate_error",h="oas3_clear_request_body_value";function d(e,t){return{type:n,payload:{selectedServerUrl:e,namespace:t}}}function m(e){let{value:t,pathMethod:r}=e;return{type:o,payload:{value:t,pathMethod:r}}}const g=e=>{let{value:t,pathMethod:r}=e;return{type:a,payload:{value:t,pathMethod:r}}};function v(e){let{value:t,pathMethod:r,name:n}=e;return{type:i,payload:{value:t,pathMethod:r,name:n}}}function y(e){let{name:t,pathMethod:r,contextType:n,contextName:o}=e;return{type:s,payload:{name:t,pathMethod:r,contextType:n,contextName:o}}}function b(e){let{value:t,pathMethod:r}=e;return{type:l,payload:{value:t,pathMethod:r}}}function w(e){let{value:t,path:r,method:n}=e;return{type:u,payload:{value:t,path:r,method:n}}}function E(e){let{server:t,namespace:r,key:n,val:o}=e;return{type:c,payload:{server:t,namespace:r,key:n,val:o}}}const x=e=>{let{path:t,method:r,validationErrors:n}=e;return{type:p,payload:{path:t,method:r,validationErrors:n}}},_=e=>{let{path:t,method:r}=e;return{type:f,payload:{path:t,method:r}}},S=e=>{let{pathMethod:t}=e;return{type:f,payload:{path:t[0],method:t[1]}}},A=e=>{let{pathMethod:t}=e;return{type:h,payload:{pathMethod:t}}}},73723:(e,t,r)=>{"use strict";r.r(t),r.d(t,{definitionsToAuthorize:()=>f});var n=r(86),o=r.n(n),a=r(14418),i=r.n(a),s=r(24282),l=r.n(s),u=r(20573),c=r(43393),p=r(7779);const f=(h=(0,u.P1)((e=>e),(e=>{let{specSelectors:t}=e;return t.securityDefinitions()}),((e,t)=>{var r;let n=(0,c.List)();return t?(o()(r=t.entrySeq()).call(r,(e=>{let[t,r]=e;const a=r.get("type");var s;if("oauth2"===a&&o()(s=r.get("flows").entrySeq()).call(s,(e=>{let[o,a]=e,s=(0,c.fromJS)({flow:o,authorizationUrl:a.get("authorizationUrl"),tokenUrl:a.get("tokenUrl"),scopes:a.get("scopes"),type:r.get("type"),description:r.get("description")});n=n.push(new c.Map({[t]:i()(s).call(s,(e=>void 0!==e))}))})),"http"!==a&&"apiKey"!==a||(n=n.push(new c.Map({[t]:r}))),"openIdConnect"===a&&r.get("openIdConnectData")){let e=r.get("openIdConnectData"),a=e.get("grant_types_supported")||["authorization_code","implicit"];o()(a).call(a,(o=>{var a;let s=e.get("scopes_supported")&&l()(a=e.get("scopes_supported")).call(a,((e,t)=>e.set(t,"")),new c.Map),u=(0,c.fromJS)({flow:o,authorizationUrl:e.get("authorization_endpoint"),tokenUrl:e.get("token_endpoint"),scopes:s,type:"oauth2",openIdConnectUrl:r.get("openIdConnectUrl")});n=n.push(new c.Map({[t]:i()(u).call(u,(e=>void 0!==e))}))}))}})),n):n})),(e,t)=>function(){const r=t.getSystem().specSelectors.specJson();for(var n=arguments.length,o=new Array(n),a=0;a{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(23101),o=r.n(n),a=r(97606),i=r.n(a),s=r(67294),l=(r(23930),r(43393));const u=e=>{var t;let{callbacks:r,getComponent:n,specPath:a}=e;const u=n("OperationContainer",!0);if(!r)return s.createElement("span",null,"No callbacks");let c=i()(t=r.entrySeq()).call(t,(t=>{var r;let[n,c]=t;return s.createElement("div",{key:n},s.createElement("h2",null,n),i()(r=c.entrySeq()).call(r,(t=>{var r;let[c,p]=t;return"$$ref"===c?null:s.createElement("div",{key:c},i()(r=p.entrySeq()).call(r,(t=>{let[r,i]=t;if("$$ref"===r)return null;let p=(0,l.fromJS)({operation:i});return s.createElement(u,o()({},e,{op:p,key:r,tag:"",method:r,path:c,specPath:a.push(n,c,r),allowTryItOut:!1}))})))})))}));return s.createElement("div",null,c)}},86775:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var n=r(61125),o=r.n(n),a=r(76986),i=r.n(a),s=r(14418),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294);class f extends p.Component{constructor(e,t){super(e,t),o()(this,"onChange",(e=>{let{onChange:t}=this.props,{value:r,name:n}=e.target,o=i()({},this.state.value);n?o[n]=r:o=r,this.setState({value:o},(()=>t(this.state)))}));let{name:r,schema:n}=this.props,a=this.getValue();this.state={name:r,schema:n,value:a}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,"value"])}render(){var e;let{schema:t,getComponent:r,errSelectors:n,name:o}=this.props;const a=r("Input"),i=r("Row"),s=r("Col"),u=r("authError"),f=r("Markdown",!0),h=r("JumpToPath",!0),d=(t.get("scheme")||"").toLowerCase();let m=this.getValue(),g=l()(e=n.allErrors()).call(e,(e=>e.get("authId")===o));if("basic"===d){var v;let e=m?m.get("username"):null;return p.createElement("div",null,p.createElement("h4",null,p.createElement("code",null,o||t.get("name")),"  (http, Basic)",p.createElement(h,{path:["securityDefinitions",o]})),e&&p.createElement("h6",null,"Authorized"),p.createElement(i,null,p.createElement(f,{source:t.get("description")})),p.createElement(i,null,p.createElement("label",null,"Username:"),e?p.createElement("code",null," ",e," "):p.createElement(s,null,p.createElement(a,{type:"text",required:"required",name:"username","aria-label":"auth-basic-username",onChange:this.onChange,autoFocus:!0}))),p.createElement(i,null,p.createElement("label",null,"Password:"),e?p.createElement("code",null," ****** "):p.createElement(s,null,p.createElement(a,{autoComplete:"new-password",name:"password",type:"password","aria-label":"auth-basic-password",onChange:this.onChange}))),c()(v=g.valueSeq()).call(v,((e,t)=>p.createElement(u,{error:e,key:t}))))}var y;return"bearer"===d?p.createElement("div",null,p.createElement("h4",null,p.createElement("code",null,o||t.get("name")),"  (http, Bearer)",p.createElement(h,{path:["securityDefinitions",o]})),m&&p.createElement("h6",null,"Authorized"),p.createElement(i,null,p.createElement(f,{source:t.get("description")})),p.createElement(i,null,p.createElement("label",null,"Value:"),m?p.createElement("code",null," ****** "):p.createElement(s,null,p.createElement(a,{type:"text","aria-label":"auth-bearer-value",onChange:this.onChange,autoFocus:!0}))),c()(y=g.valueSeq()).call(y,((e,t)=>p.createElement(u,{error:e,key:t})))):p.createElement("div",null,p.createElement("em",null,p.createElement("b",null,o)," HTTP authentication: unsupported scheme ",`'${d}'`))}}},76467:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(33427),o=r(42458),a=r(15757),i=r(56617),s=r(9928),l=r(45327),u=r(86775),c=r(96796);const p={Callbacks:n.default,HttpAuth:u.default,RequestBody:o.default,Servers:i.default,ServersContainer:s.default,RequestBodyEditor:l.default,OperationServers:c.default,operationLink:a.default}},15757:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(35627),o=r.n(n),a=r(97606),i=r.n(a),s=r(67294);r(23930);class l extends s.Component{render(){const{link:e,name:t,getComponent:r}=this.props,n=r("Markdown",!0);let a=e.get("operationId")||e.get("operationRef"),l=e.get("parameters")&&e.get("parameters").toJS(),u=e.get("description");return s.createElement("div",{className:"operation-link"},s.createElement("div",{className:"description"},s.createElement("b",null,s.createElement("code",null,t)),u?s.createElement(n,{source:u}):null),s.createElement("pre",null,"Operation `",a,"`",s.createElement("br",null),s.createElement("br",null),"Parameters ",function(e,t){var r;if("string"!=typeof t)return"";return i()(r=t.split("\n")).call(r,((t,r)=>r>0?Array(e+1).join(" ")+t:t)).join("\n")}(0,o()(l,null,2))||"{}",s.createElement("br",null)))}}const u=l},96796:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);r(23930);class i extends a.Component{constructor(){super(...arguments),o()(this,"setSelectedServer",(e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setSelectedServer(e,`${t}:${r}`)})),o()(this,"setServerVariableValue",(e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...e,namespace:`${t}:${r}`})})),o()(this,"getSelectedServer",(()=>{const{path:e,method:t}=this.props;return this.props.getSelectedServer(`${e}:${t}`)})),o()(this,"getServerVariable",((e,t)=>{const{path:r,method:n}=this.props;return this.props.getServerVariable({namespace:`${r}:${n}`,server:e},t)})),o()(this,"getEffectiveServerValue",(e=>{const{path:t,method:r}=this.props;return this.props.getEffectiveServerValue({server:e,namespace:`${t}:${r}`})}))}render(){const{operationServers:e,pathServers:t,getComponent:r}=this.props;if(!e&&!t)return null;const n=r("Servers"),o=e||t,i=e?"operation":"path";return a.createElement("div",{className:"opblock-section operation-servers"},a.createElement("div",{className:"opblock-section-header"},a.createElement("div",{className:"tab-header"},a.createElement("h4",{className:"opblock-title"},"Servers"))),a.createElement("div",{className:"opblock-description-wrapper"},a.createElement("h4",{className:"message"},"These ",i,"-level options override the global server options."),a.createElement(n,{servers:o,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}},45327:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(61125),o=r.n(n),a=r(67294),i=r(94184),s=r.n(i),l=r(90242);const u=Function.prototype;class c extends a.PureComponent{constructor(e,t){super(e,t),o()(this,"applyDefaultValue",(e=>{const{onChange:t,defaultValue:r}=e||this.props;return this.setState({value:r}),t(r)})),o()(this,"onChange",(e=>{this.props.onChange((0,l.Pz)(e))})),o()(this,"onDomChange",(e=>{const t=e.target.value;this.setState({value:t},(()=>this.onChange(t)))})),this.state={value:(0,l.Pz)(e.value)||e.defaultValue},e.onChange(e.value)}UNSAFE_componentWillReceiveProps(e){this.props.value!==e.value&&e.value!==this.state.value&&this.setState({value:(0,l.Pz)(e.value)}),!e.value&&e.defaultValue&&this.state.value&&this.applyDefaultValue(e)}render(){let{getComponent:e,errors:t}=this.props,{value:r}=this.state,n=t.size>0;const o=e("TextArea");return a.createElement("div",{className:"body-param"},a.createElement(o,{className:s()("body-param__text",{invalid:n}),title:t.size?t.join(", "):"",value:r,onChange:this.onDomChange}))}}o()(c,"defaultProps",{onChange:u,userHasEditedBody:!1})},42458:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getDefaultRequestBodyValue:()=>m,default:()=>g});var n=r(97606),o=r.n(n),a=r(11882),i=r.n(a),s=r(58118),l=r.n(s),u=r(58309),c=r.n(u),p=r(67294),f=(r(23930),r(43393)),h=r(90242),d=r(2518);const m=(e,t,r)=>{const n=e.getIn(["content",t]),o=n.get("schema").toJS(),a=void 0!==n.get("examples"),i=n.get("example"),s=a?n.getIn(["examples",r,"value"]):i,l=(0,h.xi)(o,t,{includeWriteOnly:!0},s);return(0,h.Pz)(l)},g=e=>{let{userHasEditedBody:t,requestBody:r,requestBodyValue:n,requestBodyInclusionSetting:a,requestBodyErrors:s,getComponent:u,getConfigs:g,specSelectors:v,fn:y,contentType:b,isExecute:w,specPath:E,onChange:x,onChangeIncludeEmpty:_,activeExamplesKey:S,updateActiveExamplesKey:A,setRetainRequestBodyValueFlag:k}=e;const C=e=>{x(e.target.files[0])},O=e=>{let t={key:e,shouldDispatchInit:!1,defaultValue:!0};return"no value"===a.get(e,"no value")&&(t.shouldDispatchInit=!0),t},j=u("Markdown",!0),I=u("modelExample"),N=u("RequestBodyEditor"),T=u("highlightCode"),P=u("ExamplesSelectValueRetainer"),R=u("Example"),M=u("ParameterIncludeEmpty"),{showCommonExtensions:D}=g(),L=r&&r.get("description")||null,B=r&&r.get("content")||new f.OrderedMap;b=b||B.keySeq().first()||"";const F=B.get(b,(0,f.OrderedMap)()),z=F.get("schema",(0,f.OrderedMap)()),U=F.get("examples",null),q=null==U?void 0:o()(U).call(U,((e,t)=>{var n;const o=null===(n=e)||void 0===n?void 0:n.get("value",null);return o&&(e=e.set("value",m(r,b,t),o)),e}));if(s=f.List.isList(s)?s:(0,f.List)(),!F.size)return null;const V="object"===F.getIn(["schema","type"]),$="binary"===F.getIn(["schema","format"]),W="base64"===F.getIn(["schema","format"]);if("application/octet-stream"===b||0===i()(b).call(b,"image/")||0===i()(b).call(b,"audio/")||0===i()(b).call(b,"video/")||$||W){const e=u("Input");return w?p.createElement(e,{type:"file",onChange:C}):p.createElement("i",null,"Example values are not available for ",p.createElement("code",null,b)," media types.")}if(V&&("application/x-www-form-urlencoded"===b||0===i()(b).call(b,"multipart/"))&&z.get("properties",(0,f.OrderedMap)()).size>0){var H;const e=u("JsonSchemaForm"),t=u("ParameterExt"),r=z.get("properties",(0,f.OrderedMap)());return n=f.Map.isMap(n)?n:(0,f.OrderedMap)(),p.createElement("div",{className:"table-container"},L&&p.createElement(j,{source:L}),p.createElement("table",null,p.createElement("tbody",null,f.Map.isMap(r)&&o()(H=r.entrySeq()).call(H,(r=>{var i,d;let[m,g]=r;if(g.get("readOnly"))return;let v=D?(0,h.po)(g):null;const b=l()(i=z.get("required",(0,f.List)())).call(i,m),E=g.get("type"),S=g.get("format"),A=g.get("description"),k=n.getIn([m,"value"]),C=n.getIn([m,"errors"])||s,I=a.get(m)||!1,N=g.has("default")||g.has("example")||g.hasIn(["items","example"])||g.hasIn(["items","default"]),T=g.has("enum")&&(1===g.get("enum").size||b),P=N||T;let R="";"array"!==E||P||(R=[]),("object"===E||P)&&(R=(0,h.xi)(g,!1,{includeWriteOnly:!0})),"string"!=typeof R&&"object"===E&&(R=(0,h.Pz)(R)),"string"==typeof R&&"array"===E&&(R=JSON.parse(R));const L="string"===E&&("binary"===S||"base64"===S);return p.createElement("tr",{key:m,className:"parameters","data-property-name":m},p.createElement("td",{className:"parameters-col_name"},p.createElement("div",{className:b?"parameter__name required":"parameter__name"},m,b?p.createElement("span",null," *"):null),p.createElement("div",{className:"parameter__type"},E,S&&p.createElement("span",{className:"prop-format"},"($",S,")"),D&&v.size?o()(d=v.entrySeq()).call(d,(e=>{let[r,n]=e;return p.createElement(t,{key:`${r}-${n}`,xKey:r,xVal:n})})):null),p.createElement("div",{className:"parameter__deprecated"},g.get("deprecated")?"deprecated":null)),p.createElement("td",{className:"parameters-col_description"},p.createElement(j,{source:A}),w?p.createElement("div",null,p.createElement(e,{fn:y,dispatchInitialValue:!L,schema:g,description:m,getComponent:u,value:void 0===k?R:k,required:b,errors:C,onChange:e=>{x(e,[m])}}),b?null:p.createElement(M,{onChange:e=>_(m,e),isIncluded:I,isIncludedOptions:O(m),isDisabled:c()(k)?0!==k.length:!(0,h.O2)(k)})):null))})))))}const J=m(r,b,S);let K=null;return(0,d.O)(J)&&(K="json"),p.createElement("div",null,L&&p.createElement(j,{source:L}),q?p.createElement(P,{userHasEditedBody:t,examples:q,currentKey:S,currentUserInputValue:n,onSelect:e=>{A(e)},updateValue:x,defaultToFirstExample:!0,getComponent:u,setRetainRequestBodyValueFlag:k}):null,w?p.createElement("div",null,p.createElement(N,{value:n,errors:s,defaultValue:J,onChange:x,getComponent:u})):p.createElement(I,{getComponent:u,getConfigs:g,specSelectors:v,expandDepth:1,isExecute:w,schema:F.get("schema"),specPath:E.push("content",b),example:p.createElement(T,{className:"body-param__example",getConfigs:g,language:K,value:(0,h.Pz)(n)||J}),includeWriteOnly:!0}),q?p.createElement(R,{example:q.get(S),getComponent:u,getConfigs:g}):null)}},9928:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);class o extends n.Component{render(){const{specSelectors:e,oas3Selectors:t,oas3Actions:r,getComponent:o}=this.props,a=e.servers(),i=o("Servers");return a&&a.size?n.createElement("div",null,n.createElement("span",{className:"servers-title"},"Servers"),n.createElement(i,{servers:a,currentServer:t.selectedServer(),setSelectedServer:r.setSelectedServer,setServerVariableValue:r.setServerVariableValue,getServerVariable:t.serverVariableValue,getEffectiveServerValue:t.serverEffectiveValue})):null}}},56617:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(61125),o=r.n(n),a=r(51679),i=r.n(a),s=r(97606),l=r.n(s),u=r(67294),c=r(43393);r(23930);class p extends u.Component{constructor(){super(...arguments),o()(this,"onServerChange",(e=>{this.setServer(e.target.value)})),o()(this,"onServerVariableValueChange",(e=>{let{setServerVariableValue:t,currentServer:r}=this.props,n=e.target.getAttribute("data-variable"),o=e.target.value;"function"==typeof t&&t({server:r,key:n,val:o})})),o()(this,"setServer",(e=>{let{setSelectedServer:t}=this.props;t(e)}))}componentDidMount(){var e;let{servers:t,currentServer:r}=this.props;r||this.setServer(null===(e=t.first())||void 0===e?void 0:e.get("url"))}UNSAFE_componentWillReceiveProps(e){let{servers:t,setServerVariableValue:r,getServerVariable:n}=e;if(this.props.currentServer!==e.currentServer||this.props.servers!==e.servers){var o;let a=i()(t).call(t,(t=>t.get("url")===e.currentServer)),s=i()(o=this.props.servers).call(o,(e=>e.get("url")===this.props.currentServer))||(0,c.OrderedMap)();if(!a)return this.setServer(t.first().get("url"));let u=s.get("variables")||(0,c.OrderedMap)(),p=(i()(u).call(u,(e=>e.get("default")))||(0,c.OrderedMap)()).get("default"),f=a.get("variables")||(0,c.OrderedMap)(),h=(i()(f).call(f,(e=>e.get("default")))||(0,c.OrderedMap)()).get("default");l()(f).call(f,((t,o)=>{n(e.currentServer,o)&&p===h||r({server:e.currentServer,key:o,val:t.get("default")||""})}))}}render(){var e,t;let{servers:r,currentServer:n,getServerVariable:o,getEffectiveServerValue:a}=this.props,s=(i()(r).call(r,(e=>e.get("url")===n))||(0,c.OrderedMap)()).get("variables")||(0,c.OrderedMap)(),p=0!==s.size;return u.createElement("div",{className:"servers"},u.createElement("label",{htmlFor:"servers"},u.createElement("select",{onChange:this.onServerChange,value:n},l()(e=r.valueSeq()).call(e,(e=>u.createElement("option",{value:e.get("url"),key:e.get("url")},e.get("url"),e.get("description")&&` - ${e.get("description")}`))).toArray())),p?u.createElement("div",null,u.createElement("div",{className:"computed-url"},"Computed URL:",u.createElement("code",null,a(n))),u.createElement("h4",null,"Server variables"),u.createElement("table",null,u.createElement("tbody",null,l()(t=s.entrySeq()).call(t,(e=>{var t;let[r,a]=e;return u.createElement("tr",{key:r},u.createElement("td",null,r),u.createElement("td",null,a.get("enum")?u.createElement("select",{"data-variable":r,onChange:this.onServerVariableValueChange},l()(t=a.get("enum")).call(t,(e=>u.createElement("option",{selected:e===o(n,r),key:e,value:e},e)))):u.createElement("input",{type:"text",value:o(n,r)||"",onChange:this.onServerVariableValueChange,"data-variable":r})))}))))):null)}}},7779:(e,t,r)=>{"use strict";r.r(t),r.d(t,{isOAS3:()=>l,isSwagger2:()=>u,OAS3ComponentWrapFactory:()=>c});var n=r(23101),o=r.n(n),a=r(27043),i=r.n(a),s=r(67294);function l(e){const t=e.get("openapi");return"string"==typeof t&&(i()(t).call(t,"3.0.")&&t.length>4)}function u(e){const t=e.get("swagger");return"string"==typeof t&&i()(t).call(t,"2.0")}function c(e){return(t,r)=>n=>{if(r&&r.specSelectors&&r.specSelectors.specJson){return l(r.specSelectors.specJson())?s.createElement(e,o()({},n,r,{Ori:t})):s.createElement(t,n)}return console.warn("OAS3 wrapper: couldn't get spec"),null}}},97451:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(92044),o=r(73723),a=r(91741),i=r(76467),s=r(37761),l=r(67002),u=r(5065),c=r(62109);function p(){return{components:i.default,wrapComponents:s.default,statePlugins:{spec:{wrapSelectors:n,selectors:a},auth:{wrapSelectors:o},oas3:{actions:l,reducers:c.default,selectors:u}}}}},62109:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(8712),o=r.n(n),a=r(86),i=r.n(a),s=r(24282),l=r.n(s),u=r(43393),c=r(67002);const p={[c.UPDATE_SELECTED_SERVER]:(e,t)=>{let{payload:{selectedServerUrl:r,namespace:n}}=t;const o=n?[n,"selectedServer"]:["selectedServer"];return e.setIn(o,r)},[c.UPDATE_REQUEST_BODY_VALUE]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[a,s]=n;if(!u.Map.isMap(r))return e.setIn(["requestData",a,s,"bodyValue"],r);let l,c=e.getIn(["requestData",a,s,"bodyValue"])||(0,u.Map)();u.Map.isMap(c)||(c=(0,u.Map)());const[...p]=o()(r).call(r);return i()(p).call(p,(e=>{let t=r.getIn([e]);c.has(e)&&u.Map.isMap(t)||(l=c.setIn([e,"value"],t))})),e.setIn(["requestData",a,s,"bodyValue"],l)},[c.UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[o,a]=n;return e.setIn(["requestData",o,a,"retainBodyValue"],r)},[c.UPDATE_REQUEST_BODY_INCLUSION]:(e,t)=>{let{payload:{value:r,pathMethod:n,name:o}}=t,[a,i]=n;return e.setIn(["requestData",a,i,"bodyInclusion",o],r)},[c.UPDATE_ACTIVE_EXAMPLES_MEMBER]:(e,t)=>{let{payload:{name:r,pathMethod:n,contextType:o,contextName:a}}=t,[i,s]=n;return e.setIn(["examples",i,s,o,a,"activeExample"],r)},[c.UPDATE_REQUEST_CONTENT_TYPE]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[o,a]=n;return e.setIn(["requestData",o,a,"requestContentType"],r)},[c.UPDATE_RESPONSE_CONTENT_TYPE]:(e,t)=>{let{payload:{value:r,path:n,method:o}}=t;return e.setIn(["requestData",n,o,"responseContentType"],r)},[c.UPDATE_SERVER_VARIABLE_VALUE]:(e,t)=>{let{payload:{server:r,namespace:n,key:o,val:a}}=t;const i=n?[n,"serverVariableValues",r,o]:["serverVariableValues",r,o];return e.setIn(i,a)},[c.SET_REQUEST_BODY_VALIDATE_ERROR]:(e,t)=>{let{payload:{path:r,method:n,validationErrors:o}}=t,a=[];if(a.push("Required field is not provided"),o.missingBodyValue)return e.setIn(["requestData",r,n,"errors"],(0,u.fromJS)(a));if(o.missingRequiredKeys&&o.missingRequiredKeys.length>0){const{missingRequiredKeys:t}=o;return e.updateIn(["requestData",r,n,"bodyValue"],(0,u.fromJS)({}),(e=>l()(t).call(t,((e,t)=>e.setIn([t,"errors"],(0,u.fromJS)(a))),e)))}return console.warn("unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR"),e},[c.CLEAR_REQUEST_BODY_VALIDATE_ERROR]:(e,t)=>{let{payload:{path:r,method:n}}=t;const a=e.getIn(["requestData",r,n,"bodyValue"]);if(!u.Map.isMap(a))return e.setIn(["requestData",r,n,"errors"],(0,u.fromJS)([]));const[...i]=o()(a).call(a);return i?e.updateIn(["requestData",r,n,"bodyValue"],(0,u.fromJS)({}),(e=>l()(i).call(i,((e,t)=>e.setIn([t,"errors"],(0,u.fromJS)([]))),e))):e},[c.CLEAR_REQUEST_BODY_VALUE]:(e,t)=>{let{payload:{pathMethod:r}}=t,[n,o]=r;const a=e.getIn(["requestData",n,o,"bodyValue"]);return a?u.Map.isMap(a)?e.setIn(["requestData",n,o,"bodyValue"],(0,u.Map)()):e.setIn(["requestData",n,o,"bodyValue"],""):e}}},5065:(e,t,r)=>{"use strict";r.r(t),r.d(t,{selectedServer:()=>g,requestBodyValue:()=>v,shouldRetainRequestBodyValue:()=>y,selectDefaultRequestBodyValue:()=>b,hasUserEditedBody:()=>w,requestBodyInclusionSetting:()=>E,requestBodyErrors:()=>x,activeExamplesMember:()=>_,requestContentType:()=>S,responseContentType:()=>A,serverVariableValue:()=>k,serverVariables:()=>C,serverEffectiveValue:()=>O,validateBeforeExecute:()=>j,validateShallowRequired:()=>N});var n=r(97606),o=r.n(n),a=r(86),i=r.n(a),s=r(28222),l=r.n(s),u=r(11882),c=r.n(u),p=r(43393),f=r(7779),h=r(42458),d=r(90242);function m(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n{const n=t.getSystem().specSelectors.specJson();return(0,f.isOAS3)(n)?e(...r):null}}}const g=m(((e,t)=>{const r=t?[t,"selectedServer"]:["selectedServer"];return e.getIn(r)||""})),v=m(((e,t,r)=>e.getIn(["requestData",t,r,"bodyValue"])||null)),y=m(((e,t,r)=>e.getIn(["requestData",t,r,"retainBodyValue"])||!1)),b=(e,t,r)=>e=>{const{oas3Selectors:n,specSelectors:o}=e.getSystem(),a=o.specJson();if((0,f.isOAS3)(a)){const e=n.requestContentType(t,r);if(e)return(0,h.getDefaultRequestBodyValue)(o.specResolvedSubtree(["paths",t,r,"requestBody"]),e,n.activeExamplesMember(t,r,"requestBody","requestBody"))}return null},w=(e,t,r)=>e=>{const{oas3Selectors:n,specSelectors:o}=e.getSystem(),a=o.specJson();if((0,f.isOAS3)(a)){let e=!1;const a=n.requestContentType(t,r);let i=n.requestBodyValue(t,r);if(p.Map.isMap(i)&&(i=(0,d.Pz)(i.mapEntries((e=>p.Map.isMap(e[1])?[e[0],e[1].get("value")]:e)).toJS())),p.List.isList(i)&&(i=(0,d.Pz)(i)),a){const s=(0,h.getDefaultRequestBodyValue)(o.specResolvedSubtree(["paths",t,r,"requestBody"]),a,n.activeExamplesMember(t,r,"requestBody","requestBody"));e=!!i&&i!==s}return e}return null},E=m(((e,t,r)=>e.getIn(["requestData",t,r,"bodyInclusion"])||(0,p.Map)())),x=m(((e,t,r)=>e.getIn(["requestData",t,r,"errors"])||null)),_=m(((e,t,r,n,o)=>e.getIn(["examples",t,r,n,o,"activeExample"])||null)),S=m(((e,t,r)=>e.getIn(["requestData",t,r,"requestContentType"])||null)),A=m(((e,t,r)=>e.getIn(["requestData",t,r,"responseContentType"])||null)),k=m(((e,t,r)=>{let n;if("string"!=typeof t){const{server:e,namespace:o}=t;n=o?[o,"serverVariableValues",e,r]:["serverVariableValues",e,r]}else{n=["serverVariableValues",t,r]}return e.getIn(n)||null})),C=m(((e,t)=>{let r;if("string"!=typeof t){const{server:e,namespace:n}=t;r=n?[n,"serverVariableValues",e]:["serverVariableValues",e]}else{r=["serverVariableValues",t]}return e.getIn(r)||(0,p.OrderedMap)()})),O=m(((e,t)=>{var r,n;if("string"!=typeof t){const{server:o,namespace:a}=t;n=o,r=a?e.getIn([a,"serverVariableValues",n]):e.getIn(["serverVariableValues",n])}else n=t,r=e.getIn(["serverVariableValues",n]);r=r||(0,p.OrderedMap)();let a=n;return o()(r).call(r,((e,t)=>{a=a.replace(new RegExp(`{${t}}`,"g"),e)})),a})),j=(I=(e,t)=>((e,t)=>(t=t||[],!!e.getIn(["requestData",...t,"bodyValue"])))(e,t),function(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=e.getSystem().specSelectors.specJson();let n=[...t][1]||[];return!r.getIn(["paths",...n,"requestBody","required"])||I(...t)}});var I;const N=(e,t)=>{var r;let{oas3RequiredRequestBodyContentType:n,oas3RequestContentType:o,oas3RequestBodyValue:a}=t,s=[];if(!p.Map.isMap(a))return s;let u=[];return i()(r=l()(n.requestContentType)).call(r,(e=>{if(e===o){let t=n.requestContentType[e];i()(t).call(t,(e=>{c()(u).call(u,e)<0&&u.push(e)}))}})),i()(u).call(u,(e=>{a.getIn([e,"value"])||s.push(e)})),s}},91741:(e,t,r)=>{"use strict";r.r(t),r.d(t,{servers:()=>u,isSwagger2:()=>p});var n=r(20573),o=r(43393),a=r(7779);const i=e=>e||(0,o.Map)(),s=(0,n.P1)(i,(e=>e.get("json",(0,o.Map)()))),l=(0,n.P1)(i,(e=>e.get("resolved",(0,o.Map)()))),u=(c=(0,n.P1)((e=>{let t=l(e);return t.count()<1&&(t=s(e)),t}),(e=>e.getIn(["servers"])||(0,o.Map)())),()=>function(e){const t=e.getSystem().specSelectors.specJson();if((0,a.isOAS3)(t)){for(var r=arguments.length,n=new Array(r>1?r-1:0),o=1;o()=>{const e=t.getSystem().specSelectors.specJson();return(0,a.isSwagger2)(e)}},92044:(e,t,r)=>{"use strict";r.r(t),r.d(t,{definitions:()=>h,hasHost:()=>d,securityDefinitions:()=>m,host:()=>g,basePath:()=>v,consumes:()=>y,produces:()=>b,schemes:()=>w,servers:()=>E,isOAS3:()=>x,isSwagger2:()=>_});var n=r(20573),o=r(33881),a=r(43393),i=r(7779);function s(e){return(t,r)=>function(){const n=r.getSystem().specSelectors.specJson();return(0,i.isOAS3)(n)?e(...arguments):t(...arguments)}}const l=e=>e||(0,a.Map)(),u=s((0,n.P1)((()=>null))),c=(0,n.P1)(l,(e=>e.get("json",(0,a.Map)()))),p=(0,n.P1)(l,(e=>e.get("resolved",(0,a.Map)()))),f=e=>{let t=p(e);return t.count()<1&&(t=c(e)),t},h=s((0,n.P1)(f,(e=>{const t=e.getIn(["components","schemas"]);return a.Map.isMap(t)?t:(0,a.Map)()}))),d=s((e=>f(e).hasIn(["servers",0]))),m=s((0,n.P1)(o.specJsonWithResolvedSubtrees,(e=>e.getIn(["components","securitySchemes"])||null))),g=u,v=u,y=u,b=u,w=u,E=s((0,n.P1)(f,(e=>e.getIn(["servers"])||(0,a.Map)()))),x=(e,t)=>()=>{const e=t.getSystem().specSelectors.specJson();return(0,i.isOAS3)(a.Map.isMap(e)?e:(0,a.Map)())},_=(e,t)=>()=>{const e=t.getSystem().specSelectors.specJson();return(0,i.isSwagger2)(a.Map.isMap(e)?e:(0,a.Map)())}},70356:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{let{Ori:t,...r}=e;const{schema:o,getComponent:a,errSelectors:i,authorized:s,onAuthChange:l,name:u}=r,c=a("HttpAuth");return"http"===o.get("type")?n.createElement(c,{key:u,schema:o,name:u,errSelectors:i,authorized:s,getComponent:a,onChange:l}):n.createElement(t,r)}))},37761:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(22460),o=r(70356),a=r(69487),i=r(50058),s=r(53499),l=r(90287);const u={Markdown:n.default,AuthItem:o.default,JsonSchema_string:l.default,VersionStamp:a.default,model:s.default,onlineValidatorBadge:i.default}},90287:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{let{Ori:t,...r}=e;const{schema:o,getComponent:a,errors:i,onChange:s}=r,l=o&&o.get?o.get("format"):null,u=o&&o.get?o.get("type"):null,c=a("Input");return u&&"string"===u&&l&&("binary"===l||"base64"===l)?n.createElement(c,{type:"file",className:i.length?"invalid":"",title:i.length?i:"",onChange:e=>{s(e.target.files[0])},disabled:t.isDisabled}):n.createElement(t,r)}))},22460:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Markdown:()=>f,default:()=>h});var n=r(81607),o=r.n(n),a=r(67294),i=r(94184),s=r.n(i),l=r(89927),u=r(7779),c=r(86019);const p=new l._("commonmark");p.block.ruler.enable(["table"]),p.set({linkTarget:"_blank"});const f=e=>{let{source:t,className:r="",getConfigs:n}=e;if("string"!=typeof t)return null;if(t){const{useUnsafeMarkdown:e}=n(),i=p.render(t),l=(0,c.s)(i,{useUnsafeMarkdown:e});let u;return"string"==typeof l&&(u=o()(l).call(l)),a.createElement("div",{dangerouslySetInnerHTML:{__html:u},className:s()(r,"renderedMarkdown")})}return null};f.defaultProps={getConfigs:()=>({useUnsafeMarkdown:!1})};const h=(0,u.OAS3ComponentWrapFactory)(f)},53499:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(23101),o=r.n(n),a=r(67294),i=r(7779),s=r(53795);class l extends a.Component{render(){let{getConfigs:e,schema:t}=this.props,r=["model-box"],n=null;return!0===t.get("deprecated")&&(r.push("deprecated"),n=a.createElement("span",{className:"model-deprecated-warning"},"Deprecated:")),a.createElement("div",{className:r.join(" ")},n,a.createElement(s.Z,o()({},this.props,{getConfigs:e,depth:1,expandDepth:this.props.expandDepth||0})))}}const u=(0,i.OAS3ComponentWrapFactory)(l)},50058:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(7779),o=r(5623);const a=(0,n.OAS3ComponentWrapFactory)(o.Z)},69487:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{const{Ori:t}=e;return n.createElement("span",null,n.createElement(t,e),n.createElement("small",{className:"version-stamp"},n.createElement("pre",{className:"version"},"OAS3")))}))},28560:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(87198),o=r.n(n);let a=!1;function i(){return{statePlugins:{spec:{wrapActions:{updateSpec:e=>function(){return a=!0,e(...arguments)},updateJsonSpec:(e,t)=>function(){const r=t.getConfigs().onComplete;return a&&"function"==typeof r&&(o()(r,0),a=!1),e(...arguments)}}}}}}},92135:(e,t,r)=>{"use strict";r.r(t),r.d(t,{requestSnippetGenerator_curl_powershell:()=>A,requestSnippetGenerator_curl_bash:()=>k,requestSnippetGenerator_curl_cmd:()=>C});var n=r(11882),o=r.n(n),a=r(81607),i=r.n(a),s=r(35627),l=r.n(s),u=r(97606),c=r.n(u),p=r(12196),f=r.n(p),h=r(74386),d=r.n(h),m=r(58118),g=r.n(m),v=r(27504),y=r(43393);const b=e=>{var t;const r="_**[]";return o()(e).call(e,r)<0?e:i()(t=e.split(r)[0]).call(t)},w=e=>"-d "===e||/^[_\/-]/g.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'",E=e=>"-d "===(e=e.replace(/\^/g,"^^").replace(/\\"/g,'\\\\"').replace(/"/g,'""').replace(/\n/g,"^\n"))?e.replace(/-d /g,"-d ^\n"):/^[_\/-]/g.test(e)?e:'"'+e+'"',x=e=>"-d "===e?e:/\n/.test(e)?'@"\n'+e.replace(/"/g,'\\"').replace(/`/g,"``").replace(/\$/,"`$")+'\n"@':/^[_\/-]/g.test(e)?e:"'"+e.replace(/"/g,'""').replace(/'/g,"''")+"'";function _(e){let t=[];for(let[r,n]of e.get("body").entrySeq()){let e=b(r);n instanceof v.Z.File?t.push(` "${e}": {\n "name": "${n.name}"${n.type?`,\n "type": "${n.type}"`:""}\n }`):t.push(` "${e}": ${l()(n,null,2).replace(/(\r\n|\r|\n)/g,"\n ")}`)}return`{\n${t.join(",\n")}\n}`}const S=function(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=!1,a="";const i=function(){for(var e=arguments.length,r=new Array(e),n=0;na+=` ${r}`,p=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return a+=f()(e=" ").call(e,t)};let h=e.get("headers");if(a+="curl"+n,e.has("curlOptions")&&i(...e.get("curlOptions")),i("-X",e.get("method")),u(),p(),s(`${e.get("url")}`),h&&h.size)for(let t of d()(m=e.get("headers")).call(m)){var m;u(),p();let[e,r]=t;s("-H",`${e}: ${r}`),o=o||/^content-type$/i.test(e)&&/^multipart\/form-data$/i.test(r)}const w=e.get("body");var E;if(w)if(o&&g()(E=["POST","PUT","PATCH"]).call(E,e.get("method")))for(let[e,t]of w.entrySeq()){let r=b(e);u(),p(),s("-F"),t instanceof v.Z.File?i(`${r}=@${t.name}${t.type?`;type=${t.type}`:""}`):i(`${r}=${t}`)}else if(w instanceof v.Z.File)u(),p(),s(`--data-binary '@${w.name}'`);else{u(),p(),s("-d ");let t=w;y.Map.isMap(t)?s(_(e)):("string"!=typeof t&&(t=l()(t)),s(t))}else w||"POST"!==e.get("method")||(u(),p(),s("-d ''"));return a},A=e=>S(e,x,"`\n",".exe"),k=e=>S(e,w,"\\\n"),C=e=>S(e,E,"^\n")},86575:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(92135),o=r(4669),a=r(84206);const i=()=>({components:{RequestSnippets:a.default},fn:n,statePlugins:{requestSnippets:{selectors:o}}})},84206:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>w});var n=r(14418),o=r.n(n),a=r(25110),i=r.n(a),s=r(86),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294),f=r(27361),h=r.n(f),d=r(23560),m=r.n(d),g=r(74855),v=r(33424);const y={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(250, 250, 250)",paddingBottom:"0",paddingTop:"0",border:"1px solid rgb(51, 51, 51)",borderRadius:"4px 4px 0 0",boxShadow:"none",borderBottom:"none"},b={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(51, 51, 51)",boxShadow:"none",border:"1px solid rgb(51, 51, 51)",paddingBottom:"0",paddingTop:"0",borderRadius:"4px 4px 0 0",marginTop:"-5px",marginRight:"-5px",marginLeft:"-5px",zIndex:"9999",borderBottom:"none"},w=e=>{var t,r;let{request:n,requestSnippetsSelectors:a,getConfigs:s}=e;const u=m()(s)?s():null,f=!1!==h()(u,"syntaxHighlight")&&h()(u,"syntaxHighlight.activated",!0),d=(0,p.useRef)(null),[w,E]=(0,p.useState)(null===(t=a.getSnippetGenerators())||void 0===t?void 0:t.keySeq().first()),[x,_]=(0,p.useState)(null==a?void 0:a.getDefaultExpanded());(0,p.useEffect)((()=>{}),[]),(0,p.useEffect)((()=>{var e;const t=o()(e=i()(d.current.childNodes)).call(e,(e=>{var t;return!!e.nodeType&&(null===(t=e.classList)||void 0===t?void 0:t.contains("curl-command"))}));return l()(t).call(t,(e=>e.addEventListener("mousewheel",j,{passive:!1}))),()=>{l()(t).call(t,(e=>e.removeEventListener("mousewheel",j)))}}),[n]);const S=a.getSnippetGenerators(),A=S.get(w),k=A.get("fn")(n),C=()=>{_(!x)},O=e=>e===w?b:y,j=e=>{const{target:t,deltaY:r}=e,{scrollHeight:n,offsetHeight:o,scrollTop:a}=t;n>o&&(0===a&&r<0||o+a>=n&&r>0)&&e.preventDefault()},I=f?p.createElement(v.d3,{language:A.get("syntax"),className:"curl microlight",style:(0,v.C2)(h()(u,"syntaxHighlight.theme"))},k):p.createElement("textarea",{readOnly:!0,className:"curl",value:k});return p.createElement("div",{className:"request-snippets",ref:d},p.createElement("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"center",marginBottom:"15px"}},p.createElement("h4",{onClick:()=>C(),style:{cursor:"pointer"}},"Snippets"),p.createElement("button",{onClick:()=>C(),style:{border:"none",background:"none"},title:x?"Collapse operation":"Expand operation"},p.createElement("svg",{className:"arrow",width:"10",height:"10"},p.createElement("use",{href:x?"#large-arrow-down":"#large-arrow",xlinkHref:x?"#large-arrow-down":"#large-arrow"})))),x&&p.createElement("div",{className:"curl-command"},p.createElement("div",{style:{paddingLeft:"15px",paddingRight:"10px",width:"100%",display:"flex"}},c()(r=S.entrySeq()).call(r,(e=>{let[t,r]=e;return p.createElement("div",{style:O(t),className:"btn",key:t,onClick:()=>(e=>{w!==e&&E(e)})(t)},p.createElement("h4",{style:t===w?{color:"white"}:{}},r.get("title")))}))),p.createElement("div",{className:"copy-to-clipboard"},p.createElement(g.CopyToClipboard,{text:k},p.createElement("button",null))),p.createElement("div",null,I)))}},4669:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getGenerators:()=>f,getSnippetGenerators:()=>h,getActiveLanguage:()=>d,getDefaultExpanded:()=>m});var n=r(14418),o=r.n(n),a=r(58118),i=r.n(a),s=r(97606),l=r.n(s),u=r(20573),c=r(43393);const p=e=>e||(0,c.Map)(),f=(0,u.P1)(p,(e=>{const t=e.get("languages"),r=e.get("generators",(0,c.Map)());return!t||t.isEmpty()?r:o()(r).call(r,((e,r)=>i()(t).call(t,r)))})),h=e=>t=>{var r,n;let{fn:a}=t;return o()(r=l()(n=f(e)).call(n,((e,t)=>{const r=(e=>a[`requestSnippetGenerator_${e}`])(t);return"function"!=typeof r?null:e.set("fn",r)}))).call(r,(e=>e))},d=(0,u.P1)(p,(e=>e.get("activeLanguage"))),m=(0,u.P1)(p,(e=>e.get("defaultExpanded")))},36195:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ErrorBoundary:()=>i,default:()=>s});var n=r(67294),o=r(56189),a=r(29403);class i extends n.Component{static getDerivedStateFromError(e){return{hasError:!0,error:e}}constructor(){super(...arguments),this.state={hasError:!1,error:null}}componentDidCatch(e,t){this.props.fn.componentDidCatch(e,t)}render(){const{getComponent:e,targetName:t,children:r}=this.props;if(this.state.hasError){const r=e("Fallback");return n.createElement(r,{name:t})}return r}}i.defaultProps={targetName:"this component",getComponent:()=>a.default,fn:{componentDidCatch:o.componentDidCatch},children:null};const s=i},29403:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=e=>{let{name:t}=e;return n.createElement("div",{className:"fallback"},"😱 ",n.createElement("i",null,"Could not render ","t"===t?"this component":t,", see the console."))}},56189:(e,t,r)=>{"use strict";r.r(t),r.d(t,{componentDidCatch:()=>i,withErrorBoundary:()=>s});var n=r(23101),o=r.n(n),a=r(67294);const i=console.error,s=e=>t=>{const{getComponent:r,fn:n}=e(),i=r("ErrorBoundary"),s=n.getDisplayName(t);class l extends a.Component{render(){return a.createElement(i,{targetName:s,getComponent:r,fn:n},a.createElement(t,o()({},this.props,this.context)))}}var u;return l.displayName=`WithErrorBoundary(${s})`,(u=t).prototype&&u.prototype.isReactComponent&&(l.prototype.mapStateToProps=t.prototype.mapStateToProps),l}},27621:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(47475),o=r.n(n),a=r(7287),i=r.n(a),s=r(36195),l=r(29403),u=r(56189);const c=function(){let{componentList:e=[],fullOverride:t=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=>{var n;let{getSystem:a}=r;const c=t?e:["App","BaseLayout","VersionPragmaFilter","InfoContainer","ServersContainer","SchemesContainer","AuthorizeBtnContainer","FilterContainer","Operations","OperationContainer","parameters","responses","OperationServers","Models","ModelWrapper",...e],p=i()(c,o()(n=Array(c.length)).call(n,((e,t)=>{let{fn:r}=t;return r.withErrorBoundary(e)})));return{fn:{componentDidCatch:u.componentDidCatch,withErrorBoundary:(0,u.withErrorBoundary)(a)},components:{ErrorBoundary:s.default,Fallback:l.default},wrapComponents:p}}}},57050:(e,t,r)=>{"use strict";r.r(t),r.d(t,{sampleFromSchemaGeneric:()=>F,inferSchema:()=>z,createXMLExample:()=>U,sampleFromSchema:()=>q,memoizedCreateXMLExample:()=>$,memoizedSampleFromSchema:()=>W});var n=r(11882),o=r.n(n),a=r(86),i=r.n(a),s=r(58309),l=r.n(s),u=r(58118),c=r.n(u),p=r(92039),f=r.n(p),h=r(24278),d=r.n(h),m=r(51679),g=r.n(m),v=r(39022),y=r.n(v),b=r(97606),w=r.n(b),E=r(35627),x=r.n(E),_=r(53479),S=r.n(_),A=r(14419),k=r.n(A),C=r(41609),O=r.n(C),j=r(90242),I=r(60314);const N={string:e=>e.pattern?(e=>{try{return new(k())(e).gen()}catch(e){return"string"}})(e.pattern):"string",string_email:()=>"user@example.com","string_date-time":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>"3fa85f64-5717-4562-b3fc-2c963f66afa6",string_hostname:()=>"example.com",string_ipv4:()=>"198.51.100.42",string_ipv6:()=>"2001:0db8:5b96:0000:0000:426f:8e17:642a",number:()=>0,number_float:()=>0,integer:()=>0,boolean:e=>"boolean"!=typeof e.default||e.default},T=e=>{e=(0,j.mz)(e);let{type:t,format:r}=e,n=N[`${t}_${r}`]||N[t];return(0,j.Wl)(n)?n(e):"Unknown Type: "+e.type},P=e=>(0,j.XV)(e,"$$ref",(e=>"string"==typeof e&&o()(e).call(e,"#")>-1)),R=["maxProperties","minProperties"],M=["minItems","maxItems"],D=["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],L=["minLength","maxLength"],B=function(e,t){var r;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const a=r=>{void 0===t[r]&&void 0!==e[r]&&(t[r]=e[r])};var s;(i()(r=["example","default","enum","xml","type",...R,...M,...D,...L]).call(r,(e=>a(e))),void 0!==e.required&&l()(e.required))&&(void 0!==t.required&&t.required.length||(t.required=[]),i()(s=e.required).call(s,(e=>{var r;c()(r=t.required).call(r,e)||t.required.push(e)})));if(e.properties){t.properties||(t.properties={});let r=(0,j.mz)(e.properties);for(let a in r){var u;if(Object.prototype.hasOwnProperty.call(r,a))if(!r[a]||!r[a].deprecated)if(!r[a]||!r[a].readOnly||n.includeReadOnly)if(!r[a]||!r[a].writeOnly||n.includeWriteOnly)if(!t.properties[a])t.properties[a]=r[a],!e.required&&l()(e.required)&&-1!==o()(u=e.required).call(u,a)&&(t.required?t.required.push(a):t.required=[a])}}return e.items&&(t.items||(t.items={}),t.items=B(e.items,t.items,n)),t},F=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e&&(0,j.Wl)(e.toJS)&&(e=e.toJS());let a=void 0!==r||e&&void 0!==e.example||e&&void 0!==e.default;const s=!a&&e&&e.oneOf&&e.oneOf.length>0,u=!a&&e&&e.anyOf&&e.anyOf.length>0;if(!a&&(s||u)){const r=(0,j.mz)(s?e.oneOf[0]:e.anyOf[0]);if(B(r,e,t),!e.xml&&r.xml&&(e.xml=r.xml),void 0!==e.example&&void 0!==r.example)a=!0;else if(r.properties){e.properties||(e.properties={});let n=(0,j.mz)(r.properties);for(let a in n){var p;if(Object.prototype.hasOwnProperty.call(n,a))if(!n[a]||!n[a].deprecated)if(!n[a]||!n[a].readOnly||t.includeReadOnly)if(!n[a]||!n[a].writeOnly||t.includeWriteOnly)if(!e.properties[a])e.properties[a]=n[a],!r.required&&l()(r.required)&&-1!==o()(p=r.required).call(p,a)&&(e.required?e.required.push(a):e.required=[a])}}}const h={};let{xml:m,type:v,example:b,properties:E,additionalProperties:x,items:_}=e||{},{includeReadOnly:S,includeWriteOnly:A}=t;m=m||{};let k,{name:C,prefix:I,namespace:N}=m,L={};if(n&&(C=C||"notagname",k=(I?I+":":"")+C,N)){h[I?"xmlns:"+I:"xmlns"]=N}n&&(L[k]=[]);const z=t=>f()(t).call(t,(t=>Object.prototype.hasOwnProperty.call(e,t)));e&&!v&&(E||x||z(R)?v="object":_||z(M)?v="array":z(D)?(v="number",e.type="number"):a||e.enum||(v="string",e.type="string"));const U=t=>{var r,n,o,a,i;null!==(null===(r=e)||void 0===r?void 0:r.maxItems)&&void 0!==(null===(n=e)||void 0===n?void 0:n.maxItems)&&(t=d()(t).call(t,0,null===(i=e)||void 0===i?void 0:i.maxItems));if(null!==(null===(o=e)||void 0===o?void 0:o.minItems)&&void 0!==(null===(a=e)||void 0===a?void 0:a.minItems)){let r=0;for(;t.length<(null===(s=e)||void 0===s?void 0:s.minItems);){var s;t.push(t[r++%t.length])}}return t},q=(0,j.mz)(E);let V,$=0;const W=()=>e&&null!==e.maxProperties&&void 0!==e.maxProperties&&$>=e.maxProperties,H=()=>{if(!e||!e.required)return 0;let t=0;var r,o;n?i()(r=e.required).call(r,(e=>t+=void 0===L[e]?0:1)):i()(o=e.required).call(o,(e=>{var r;return t+=void 0===(null===(r=L[k])||void 0===r?void 0:g()(r).call(r,(t=>void 0!==t[e])))?0:1}));return e.required.length-t},J=t=>{var r;return!(e&&e.required&&e.required.length)||!c()(r=e.required).call(r,t)},K=t=>!e||null===e.maxProperties||void 0===e.maxProperties||!W()&&(!J(t)||e.maxProperties-$-H()>0);if(V=n?function(r){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(e&&q[r]){if(q[r].xml=q[r].xml||{},q[r].xml.attribute){const e=l()(q[r].enum)?q[r].enum[0]:void 0,t=q[r].example,n=q[r].default;return void(h[q[r].xml.name||r]=void 0!==t?t:void 0!==n?n:void 0!==e?e:T(q[r]))}q[r].xml.name=q[r].xml.name||r}else q[r]||!1===x||(q[r]={xml:{name:r}});let a=F(e&&q[r]||void 0,t,o,n);var i;K(r)&&($++,l()(a)?L[k]=y()(i=L[k]).call(i,a):L[k].push(a))}:(r,o)=>{if(K(r)){if(Object.prototype.hasOwnProperty.call(e,"discriminator")&&e.discriminator&&Object.prototype.hasOwnProperty.call(e.discriminator,"mapping")&&e.discriminator.mapping&&Object.prototype.hasOwnProperty.call(e,"$$ref")&&e.$$ref&&e.discriminator.propertyName===r){for(let t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){L[r]=t;break}}else L[r]=F(q[r],t,o,n);$++}},a){let o;if(o=P(void 0!==r?r:void 0!==b?b:e.default),!n){if("number"==typeof o&&"string"===v)return`${o}`;if("string"!=typeof o||"string"===v)return o;try{return JSON.parse(o)}catch(e){return o}}if(e||(v=l()(o)?"array":typeof o),"array"===v){if(!l()(o)){if("string"==typeof o)return o;o=[o]}const r=e?e.items:void 0;r&&(r.xml=r.xml||m||{},r.xml.name=r.xml.name||m.name);let a=w()(o).call(o,(e=>F(r,t,e,n)));return a=U(a),m.wrapped?(L[k]=a,O()(h)||L[k].push({_attr:h})):L=a,L}if("object"===v){if("string"==typeof o)return o;for(let t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e&&q[t]&&q[t].readOnly&&!S||e&&q[t]&&q[t].writeOnly&&!A||(e&&q[t]&&q[t].xml&&q[t].xml.attribute?h[q[t].xml.name||t]=o[t]:V(t,o[t])));return O()(h)||L[k].push({_attr:h}),L}return L[k]=O()(h)?o:[{_attr:h},o],L}if("object"===v){for(let e in q)Object.prototype.hasOwnProperty.call(q,e)&&(q[e]&&q[e].deprecated||q[e]&&q[e].readOnly&&!S||q[e]&&q[e].writeOnly&&!A||V(e));if(n&&h&&L[k].push({_attr:h}),W())return L;if(!0===x)n?L[k].push({additionalProp:"Anything can be here"}):L.additionalProp1={},$++;else if(x){const r=(0,j.mz)(x),o=F(r,t,void 0,n);if(n&&r.xml&&r.xml.name&&"notagname"!==r.xml.name)L[k].push(o);else{const t=null!==e.minProperties&&void 0!==e.minProperties&&$F(B(_,e,t),t,void 0,n)));else if(l()(_.oneOf)){var Y;r=w()(Y=_.oneOf).call(Y,(e=>F(B(_,e,t),t,void 0,n)))}else{if(!(!n||n&&m.wrapped))return F(_,t,void 0,n);r=[F(_,t,void 0,n)]}return r=U(r),n&&m.wrapped?(L[k]=r,O()(h)||L[k].push({_attr:h}),L):r}let Q;if(e&&l()(e.enum))Q=(0,j.AF)(e.enum)[0];else{if(!e)return;if(Q=T(e),"number"==typeof Q){let t=e.minimum;null!=t&&(e.exclusiveMinimum&&t++,Q=t);let r=e.maximum;null!=r&&(e.exclusiveMaximum&&r--,Q=r)}if("string"==typeof Q&&(null!==e.maxLength&&void 0!==e.maxLength&&(Q=d()(Q).call(Q,0,e.maxLength)),null!==e.minLength&&void 0!==e.minLength)){let t=0;for(;Q.length(e.schema&&(e=e.schema),e.properties&&(e.type="object"),e),U=(e,t,r)=>{const n=F(e,t,r,!0);if(n)return"string"==typeof n?n:S()(n,{declaration:!0,indent:"\t"})},q=(e,t,r)=>F(e,t,r,!1),V=(e,t,r)=>[e,x()(t),x()(r)],$=(0,I.Z)(U,V),W=(0,I.Z)(q,V)},8883:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(57050);function o(){return{fn:n}}},51228:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_SPEC:()=>U,UPDATE_URL:()=>q,UPDATE_JSON:()=>V,UPDATE_PARAM:()=>$,UPDATE_EMPTY_PARAM_INCLUSION:()=>W,VALIDATE_PARAMS:()=>H,SET_RESPONSE:()=>J,SET_REQUEST:()=>K,SET_MUTATED_REQUEST:()=>G,LOG_REQUEST:()=>Z,CLEAR_RESPONSE:()=>Y,CLEAR_REQUEST:()=>Q,CLEAR_VALIDATE_PARAMS:()=>X,UPDATE_OPERATION_META_VALUE:()=>ee,UPDATE_RESOLVED:()=>te,UPDATE_RESOLVED_SUBTREE:()=>re,SET_SCHEME:()=>ne,updateSpec:()=>oe,updateResolved:()=>ae,updateUrl:()=>ie,updateJsonSpec:()=>se,parseToJson:()=>le,resolveSpec:()=>ce,requestResolvedSubtree:()=>he,changeParam:()=>de,changeParamByIdentity:()=>me,updateResolvedSubtree:()=>ge,invalidateResolvedSubtreeCache:()=>ve,validateParams:()=>ye,updateEmptyParamInclusion:()=>be,clearValidateParams:()=>we,changeConsumesValue:()=>Ee,changeProducesValue:()=>xe,setResponse:()=>_e,setRequest:()=>Se,setMutatedRequest:()=>Ae,logRequest:()=>ke,executeRequest:()=>Ce,execute:()=>Oe,clearResponse:()=>je,clearRequest:()=>Ie,setScheme:()=>Ne});var n=r(58309),o=r.n(n),a=r(97606),i=r.n(a),s=r(96718),l=r.n(s),u=r(24282),c=r.n(u),p=r(2250),f=r.n(p),h=r(6226),d=r.n(h),m=r(14418),g=r.n(m),v=r(3665),y=r.n(v),b=r(11882),w=r.n(b),E=r(86),x=r.n(E),_=r(28222),S=r.n(_),A=r(76986),k=r.n(A),C=r(70586),O=r.n(C),j=r(1272),I=r(43393),N=r(84564),T=r.n(N),P=r(7710),R=r(47037),M=r.n(R),D=r(23279),L=r.n(D),B=r(36968),F=r.n(B),z=r(90242);const U="spec_update_spec",q="spec_update_url",V="spec_update_json",$="spec_update_param",W="spec_update_empty_param_inclusion",H="spec_validate_param",J="spec_set_response",K="spec_set_request",G="spec_set_mutated_request",Z="spec_log_request",Y="spec_clear_response",Q="spec_clear_request",X="spec_clear_validate_param",ee="spec_update_operation_meta_value",te="spec_update_resolved",re="spec_update_resolved_subtree",ne="set_scheme";function oe(e){const t=(r=e,M()(r)?r:"").replace(/\t/g," ");var r;if("string"==typeof e)return{type:U,payload:t}}function ae(e){return{type:te,payload:e}}function ie(e){return{type:q,payload:e}}function se(e){return{type:V,payload:e}}const le=e=>t=>{let{specActions:r,specSelectors:n,errActions:o}=t,{specStr:a}=n,i=null;try{e=e||a(),o.clear({source:"parser"}),i=j.ZP.load(e,{schema:j.A8})}catch(e){return console.error(e),o.newSpecErr({source:"parser",level:"error",message:e.reason,line:e.mark&&e.mark.line?e.mark.line+1:void 0})}return i&&"object"==typeof i?r.updateJsonSpec(i):{}};let ue=!1;const ce=(e,t)=>r=>{let{specActions:n,specSelectors:a,errActions:s,fn:{fetch:u,resolve:c,AST:p={}},getConfigs:f}=r;ue||(console.warn("specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!"),ue=!0);const{modelPropertyMacro:h,parameterMacro:d,requestInterceptor:m,responseInterceptor:g}=f();void 0===e&&(e=a.specJson()),void 0===t&&(t=a.url());let v=p.getLineNumberForPath?p.getLineNumberForPath:()=>{},y=a.specStr();return c({fetch:u,spec:e,baseDoc:t,modelPropertyMacro:h,parameterMacro:d,requestInterceptor:m,responseInterceptor:g}).then((e=>{let{spec:t,errors:r}=e;if(s.clear({type:"thrown"}),o()(r)&&r.length>0){let e=i()(r).call(r,(e=>(console.error(e),e.line=e.fullPath?v(y,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",l()(e,"message",{enumerable:!0,value:e.message}),e)));s.newThrownErrBatch(e)}return n.updateResolved(t)}))};let pe=[];const fe=L()((async()=>{const e=pe.system;if(!e)return void console.error("debResolveSubtrees: don't have a system to operate on, aborting.");const{errActions:t,errSelectors:r,fn:{resolveSubtree:n,fetch:a,AST:s={}},specSelectors:u,specActions:p}=e;if(!n)return void console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.");let h=s.getLineNumberForPath?s.getLineNumberForPath:()=>{};const m=u.specStr(),{modelPropertyMacro:v,parameterMacro:b,requestInterceptor:w,responseInterceptor:E}=e.getConfigs();try{var x=await c()(pe).call(pe,(async(e,s)=>{const{resultMap:c,specWithCurrentSubtrees:p}=await e,{errors:x,spec:_}=await n(p,s,{baseDoc:u.url(),modelPropertyMacro:v,parameterMacro:b,requestInterceptor:w,responseInterceptor:E});if(r.allErrors().size&&t.clearBy((e=>{var t;return"thrown"!==e.get("type")||"resolver"!==e.get("source")||!f()(t=e.get("fullPath")).call(t,((e,t)=>e===s[t]||void 0===s[t]))})),o()(x)&&x.length>0){let e=i()(x).call(x,(e=>(e.line=e.fullPath?h(m,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",l()(e,"message",{enumerable:!0,value:e.message}),e)));t.newThrownErrBatch(e)}var S,A;_&&u.isOAS3()&&"components"===s[0]&&"securitySchemes"===s[1]&&await d().all(i()(S=g()(A=y()(_)).call(A,(e=>"openIdConnect"===e.type))).call(S,(async e=>{const t={url:e.openIdConnectUrl,requestInterceptor:w,responseInterceptor:E};try{const r=await a(t);r instanceof Error||r.status>=400?console.error(r.statusText+" "+t.url):e.openIdConnectData=JSON.parse(r.text)}catch(e){console.error(e)}})));return F()(c,s,_),F()(p,s,_),{resultMap:c,specWithCurrentSubtrees:p}}),d().resolve({resultMap:(u.specResolvedSubtree([])||(0,I.Map)()).toJS(),specWithCurrentSubtrees:u.specJson().toJS()}));delete pe.system,pe=[]}catch(e){console.error(e)}p.updateResolvedSubtree([],x.resultMap)}),35),he=e=>t=>{var r;w()(r=i()(pe).call(pe,(e=>e.join("@@")))).call(r,e.join("@@"))>-1||(pe.push(e),pe.system=t,fe())};function de(e,t,r,n,o){return{type:$,payload:{path:e,value:n,paramName:t,paramIn:r,isXml:o}}}function me(e,t,r,n){return{type:$,payload:{path:e,param:t,value:r,isXml:n}}}const ge=(e,t)=>({type:re,payload:{path:e,value:t}}),ve=()=>({type:re,payload:{path:[],value:(0,I.Map)()}}),ye=(e,t)=>({type:H,payload:{pathMethod:e,isOAS3:t}}),be=(e,t,r,n)=>({type:W,payload:{pathMethod:e,paramName:t,paramIn:r,includeEmptyValue:n}});function we(e){return{type:X,payload:{pathMethod:e}}}function Ee(e,t){return{type:ee,payload:{path:e,value:t,key:"consumes_value"}}}function xe(e,t){return{type:ee,payload:{path:e,value:t,key:"produces_value"}}}const _e=(e,t,r)=>({payload:{path:e,method:t,res:r},type:J}),Se=(e,t,r)=>({payload:{path:e,method:t,req:r},type:K}),Ae=(e,t,r)=>({payload:{path:e,method:t,req:r},type:G}),ke=e=>({payload:e,type:Z}),Ce=e=>t=>{let{fn:r,specActions:n,specSelectors:a,getConfigs:s,oas3Selectors:l}=t,{pathName:u,method:c,operation:p}=e,{requestInterceptor:f,responseInterceptor:h}=s(),d=p.toJS();var m,v;p&&p.get("parameters")&&x()(m=g()(v=p.get("parameters")).call(v,(e=>e&&!0===e.get("allowEmptyValue")))).call(m,(t=>{if(a.parameterInclusionSettingFor([u,c],t.get("name"),t.get("in"))){e.parameters=e.parameters||{};const r=(0,z.cz)(t,e.parameters);(!r||r&&0===r.size)&&(e.parameters[t.get("name")]="")}}));if(e.contextUrl=T()(a.url()).toString(),d&&d.operationId?e.operationId=d.operationId:d&&u&&c&&(e.operationId=r.opId(d,u,c)),a.isOAS3()){const t=`${u}:${c}`;e.server=l.selectedServer(t)||l.selectedServer();const r=l.serverVariables({server:e.server,namespace:t}).toJS(),n=l.serverVariables({server:e.server}).toJS();e.serverVariables=S()(r).length?r:n,e.requestContentType=l.requestContentType(u,c),e.responseContentType=l.responseContentType(u,c)||"*/*";const a=l.requestBodyValue(u,c),s=l.requestBodyInclusionSetting(u,c);var y;if(a&&a.toJS)e.requestBody=g()(y=i()(a).call(a,(e=>I.Map.isMap(e)?e.get("value"):e))).call(y,((e,t)=>(o()(e)?0!==e.length:!(0,z.O2)(e))||s.get(t))).toJS();else e.requestBody=a}let b=k()({},e);b=r.buildRequest(b),n.setRequest(e.pathName,e.method,b);e.requestInterceptor=async t=>{let r=await f.apply(void 0,[t]),o=k()({},r);return n.setMutatedRequest(e.pathName,e.method,o),r},e.responseInterceptor=h;const w=O()();return r.execute(e).then((t=>{t.duration=O()()-w,n.setResponse(e.pathName,e.method,t)})).catch((t=>{"Failed to fetch"===t.message&&(t.name="",t.message='**Failed to fetch.** \n**Possible Reasons:** \n - CORS \n - Network Failure \n - URL scheme must be "http" or "https" for CORS request.'),n.setResponse(e.pathName,e.method,{error:!0,err:(0,P.serializeError)(t)})}))},Oe=function(){let{path:e,method:t,...r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n=>{let{fn:{fetch:o},specSelectors:a,specActions:i}=n,s=a.specJsonWithResolvedSubtrees().toJS(),l=a.operationScheme(e,t),{requestContentType:u,responseContentType:c}=a.contentTypeValues([e,t]).toJS(),p=/xml/i.test(u),f=a.parameterValues([e,t],p).toJS();return i.executeRequest({...r,fetch:o,spec:s,pathName:e,method:t,parameters:f,requestContentType:u,scheme:l,responseContentType:c})}};function je(e,t){return{type:Y,payload:{path:e,method:t}}}function Ie(e,t){return{type:Q,payload:{path:e,method:t}}}function Ne(e,t,r){return{type:ne,payload:{scheme:e,path:t,method:r}}}},37038:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(20032),o=r(51228),a=r(33881),i=r(77508);function s(){return{statePlugins:{spec:{wrapActions:i,reducers:n.default,actions:o,selectors:a}}}}},20032:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var n=r(24282),o=r.n(n),a=r(97606),i=r.n(a),s=r(76986),l=r.n(s),u=r(43393),c=r(90242),p=r(27504),f=r(33881),h=r(51228);const d={[h.UPDATE_SPEC]:(e,t)=>"string"==typeof t.payload?e.set("spec",t.payload):e,[h.UPDATE_URL]:(e,t)=>e.set("url",t.payload+""),[h.UPDATE_JSON]:(e,t)=>e.set("json",(0,c.oG)(t.payload)),[h.UPDATE_RESOLVED]:(e,t)=>e.setIn(["resolved"],(0,c.oG)(t.payload)),[h.UPDATE_RESOLVED_SUBTREE]:(e,t)=>{const{value:r,path:n}=t.payload;return e.setIn(["resolvedSubtrees",...n],(0,c.oG)(r))},[h.UPDATE_PARAM]:(e,t)=>{let{payload:r}=t,{path:n,paramName:o,paramIn:a,param:i,value:s,isXml:l}=r,u=i?(0,c.V9)(i):`${a}.${o}`;const p=l?"value_xml":"value";return e.setIn(["meta","paths",...n,"parameters",u,p],s)},[h.UPDATE_EMPTY_PARAM_INCLUSION]:(e,t)=>{let{payload:r}=t,{pathMethod:n,paramName:o,paramIn:a,includeEmptyValue:i}=r;if(!o||!a)return console.warn("Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey."),e;const s=`${a}.${o}`;return e.setIn(["meta","paths",...n,"parameter_inclusions",s],i)},[h.VALIDATE_PARAMS]:(e,t)=>{let{payload:{pathMethod:r,isOAS3:n}}=t;const a=(0,f.specJsonWithResolvedSubtrees)(e).getIn(["paths",...r]),i=(0,f.parameterValues)(e,r).toJS();return e.updateIn(["meta","paths",...r,"parameters"],(0,u.fromJS)({}),(t=>{var s;return o()(s=a.get("parameters",(0,u.List)())).call(s,((t,o)=>{const a=(0,c.cz)(o,i),s=(0,f.parameterInclusionSettingFor)(e,r,o.get("name"),o.get("in")),l=(0,c.Ik)(o,a,{bypassRequiredCheck:s,isOAS3:n});return t.setIn([(0,c.V9)(o),"errors"],(0,u.fromJS)(l))}),t)}))},[h.CLEAR_VALIDATE_PARAMS]:(e,t)=>{let{payload:{pathMethod:r}}=t;return e.updateIn(["meta","paths",...r,"parameters"],(0,u.fromJS)([]),(e=>i()(e).call(e,(e=>e.set("errors",(0,u.fromJS)([]))))))},[h.SET_RESPONSE]:(e,t)=>{let r,{payload:{res:n,path:o,method:a}}=t;r=n.error?l()({error:!0,name:n.err.name,message:n.err.message,statusCode:n.err.statusCode},n.err.response):n,r.headers=r.headers||{};let i=e.setIn(["responses",o,a],(0,c.oG)(r));return p.Z.Blob&&n.data instanceof p.Z.Blob&&(i=i.setIn(["responses",o,a,"text"],n.data)),i},[h.SET_REQUEST]:(e,t)=>{let{payload:{req:r,path:n,method:o}}=t;return e.setIn(["requests",n,o],(0,c.oG)(r))},[h.SET_MUTATED_REQUEST]:(e,t)=>{let{payload:{req:r,path:n,method:o}}=t;return e.setIn(["mutatedRequests",n,o],(0,c.oG)(r))},[h.UPDATE_OPERATION_META_VALUE]:(e,t)=>{let{payload:{path:r,value:n,key:o}}=t,a=["paths",...r],i=["meta","paths",...r];return e.getIn(["json",...a])||e.getIn(["resolved",...a])||e.getIn(["resolvedSubtrees",...a])?e.setIn([...i,o],(0,u.fromJS)(n)):e},[h.CLEAR_RESPONSE]:(e,t)=>{let{payload:{path:r,method:n}}=t;return e.deleteIn(["responses",r,n])},[h.CLEAR_REQUEST]:(e,t)=>{let{payload:{path:r,method:n}}=t;return e.deleteIn(["requests",r,n])},[h.SET_SCHEME]:(e,t)=>{let{payload:{scheme:r,path:n,method:o}}=t;return n&&o?e.setIn(["scheme",n,o],r):n||o?void 0:e.setIn(["scheme","_defaultScheme"],r)}}},33881:(e,t,r)=>{"use strict";r.r(t),r.d(t,{lastError:()=>O,url:()=>j,specStr:()=>I,specSource:()=>N,specJson:()=>T,specResolved:()=>P,specResolvedSubtree:()=>R,specJsonWithResolvedSubtrees:()=>D,spec:()=>L,isOAS3:()=>B,info:()=>F,externalDocs:()=>z,version:()=>U,semver:()=>q,paths:()=>V,operations:()=>$,consumes:()=>W,produces:()=>H,security:()=>J,securityDefinitions:()=>K,findDefinition:()=>G,definitions:()=>Z,basePath:()=>Y,host:()=>Q,schemes:()=>X,operationsWithRootInherited:()=>ee,tags:()=>te,tagDetails:()=>re,operationsWithTags:()=>ne,taggedOperations:()=>oe,responses:()=>ae,requests:()=>ie,mutatedRequests:()=>se,responseFor:()=>le,requestFor:()=>ue,mutatedRequestFor:()=>ce,allowTryItOutFor:()=>pe,parameterWithMetaByIdentity:()=>fe,parameterInclusionSettingFor:()=>he,parameterWithMeta:()=>de,operationWithMeta:()=>me,getParameter:()=>ge,hasHost:()=>ve,parameterValues:()=>ye,parametersIncludeIn:()=>be,parametersIncludeType:()=>we,contentTypeValues:()=>Ee,currentProducesFor:()=>xe,producesOptionsFor:()=>_e,consumesOptionsFor:()=>Se,operationScheme:()=>Ae,canExecuteScheme:()=>ke,validationErrors:()=>Ce,validateBeforeExecute:()=>Oe,getOAS3RequiredRequestBodyContentType:()=>je,isMediaTypeSchemaPropertiesEqual:()=>Ie});var n=r(24278),o=r.n(n),a=r(86),i=r.n(a),s=r(11882),l=r.n(s),u=r(97606),c=r.n(u),p=r(14418),f=r.n(p),h=r(51679),d=r.n(h),m=r(24282),g=r.n(m),v=r(2578),y=r.n(v),b=r(92039),w=r.n(b),E=r(58309),x=r.n(E),_=r(20573),S=r(90242),A=r(43393);const k=["get","put","post","delete","options","head","patch","trace"],C=e=>e||(0,A.Map)(),O=(0,_.P1)(C,(e=>e.get("lastError"))),j=(0,_.P1)(C,(e=>e.get("url"))),I=(0,_.P1)(C,(e=>e.get("spec")||"")),N=(0,_.P1)(C,(e=>e.get("specSource")||"not-editor")),T=(0,_.P1)(C,(e=>e.get("json",(0,A.Map)()))),P=(0,_.P1)(C,(e=>e.get("resolved",(0,A.Map)()))),R=(e,t)=>e.getIn(["resolvedSubtrees",...t],void 0),M=(e,t)=>A.Map.isMap(e)&&A.Map.isMap(t)?t.get("$$ref")?t:(0,A.OrderedMap)().mergeWith(M,e,t):t,D=(0,_.P1)(C,(e=>(0,A.OrderedMap)().mergeWith(M,e.get("json"),e.get("resolvedSubtrees")))),L=e=>T(e),B=(0,_.P1)(L,(()=>!1)),F=(0,_.P1)(L,(e=>Ne(e&&e.get("info")))),z=(0,_.P1)(L,(e=>Ne(e&&e.get("externalDocs")))),U=(0,_.P1)(F,(e=>e&&e.get("version"))),q=(0,_.P1)(U,(e=>{var t;return o()(t=/v?([0-9]*)\.([0-9]*)\.([0-9]*)/i.exec(e)).call(t,1)})),V=(0,_.P1)(D,(e=>e.get("paths"))),$=(0,_.P1)(V,(e=>{if(!e||e.size<1)return(0,A.List)();let t=(0,A.List)();return e&&i()(e)?(i()(e).call(e,((e,r)=>{if(!e||!i()(e))return{};i()(e).call(e,((e,n)=>{l()(k).call(k,n)<0||(t=t.push((0,A.fromJS)({path:r,method:n,operation:e,id:`${n}-${r}`})))}))})),t):(0,A.List)()})),W=(0,_.P1)(L,(e=>(0,A.Set)(e.get("consumes")))),H=(0,_.P1)(L,(e=>(0,A.Set)(e.get("produces")))),J=(0,_.P1)(L,(e=>e.get("security",(0,A.List)()))),K=(0,_.P1)(L,(e=>e.get("securityDefinitions"))),G=(e,t)=>{const r=e.getIn(["resolvedSubtrees","definitions",t],null),n=e.getIn(["json","definitions",t],null);return r||n||null},Z=(0,_.P1)(L,(e=>{const t=e.get("definitions");return A.Map.isMap(t)?t:(0,A.Map)()})),Y=(0,_.P1)(L,(e=>e.get("basePath"))),Q=(0,_.P1)(L,(e=>e.get("host"))),X=(0,_.P1)(L,(e=>e.get("schemes",(0,A.Map)()))),ee=(0,_.P1)($,W,H,((e,t,r)=>c()(e).call(e,(e=>e.update("operation",(e=>{if(e){if(!A.Map.isMap(e))return;return e.withMutations((e=>(e.get("consumes")||e.update("consumes",(e=>(0,A.Set)(e).merge(t))),e.get("produces")||e.update("produces",(e=>(0,A.Set)(e).merge(r))),e)))}return(0,A.Map)()})))))),te=(0,_.P1)(L,(e=>{const t=e.get("tags",(0,A.List)());return A.List.isList(t)?f()(t).call(t,(e=>A.Map.isMap(e))):(0,A.List)()})),re=(e,t)=>{var r;let n=te(e)||(0,A.List)();return d()(r=f()(n).call(n,A.Map.isMap)).call(r,(e=>e.get("name")===t),(0,A.Map)())},ne=(0,_.P1)(ee,te,((e,t)=>g()(e).call(e,((e,t)=>{let r=(0,A.Set)(t.getIn(["operation","tags"]));return r.count()<1?e.update("default",(0,A.List)(),(e=>e.push(t))):g()(r).call(r,((e,r)=>e.update(r,(0,A.List)(),(e=>e.push(t)))),e)}),g()(t).call(t,((e,t)=>e.set(t.get("name"),(0,A.List)())),(0,A.OrderedMap)())))),oe=e=>t=>{var r;let{getConfigs:n}=t,{tagsSorter:o,operationsSorter:a}=n();return c()(r=ne(e).sortBy(((e,t)=>t),((e,t)=>{let r="function"==typeof o?o:S.wh.tagsSorter[o];return r?r(e,t):null}))).call(r,((t,r)=>{let n="function"==typeof a?a:S.wh.operationsSorter[a],o=n?y()(t).call(t,n):t;return(0,A.Map)({tagDetails:re(e,r),operations:o})}))},ae=(0,_.P1)(C,(e=>e.get("responses",(0,A.Map)()))),ie=(0,_.P1)(C,(e=>e.get("requests",(0,A.Map)()))),se=(0,_.P1)(C,(e=>e.get("mutatedRequests",(0,A.Map)()))),le=(e,t,r)=>ae(e).getIn([t,r],null),ue=(e,t,r)=>ie(e).getIn([t,r],null),ce=(e,t,r)=>se(e).getIn([t,r],null),pe=()=>!0,fe=(e,t,r)=>{const n=D(e).getIn(["paths",...t,"parameters"],(0,A.OrderedMap)()),o=e.getIn(["meta","paths",...t,"parameters"],(0,A.OrderedMap)()),a=c()(n).call(n,(e=>{const t=o.get(`${r.get("in")}.${r.get("name")}`),n=o.get(`${r.get("in")}.${r.get("name")}.hash-${r.hashCode()}`);return(0,A.OrderedMap)().merge(e,t,n)}));return d()(a).call(a,(e=>e.get("in")===r.get("in")&&e.get("name")===r.get("name")),(0,A.OrderedMap)())},he=(e,t,r,n)=>{const o=`${n}.${r}`;return e.getIn(["meta","paths",...t,"parameter_inclusions",o],!1)},de=(e,t,r,n)=>{const o=D(e).getIn(["paths",...t,"parameters"],(0,A.OrderedMap)()),a=d()(o).call(o,(e=>e.get("in")===n&&e.get("name")===r),(0,A.OrderedMap)());return fe(e,t,a)},me=(e,t,r)=>{var n;const o=D(e).getIn(["paths",t,r],(0,A.OrderedMap)()),a=e.getIn(["meta","paths",t,r],(0,A.OrderedMap)()),i=c()(n=o.get("parameters",(0,A.List)())).call(n,(n=>fe(e,[t,r],n)));return(0,A.OrderedMap)().merge(o,a).set("parameters",i)};function ge(e,t,r,n){t=t||[];let o=e.getIn(["meta","paths",...t,"parameters"],(0,A.fromJS)([]));return d()(o).call(o,(e=>A.Map.isMap(e)&&e.get("name")===r&&e.get("in")===n))||(0,A.Map)()}const ve=(0,_.P1)(L,(e=>{const t=e.get("host");return"string"==typeof t&&t.length>0&&"/"!==t[0]}));function ye(e,t,r){t=t||[];let n=me(e,...t).get("parameters",(0,A.List)());return g()(n).call(n,((e,t)=>{let n=r&&"body"===t.get("in")?t.get("value_xml"):t.get("value");return e.set((0,S.V9)(t,{allowHashes:!1}),n)}),(0,A.fromJS)({}))}function be(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(A.List.isList(e))return w()(e).call(e,(e=>A.Map.isMap(e)&&e.get("in")===t))}function we(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(A.List.isList(e))return w()(e).call(e,(e=>A.Map.isMap(e)&&e.get("type")===t))}function Ee(e,t){t=t||[];let r=D(e).getIn(["paths",...t],(0,A.fromJS)({})),n=e.getIn(["meta","paths",...t],(0,A.fromJS)({})),o=xe(e,t);const a=r.get("parameters")||new A.List,i=n.get("consumes_value")?n.get("consumes_value"):we(a,"file")?"multipart/form-data":we(a,"formData")?"application/x-www-form-urlencoded":void 0;return(0,A.fromJS)({requestContentType:i,responseContentType:o})}function xe(e,t){t=t||[];const r=D(e).getIn(["paths",...t],null);if(null===r)return;const n=e.getIn(["meta","paths",...t,"produces_value"],null),o=r.getIn(["produces",0],null);return n||o||"application/json"}function _e(e,t){t=t||[];const r=D(e),n=r.getIn(["paths",...t],null);if(null===n)return;const[o]=t,a=n.get("produces",null),i=r.getIn(["paths",o,"produces"],null),s=r.getIn(["produces"],null);return a||i||s}function Se(e,t){t=t||[];const r=D(e),n=r.getIn(["paths",...t],null);if(null===n)return;const[o]=t,a=n.get("consumes",null),i=r.getIn(["paths",o,"consumes"],null),s=r.getIn(["consumes"],null);return a||i||s}const Ae=(e,t,r)=>{let n=e.get("url").match(/^([a-z][a-z0-9+\-.]*):/),o=x()(n)?n[1]:null;return e.getIn(["scheme",t,r])||e.getIn(["scheme","_defaultScheme"])||o||""},ke=(e,t,r)=>{var n;return l()(n=["http","https"]).call(n,Ae(e,t,r))>-1},Ce=(e,t)=>{t=t||[];let r=e.getIn(["meta","paths",...t,"parameters"],(0,A.fromJS)([]));const n=[];return i()(r).call(r,(e=>{let t=e.get("errors");t&&t.count()&&i()(t).call(t,(e=>n.push(e)))})),n},Oe=(e,t)=>0===Ce(e,t).length,je=(e,t)=>{var r;let n={requestBody:!1,requestContentType:{}},o=e.getIn(["resolvedSubtrees","paths",...t,"requestBody"],(0,A.fromJS)([]));return o.size<1||(o.getIn(["required"])&&(n.requestBody=o.getIn(["required"])),i()(r=o.getIn(["content"]).entrySeq()).call(r,(e=>{const t=e[0];if(e[1].getIn(["schema","required"])){const r=e[1].getIn(["schema","required"]).toJS();n.requestContentType[t]=r}}))),n},Ie=(e,t,r,n)=>{if((r||n)&&r===n)return!0;let o=e.getIn(["resolvedSubtrees","paths",...t,"requestBody","content"],(0,A.fromJS)([]));if(o.size<2||!r||!n)return!1;let a=o.getIn([r,"schema","properties"],(0,A.fromJS)([])),i=o.getIn([n,"schema","properties"],(0,A.fromJS)([]));return!!a.equals(i)};function Ne(e){return A.Map.isMap(e)?e:new A.Map}},77508:(e,t,r)=>{"use strict";r.r(t),r.d(t,{updateSpec:()=>u,updateJsonSpec:()=>c,executeRequest:()=>p,validateParams:()=>f});var n=r(28222),o=r.n(n),a=r(86),i=r.n(a),s=r(27361),l=r.n(s);const u=(e,t)=>{let{specActions:r}=t;return function(){e(...arguments),r.parseToJson(...arguments)}},c=(e,t)=>{let{specActions:r}=t;return function(){for(var t=arguments.length,n=new Array(t),a=0;a{l()(u,[e]).$ref&&r.requestResolvedSubtree(["paths",e])})),r.requestResolvedSubtree(["components","securitySchemes"])}},p=(e,t)=>{let{specActions:r}=t;return t=>(r.logRequest(t),e(t))},f=(e,t)=>{let{specSelectors:r}=t;return t=>e(t,r.isOAS3())}},34852:(e,t,r)=>{"use strict";r.r(t),r.d(t,{loaded:()=>n});const n=(e,t)=>function(){e(...arguments);const r=t.getConfigs().withCredentials;void 0!==r&&(t.fn.fetch.withCredentials="string"==typeof r?"true"===r:!!r)}},48792:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>qr});var n={};r.r(n),r.d(n,{JsonPatchError:()=>Fe,_areEquals:()=>Ge,applyOperation:()=>$e,applyPatch:()=>We,applyReducer:()=>He,deepClone:()=>ze,getValueByPointer:()=>Ve,validate:()=>Ke,validator:()=>Je});var o={};r.r(o),r.d(o,{compare:()=>nt,generate:()=>tt,observe:()=>et,unobserve:()=>Xe});var a={};r.r(a),r.d(a,{cookie:()=>kr,header:()=>Ar,path:()=>xr,query:()=>_r});var i=r(80093),s=r.n(i),l=r(30222),u=r.n(l),c=r(36594),p=r.n(c),f=r(20474),h=r.n(f),d=r(67375),m=r.n(d),g=r(58118),v=r.n(g),y=r(74386),b=r.n(y),w=r(25110),E=r.n(w),x=r(35627),_=r.n(x),S=r(97606),A=r.n(S),k=r(28222),C=r.n(k),O=r(39022),j=r.n(O),I=r(2018),N=r.n(I),T=r(14418),P=r.n(T),R=(r(31905),r(80129)),M=r.n(R),D=r(1272);const L="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window,{FormData:B,Blob:F,File:z}=L;var U=r(15687),q=r.n(U),V=r(24278),$=r.n(V),W=function(e){return":/?#[]@!$&'()*+,;=".indexOf(e)>-1},H=function(e){return/^[a-z0-9\-._~]+$/i.test(e)};function J(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.escape,o=arguments.length>2?arguments[2]:void 0;return"number"==typeof e&&(e=e.toString()),"string"==typeof e&&e.length&&n?o?JSON.parse(e):A()(t=q()(e)).call(t,(function(e){var t,r;if(H(e))return e;if(W(e)&&"unsafe"===n)return e;var o=new TextEncoder;return A()(t=A()(r=E()(o.encode(e))).call(r,(function(e){var t;return $()(t="0".concat(e.toString(16).toUpperCase())).call(t,-2)}))).call(t,(function(e){return"%".concat(e)})).join("")})).join(""):e}function K(e){var t=e.value;return Array.isArray(t)?function(e){var t=e.key,r=e.value,n=e.style,o=e.explode,a=e.escape,i=function(e){return J(e,{escape:a})};if("simple"===n)return A()(r).call(r,(function(e){return i(e)})).join(",");if("label"===n)return".".concat(A()(r).call(r,(function(e){return i(e)})).join("."));if("matrix"===n)return A()(r).call(r,(function(e){return i(e)})).reduce((function(e,r){var n,a,i;return!e||o?j()(a=j()(i="".concat(e||"",";")).call(i,t,"=")).call(a,r):j()(n="".concat(e,",")).call(n,r)}),"");if("form"===n){var s=o?"&".concat(t,"="):",";return A()(r).call(r,(function(e){return i(e)})).join(s)}if("spaceDelimited"===n){var l=o?"".concat(t,"="):"";return A()(r).call(r,(function(e){return i(e)})).join(" ".concat(l))}if("pipeDelimited"===n){var u=o?"".concat(t,"="):"";return A()(r).call(r,(function(e){return i(e)})).join("|".concat(u))}return}(e):"object"===h()(t)?function(e){var t=e.key,r=e.value,n=e.style,o=e.explode,a=e.escape,i=function(e){return J(e,{escape:a})},s=C()(r);if("simple"===n)return s.reduce((function(e,t){var n,a,s,l=i(r[t]),u=o?"=":",",c=e?"".concat(e,","):"";return j()(n=j()(a=j()(s="".concat(c)).call(s,t)).call(a,u)).call(n,l)}),"");if("label"===n)return s.reduce((function(e,t){var n,a,s,l=i(r[t]),u=o?"=":".",c=e?"".concat(e,"."):".";return j()(n=j()(a=j()(s="".concat(c)).call(s,t)).call(a,u)).call(n,l)}),"");if("matrix"===n&&o)return s.reduce((function(e,t){var n,o,a=i(r[t]),s=e?"".concat(e,";"):";";return j()(n=j()(o="".concat(s)).call(o,t,"=")).call(n,a)}),"");if("matrix"===n)return s.reduce((function(e,n){var o,a,s=i(r[n]),l=e?"".concat(e,","):";".concat(t,"=");return j()(o=j()(a="".concat(l)).call(a,n,",")).call(o,s)}),"");if("form"===n)return s.reduce((function(e,t){var n,a,s,l,u=i(r[t]),c=e?j()(n="".concat(e)).call(n,o?"&":","):"",p=o?"=":",";return j()(a=j()(s=j()(l="".concat(c)).call(l,t)).call(s,p)).call(a,u)}),"");return}(e):function(e){var t,r=e.key,n=e.value,o=e.style,a=e.escape,i=function(e){return J(e,{escape:a})};if("simple"===o)return i(n);if("label"===o)return".".concat(i(n));if("matrix"===o)return j()(t=";".concat(r,"=")).call(t,i(n));if("form"===o)return i(n);if("deepObject"===o)return i(n,{},!0);return}(e)}const G=function(e,t){t.body=e};var Z={serializeRes:te,mergeInQueryOrForm:fe};function Y(e){return Q.apply(this,arguments)}function Q(){return Q=s()(u().mark((function e(t){var r,n,o,a,i,s=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=s.length>1&&void 0!==s[1]?s[1]:{},"object"===h()(t)&&(t=(r=t).url),r.headers=r.headers||{},Z.mergeInQueryOrForm(r),r.headers&&C()(r.headers).forEach((function(e){var t=r.headers[e];"string"==typeof t&&(r.headers[e]=t.replace(/\n+/g," "))})),!r.requestInterceptor){e.next=12;break}return e.next=8,r.requestInterceptor(r);case 8:if(e.t0=e.sent,e.t0){e.next=11;break}e.t0=r;case 11:r=e.t0;case 12:return n=r.headers["content-type"]||r.headers["Content-Type"],/multipart\/form-data/i.test(n)&&r.body instanceof B&&(delete r.headers["content-type"],delete r.headers["Content-Type"]),e.prev=14,e.next=17,(r.userFetch||fetch)(r.url,r);case 17:return o=e.sent,e.next=20,Z.serializeRes(o,t,r);case 20:if(o=e.sent,!r.responseInterceptor){e.next=28;break}return e.next=24,r.responseInterceptor(o);case 24:if(e.t1=e.sent,e.t1){e.next=27;break}e.t1=o;case 27:o=e.t1;case 28:e.next=39;break;case 30:if(e.prev=30,e.t2=e.catch(14),o){e.next=34;break}throw e.t2;case 34:throw(a=new Error(o.statusText||"response status is ".concat(o.status))).status=o.status,a.statusCode=o.status,a.responseError=e.t2,a;case 39:if(o.ok){e.next=45;break}throw(i=new Error(o.statusText||"response status is ".concat(o.status))).status=o.status,i.statusCode=o.status,i.response=o,i;case 45:return e.abrupt("return",o);case 46:case"end":return e.stop()}}),e,null,[[14,30]])}))),Q.apply(this,arguments)}var X=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return/(json|xml|yaml|text)\b/.test(e)};function ee(e,t){return t&&(0===t.indexOf("application/json")||t.indexOf("+json")>0)?JSON.parse(e):D.ZP.load(e)}function te(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.loadSpec,o=void 0!==n&&n,a={ok:e.ok,url:e.url||t,status:e.status,statusText:e.statusText,headers:ne(e.headers)},i=a.headers["content-type"],s=o||X(i),l=s?e.text:e.blob||e.buffer;return l.call(e).then((function(e){if(a.text=e,a.data=e,s)try{var t=ee(e,i);a.body=t,a.obj=t}catch(e){a.parseError=e}return a}))}function re(e){return v()(e).call(e,", ")?e.split(", "):e}function ne(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"function"!=typeof b()(e)?{}:E()(b()(e).call(e)).reduce((function(e,t){var r=m()(t,2),n=r[0],o=r[1];return e[n]=re(o),e}),{})}function oe(e,t){return t||"undefined"==typeof navigator||(t=navigator),t&&"ReactNative"===t.product?!(!e||"object"!==h()(e)||"string"!=typeof e.uri):void 0!==z&&e instanceof z||(void 0!==F&&e instanceof F||(!!ArrayBuffer.isView(e)||null!==e&&"object"===h()(e)&&"function"==typeof e.pipe))}function ae(e,t){return Array.isArray(e)&&e.some((function(e){return oe(e,t)}))}var ie={form:",",spaceDelimited:"%20",pipeDelimited:"|"},se={csv:",",ssv:"%20",tsv:"%09",pipes:"|"};function le(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=t.collectionFormat,o=t.allowEmptyValue,a=t.serializationOption,i=t.encoding,s="object"!==h()(t)||Array.isArray(t)?t:t.value,l=r?function(e){return e.toString()}:function(e){return encodeURIComponent(e)},u=l(e);if(void 0===s&&o)return[[u,""]];if(oe(s)||ae(s))return[[u,s]];if(a)return ue(e,s,r,a);if(i){if([h()(i.style),h()(i.explode),h()(i.allowReserved)].some((function(e){return"undefined"!==e}))){var c=i.style,p=i.explode,f=i.allowReserved;return ue(e,s,r,{style:c,explode:p,allowReserved:f})}if(i.contentType){if("application/json"===i.contentType){var d="string"==typeof s?s:_()(s);return[[u,l(d)]]}return[[u,l(s.toString())]]}return"object"!==h()(s)?[[u,l(s)]]:Array.isArray(s)&&s.every((function(e){return"object"!==h()(e)}))?[[u,A()(s).call(s,l).join(",")]]:[[u,l(_()(s))]]}return"object"!==h()(s)?[[u,l(s)]]:Array.isArray(s)?"multi"===n?[[u,A()(s).call(s,l)]]:[[u,A()(s).call(s,l).join(se[n||"csv"])]]:[[u,""]]}function ue(e,t,r,n){var o,a,i,s=n.style||"form",l=void 0===n.explode?"form"===s:n.explode,u=!r&&(n&&n.allowReserved?"unsafe":"reserved"),c=function(e){return J(e,{escape:u})},p=r?function(e){return e}:function(e){return J(e,{escape:u})};return"object"!==h()(t)?[[p(e),c(t)]]:Array.isArray(t)?l?[[p(e),A()(t).call(t,c)]]:[[p(e),A()(t).call(t,c).join(ie[s])]]:"deepObject"===s?A()(a=C()(t)).call(a,(function(r){var n;return[p(j()(n="".concat(e,"[")).call(n,r,"]")),c(t[r])]})):l?A()(i=C()(t)).call(i,(function(e){return[p(e),c(t[e])]})):[[p(e),A()(o=C()(t)).call(o,(function(e){var r;return[j()(r="".concat(p(e),",")).call(r,c(t[e]))]})).join(",")]]}function ce(e){return N()(e).reduce((function(e,t){var r,n=m()(t,2),o=n[0],a=n[1],i=p()(le(o,a,!0));try{for(i.s();!(r=i.n()).done;){var s=m()(r.value,2),l=s[0],u=s[1];if(Array.isArray(u)){var c,f=p()(u);try{for(f.s();!(c=f.n()).done;){var h=c.value;if(ArrayBuffer.isView(h)){var d=new F([h]);e.append(l,d)}else e.append(l,h)}}catch(e){f.e(e)}finally{f.f()}}else if(ArrayBuffer.isView(u)){var g=new F([u]);e.append(l,g)}else e.append(l,u)}}catch(e){i.e(e)}finally{i.f()}return e}),new B)}function pe(e){var t=C()(e).reduce((function(t,r){var n,o=p()(le(r,e[r]));try{for(o.s();!(n=o.n()).done;){var a=m()(n.value,2),i=a[0],s=a[1];t[i]=s}}catch(e){o.e(e)}finally{o.f()}return t}),{});return M().stringify(t,{encode:!1,indices:!1})||""}function fe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,r=void 0===t?"":t,n=e.query,o=e.form,a=function(){for(var e=arguments.length,t=new Array(e),r=0;r=48&&t<=57))return!1;r++}return!0}function Re(e){return-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Me(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function De(e){if(void 0===e)return!0;if(e)if(Array.isArray(e)){for(var t=0,r=e.length;t0&&"constructor"==s[u-1]))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&void 0===p&&(void 0===l[f]?p=s.slice(0,u).join("/"):u==c-1&&(p=t.path),void 0!==p&&h(t,0,e,p)),u++,Array.isArray(l)){if("-"===f)f=l.length;else{if(r&&!Pe(f))throw new Fe("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",a,t,e);Pe(f)&&(f=~~f)}if(u>=c){if(r&&"add"===t.op&&f>l.length)throw new Fe("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",a,t,e);if(!1===(i=qe[t.op].call(t,l,f,e)).test)throw new Fe("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return i}}else if(u>=c){if(!1===(i=Ue[t.op].call(t,l,f,e)).test)throw new Fe("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return i}if(l=l[f],r&&u0)throw new Fe('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if(("move"===e.op||"copy"===e.op)&&"string"!=typeof e.from)throw new Fe("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if(("add"===e.op||"replace"===e.op||"test"===e.op)&&void 0===e.value)throw new Fe("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if(("add"===e.op||"replace"===e.op||"test"===e.op)&&De(e.value))throw new Fe("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r)if("add"==e.op){var o=e.path.split("/").length,a=n.split("/").length;if(o!==a+1&&o!==a)throw new Fe("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if("replace"===e.op||"remove"===e.op||"_get"===e.op){if(e.path!==n)throw new Fe("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if("move"===e.op||"copy"===e.op){var i=Ke([{op:"_get",path:e.from,value:void 0}],r);if(i&&"OPERATION_PATH_UNRESOLVABLE"===i.name)throw new Fe("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}function Ke(e,t,r){try{if(!Array.isArray(e))throw new Fe("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)We(Te(t),Te(e),r||!0);else{r=r||Je;for(var n=0;n0&&(e.patches=[],e.callback&&e.callback(n)),n}function rt(e,t,r,n,o){if(t!==e){"function"==typeof t.toJSON&&(t=t.toJSON());for(var a=Ne(t),i=Ne(e),s=!1,l=i.length-1;l>=0;l--){var u=e[p=i[l]];if(!Ie(t,p)||void 0===t[p]&&void 0!==u&&!1===Array.isArray(t))Array.isArray(e)===Array.isArray(t)?(o&&r.push({op:"test",path:n+"/"+Re(p),value:Te(u)}),r.push({op:"remove",path:n+"/"+Re(p)}),s=!0):(o&&r.push({op:"test",path:n,value:e}),r.push({op:"replace",path:n,value:t}),!0);else{var c=t[p];"object"==typeof u&&null!=u&&"object"==typeof c&&null!=c&&Array.isArray(u)===Array.isArray(c)?rt(u,c,r,n+"/"+Re(p),o):u!==c&&(!0,o&&r.push({op:"test",path:n+"/"+Re(p),value:Te(u)}),r.push({op:"replace",path:n+"/"+Re(p),value:Te(c)}))}}if(s||a.length!=i.length)for(l=0;l0){var o=t(e,r[r.length-1],r);o&&(n=j()(n).call(n,o))}if(Array.isArray(e)){var a=A()(e).call(e,(function(e,n){return pt(e,t,j()(r).call(r,n))}));a&&(n=j()(n).call(n,a))}else if(mt(e)){var i,s=A()(i=C()(e)).call(i,(function(n){return pt(e[n],t,j()(r).call(r,n))}));s&&(n=j()(n).call(n,s))}return n=ht(n)}function ft(e){return Array.isArray(e)?e:[e]}function ht(e){var t;return j()(t=[]).apply(t,q()(A()(e).call(e,(function(e){return Array.isArray(e)?ht(e):e}))))}function dt(e){return P()(e).call(e,(function(e){return void 0!==e}))}function mt(e){return e&&"object"===h()(e)}function gt(e){return e&&"function"==typeof e}function vt(e){if(wt(e)){var t=e.op;return"add"===t||"remove"===t||"replace"===t}return!1}function yt(e){return vt(e)||wt(e)&&"mutation"===e.type}function bt(e){return yt(e)&&("add"===e.op||"replace"===e.op||"merge"===e.op||"mergeDeep"===e.op)}function wt(e){return e&&"object"===h()(e)}function Et(e,t){try{return Ve(e,t)}catch(e){return console.error(e),{}}}var xt=r(28886),_t=r.n(xt),St=r(37659),At=r.n(St),kt=r(8575);function Ct(e,t){function r(){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack;for(var e=arguments.length,r=new Array(e),n=0;n-1&&-1===Nt.indexOf(r)||Tt.indexOf(n)>-1||Pt.some((function(e){return n.indexOf(e)>-1}))}function Mt(e,t){var r,n=e.split("#"),o=m()(n,2),a=o[0],i=o[1],s=kt.resolve(a||"",t||"");return i?j()(r="".concat(s,"#")).call(r,i):s}var Dt="application/json, application/yaml",Lt=/^([a-z]+:\/\/|\/\/)/i,Bt=Ct("JSONRefError",(function(e,t,r){this.originalError=r,Ee()(this,t||{})})),Ft={},zt=new(_t()),Ut=[function(e){return"paths"===e[0]&&"responses"===e[3]&&"examples"===e[5]},function(e){return"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"example"===e[7]},function(e){return"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"examples"===e[7]&&"value"===e[9]},function(e){return"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"example"===e[6]},function(e){return"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"examples"===e[6]&&"value"===e[8]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"example"===e[4]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"example"===e[5]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"examples"===e[4]&&"value"===e[6]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"examples"===e[5]&&"value"===e[7]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"content"===e[4]&&"example"===e[6]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"content"===e[4]&&"examples"===e[6]&&"value"===e[8]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"content"===e[4]&&"example"===e[7]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"content"===e[5]&&"examples"===e[7]&&"value"===e[9]}],qt={key:"$ref",plugin:function(e,t,r,n){var o=n.getInstance(),a=$()(r).call(r,0,-1);if(!Rt(a)&&!function(e){return Ut.some((function(t){return t(e)}))}(a)){var i=n.getContext(r).baseDoc;if("string"!=typeof e)return new Bt("$ref: must be a string (JSON-Ref)",{$ref:e,baseDoc:i,fullPath:r});var s,l,u,c=Jt(e),p=c[0],f=c[1]||"";try{s=i||p?Wt(p,i):null}catch(t){return Ht(t,{pointer:f,$ref:e,basePath:s,fullPath:r})}if(function(e,t,r,n){var o,a,i=zt.get(n);i||(i={},zt.set(n,i));var s=function(e){if(0===e.length)return"";return"/".concat(A()(e).call(e,Xt).join("/"))}(r),l=j()(o="".concat(t||"","#")).call(o,e),u=s.replace(/allOf\/\d+\/?/g,""),c=n.contextTree.get([]).baseDoc;if(t===c&&er(u,e))return!0;var p="",f=r.some((function(e){var t;return p=j()(t="".concat(p,"/")).call(t,Xt(e)),i[p]&&i[p].some((function(e){return er(e,l)||er(l,e)}))}));if(f)return!0;return void(i[u]=j()(a=i[u]||[]).call(a,l))}(f,s,a,n)&&!o.useCircularStructures){var h=Mt(e,s);return e===h?null:it.replace(r,h)}if(null==s?(u=Yt(f),void 0===(l=n.get(u))&&(l=new Bt("Could not resolve reference: ".concat(e),{pointer:f,$ref:e,baseDoc:i,fullPath:r}))):l=null!=(l=Kt(s,f)).__value?l.__value:l.catch((function(t){throw Ht(t,{pointer:f,$ref:e,baseDoc:i,fullPath:r})})),l instanceof Error)return[it.remove(r),l];var d=Mt(e,s),m=it.replace(a,l,{$$ref:d});if(s&&s!==i)return[m,it.context(a,{baseDoc:s})];try{if(!function(e,t){var r=[e];return t.path.reduce((function(e,t){return r.push(e[t]),e[t]}),e),n(t.value);function n(e){return it.isObject(e)&&(r.indexOf(e)>=0||C()(e).some((function(t){return n(e[t])})))}}(n.state,m)||o.useCircularStructures)return m}catch(e){return null}}}},Vt=Ee()(qt,{docCache:Ft,absoluteify:Wt,clearCache:function(e){void 0!==e?delete Ft[e]:C()(Ft).forEach((function(e){delete Ft[e]}))},JSONRefError:Bt,wrapError:Ht,getDoc:Gt,split:Jt,extractFromDoc:Kt,fetchJSON:function(e){return fetch(e,{headers:{Accept:Dt},loadSpec:!0}).then((function(e){return e.text()})).then((function(e){return D.ZP.load(e)}))},extract:Zt,jsonPointerToArray:Yt,unescapeJsonPointerToken:Qt});const $t=Vt;function Wt(e,t){if(!Lt.test(e)){var r;if(!t)throw new Bt(j()(r="Tried to resolve a relative URL, without having a basePath. path: '".concat(e,"' basePath: '")).call(r,t,"'"));return kt.resolve(t,e)}return e}function Ht(e,t){var r,n;e&&e.response&&e.response.body?r=j()(n="".concat(e.response.body.code," ")).call(n,e.response.body.message):r=e.message;return new Bt("Could not resolve reference: ".concat(r),t,e)}function Jt(e){return(e+"").split("#")}function Kt(e,t){var r=Ft[e];if(r&&!it.isPromise(r))try{var n=Zt(t,r);return Ee()(Ae().resolve(n),{__value:n})}catch(e){return Ae().reject(e)}return Gt(e).then((function(e){return Zt(t,e)}))}function Gt(e){var t=Ft[e];return t?it.isPromise(t)?t:Ae().resolve(t):(Ft[e]=Vt.fetchJSON(e).then((function(t){return Ft[e]=t,t})),Ft[e])}function Zt(e,t){var r=Yt(e);if(r.length<1)return t;var n=it.getIn(t,r);if(void 0===n)throw new Bt("Could not resolve pointer: ".concat(e," does not exist in document"),{pointer:e});return n}function Yt(e){var t;if("string"!=typeof e)throw new TypeError("Expected a string, got a ".concat(h()(e)));return"/"===e[0]&&(e=e.substr(1)),""===e?[]:A()(t=e.split("/")).call(t,Qt)}function Qt(e){return"string"!=typeof e?e:new(At())("=".concat(e.replace(/~1/g,"/").replace(/~0/g,"~"))).get("")}function Xt(e){var t,r=new(At())([["",e.replace(/~/g,"~0").replace(/\//g,"~1")]]);return $()(t=r.toString()).call(t,1)}function er(e,t){if(!(r=t)||"/"===r||"#"===r)return!0;var r,n=e.charAt(t.length),o=$()(t).call(t,-1);return 0===e.indexOf(t)&&(!n||"/"===n||"#"===n)&&"#"!==o}const tr={key:"allOf",plugin:function(e,t,r,n,o){if(!o.meta||!o.meta.$$ref){var a=$()(r).call(r,0,-1);if(!Rt(a)){if(!Array.isArray(e)){var i=new TypeError("allOf must be an array");return i.fullPath=r,i}var s=!1,l=o.value;if(a.forEach((function(e){l&&(l=l[e])})),l=me()({},l),0!==C()(l).length){delete l.allOf;var u,c,p=[];if(p.push(n.replace(a,{})),e.forEach((function(e,t){if(!n.isObject(e)){if(s)return null;s=!0;var o=new TypeError("Elements in allOf must be objects");return o.fullPath=r,p.push(o)}p.push(n.mergeDeep(a,e));var i=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.specmap,o=r.getBaseUrlForNodePath,a=void 0===o?function(e){var r;return n.getContext(j()(r=[]).call(r,q()(t),q()(e))).baseDoc}:o,i=r.targetKeys,s=void 0===i?["$ref","$$ref"]:i,l=[];return jt()(e).forEach((function(){if(v()(s).call(s,this.key)&&"string"==typeof this.node){var e=this.path,r=j()(t).call(t,this.path),o=Mt(this.node,a(e));l.push(n.replace(r,o))}})),l}(e,$()(r).call(r,0,-1),{getBaseUrlForNodePath:function(e){var o;return n.getContext(j()(o=[]).call(o,q()(r),[t],q()(e))).baseDoc},specmap:n});p.push.apply(p,q()(i))})),l.example)p.push(n.remove(j()(u=[]).call(u,a,"example")));if(p.push(n.mergeDeep(a,l)),!l.$$ref)p.push(n.remove(j()(c=[]).call(c,a,"$$ref")));return p}}}}},rr={key:"parameters",plugin:function(e,t,r,n){if(Array.isArray(e)&&e.length){var o=Ee()([],e),a=$()(r).call(r,0,-1),i=me()({},it.getIn(n.spec,a));return e.forEach((function(e,t){try{o[t].default=n.parameterMacro(i,e)}catch(e){var a=new Error(e);return a.fullPath=r,a}})),it.replace(r,o)}return it.replace(r,e)}},nr={key:"properties",plugin:function(e,t,r,n){var o=me()({},e);for(var a in e)try{o[a].default=n.modelPropertyMacro(o[a])}catch(e){var i=new Error(e);return i.fullPath=r,i}return it.replace(r,o)}};var or=function(){function e(t){ve()(this,e),this.root=ar(t||{})}return be()(e,[{key:"set",value:function(e,t){var r=this.getParent(e,!0);if(r){var n=e[e.length-1],o=r.children;o[n]?ir(o[n],t,r):o[n]=ar(t,r)}else ir(this.root,t,null)}},{key:"get",value:function(e){if((e=e||[]).length<1)return this.root.value;for(var t,r,n=this.root,o=0;o1?r-1:0),o=1;o1?n-1:0),a=1;a0}))}},{key:"nextPromisedPatch",value:function(){var e;if(this.promisedPatches.length>0)return Ae().race(A()(e=this.promisedPatches).call(e,(function(e){return e.value})))}},{key:"getPluginHistory",value:function(e){var t=this.constructor.getPluginName(e);return this.pluginHistory[t]||[]}},{key:"getPluginRunCount",value:function(e){return this.getPluginHistory(e).length}},{key:"getPluginHistoryTip",value:function(e){var t=this.getPluginHistory(e);return t&&t[t.length-1]||{}}},{key:"getPluginMutationIndex",value:function(e){var t=this.getPluginHistoryTip(e).mutationIndex;return"number"!=typeof t?-1:t}},{key:"updatePluginHistory",value:function(e,t){var r=this.constructor.getPluginName(e);this.pluginHistory[r]=this.pluginHistory[r]||[],this.pluginHistory[r].push(t)}},{key:"updatePatches",value:function(e){var t=this;it.normalizeArray(e).forEach((function(e){if(e instanceof Error)t.errors.push(e);else try{if(!it.isObject(e))return void t.debug("updatePatches","Got a non-object patch",e);if(t.showDebug&&t.allPatches.push(e),it.isPromise(e.value))return t.promisedPatches.push(e),void t.promisedPatchThen(e);if(it.isContextPatch(e))return void t.setContext(e.path,e.value);if(it.isMutation(e))return void t.updateMutations(e)}catch(e){console.error(e),t.errors.push(e)}}))}},{key:"updateMutations",value:function(e){"object"===h()(e.value)&&!Array.isArray(e.value)&&this.allowMetaPatches&&(e.value=me()({},e.value));var t=it.applyPatch(this.state,e,{allowMetaPatches:this.allowMetaPatches});t&&(this.mutations.push(e),this.state=t)}},{key:"removePromisedPatch",value:function(e){var t,r=this.promisedPatches.indexOf(e);r<0?this.debug("Tried to remove a promisedPatch that isn't there!"):Ce()(t=this.promisedPatches).call(t,r,1)}},{key:"promisedPatchThen",value:function(e){var t=this;return e.value=e.value.then((function(r){var n=me()(me()({},e),{},{value:r});t.removePromisedPatch(e),t.updatePatches(n)})).catch((function(r){t.removePromisedPatch(e),t.updatePatches(r)})),e.value}},{key:"getMutations",value:function(e,t){var r;return e=e||0,"number"!=typeof t&&(t=this.mutations.length),$()(r=this.mutations).call(r,e,t)}},{key:"getCurrentMutations",value:function(){return this.getMutationsForPlugin(this.getCurrentPlugin())}},{key:"getMutationsForPlugin",value:function(e){var t=this.getPluginMutationIndex(e);return this.getMutations(t+1)}},{key:"getCurrentPlugin",value:function(){return this.currentPlugin}},{key:"getLib",value:function(){return this.libMethods}},{key:"_get",value:function(e){return it.getIn(this.state,e)}},{key:"_getContext",value:function(e){return this.contextTree.get(e)}},{key:"setContext",value:function(e,t){return this.contextTree.set(e,t)}},{key:"_hasRun",value:function(e){return this.getPluginRunCount(this.getCurrentPlugin())>(e||0)}},{key:"dispatch",value:function(){var e,t=this,r=this,n=this.nextPlugin();if(!n){var o=this.nextPromisedPatch();if(o)return o.then((function(){return t.dispatch()})).catch((function(){return t.dispatch()}));var a={spec:this.state,errors:this.errors};return this.showDebug&&(a.patches=this.allPatches),Ae().resolve(a)}if(r.pluginCount=r.pluginCount||{},r.pluginCount[n]=(r.pluginCount[n]||0)+1,r.pluginCount[n]>100)return Ae().resolve({spec:r.state,errors:j()(e=r.errors).call(e,new Error("We've reached a hard limit of ".concat(100," plugin runs")))});if(n!==this.currentPlugin&&this.promisedPatches.length){var i,s=A()(i=this.promisedPatches).call(i,(function(e){return e.value}));return Ae().all(A()(s).call(s,(function(e){return e.then(sr,sr)}))).then((function(){return t.dispatch()}))}return function(){r.currentPlugin=n;var e=r.getCurrentMutations(),t=r.mutations.length-1;try{if(n.isGenerator){var o,a=p()(n(e,r.getLib()));try{for(a.s();!(o=a.n()).done;){l(o.value)}}catch(e){a.e(e)}finally{a.f()}}else{l(n(e,r.getLib()))}}catch(e){console.error(e),l([Ee()(Object.create(e),{plugin:n})])}finally{r.updatePluginHistory(n,{mutationIndex:t})}return r.dispatch()}();function l(e){e&&(e=it.fullyNormalizeArray(e),r.updatePatches(e,n))}}}],[{key:"getPluginName",value:function(e){return e.pluginName}},{key:"getPatchesOfType",value:function(e,t){return P()(e).call(e,t)}}]),e}();var ur={refs:$t,allOf:tr,parameters:rr,properties:nr},cr=r(23159);function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.requestInterceptor,n=t.responseInterceptor,o=e.withCredentials?"include":"same-origin";return function(t){return e({url:t,loadSpec:!0,requestInterceptor:r,responseInterceptor:n,headers:{Accept:Dt},credentials:o}).then((function(e){return e.body}))}}function fr(e){var t=e.fetch,r=e.spec,n=e.url,o=e.mode,a=e.allowMetaPatches,i=void 0===a||a,l=e.pathDiscriminator,c=e.modelPropertyMacro,p=e.parameterMacro,f=e.requestInterceptor,h=e.responseInterceptor,d=e.skipNormalization,m=e.useCircularStructures,g=e.http,v=e.baseDoc;return v=v||n,g=t||g||Y,r?y(r):pr(g,{requestInterceptor:f,responseInterceptor:h})(v).then(y);function y(e){v&&(ur.refs.docCache[v]=e),ur.refs.fetchJSON=pr(g,{requestInterceptor:f,responseInterceptor:h});var t,r=[ur.refs];return"function"==typeof p&&r.push(ur.parameters),"function"==typeof c&&r.push(ur.properties),"strict"!==o&&r.push(ur.allOf),(t={spec:e,context:{baseDoc:v},plugins:r,allowMetaPatches:i,pathDiscriminator:l,parameterMacro:p,modelPropertyMacro:c,useCircularStructures:m},new lr(t).dispatch()).then(d?function(){var e=s()(u().mark((function e(t){return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}():cr.K1)}}var hr=r(88436),dr=r.n(hr),mr=r(27361),gr=r.n(mr),vr=r(76489);function yr(e){return"[object Object]"===Object.prototype.toString.call(e)}function br(e){var t,r;return!1!==yr(e)&&(void 0===(t=e.constructor)||!1!==yr(r=t.prototype)&&!1!==r.hasOwnProperty("isPrototypeOf"))}const wr={body:function(e){var t=e.req,r=e.value;t.body=r},header:function(e){var t=e.req,r=e.parameter,n=e.value;t.headers=t.headers||{},void 0!==n&&(t.headers[r.name]=n)},query:function(e){var t=e.req,r=e.value,n=e.parameter;t.query=t.query||{},!1===r&&"boolean"===n.type&&(r="false");0===r&&["number","integer"].indexOf(n.type)>-1&&(r="0");if(r)t.query[n.name]={collectionFormat:n.collectionFormat,value:r};else if(n.allowEmptyValue&&void 0!==r){var o=n.name;t.query[o]=t.query[o]||{},t.query[o].allowEmptyValue=!0}},path:function(e){var t=e.req,r=e.value,n=e.parameter;t.url=t.url.split("{".concat(n.name,"}")).join(encodeURIComponent(r))},formData:function(e){var t=e.req,r=e.value,n=e.parameter;(r||n.allowEmptyValue)&&(t.form=t.form||{},t.form[n.name]={value:r,allowEmptyValue:n.allowEmptyValue,collectionFormat:n.collectionFormat})}};function Er(e,t){return v()(t).call(t,"application/json")?"string"==typeof e?e:_()(e):e.toString()}function xr(e){var t=e.req,r=e.value,n=e.parameter,o=n.name,a=n.style,i=n.explode,s=n.content;if(s){var l=C()(s)[0];t.url=t.url.split("{".concat(o,"}")).join(J(Er(r,l),{escape:!0}))}else{var u=K({key:n.name,value:r,style:a||"simple",explode:i||!1,escape:!0});t.url=t.url.split("{".concat(o,"}")).join(u)}}function _r(e){var t=e.req,r=e.value,n=e.parameter;if(t.query=t.query||{},n.content){var o=C()(n.content)[0];t.query[n.name]=Er(r,o)}else if(!1===r&&(r="false"),0===r&&(r="0"),r){var a=n.style,i=n.explode,s=n.allowReserved;t.query[n.name]={value:r,serializationOption:{style:a,explode:i,allowReserved:s}}}else if(n.allowEmptyValue&&void 0!==r){var l=n.name;t.query[l]=t.query[l]||{},t.query[l].allowEmptyValue=!0}}var Sr=["accept","authorization","content-type"];function Ar(e){var t=e.req,r=e.parameter,n=e.value;if(t.headers=t.headers||{},!(Sr.indexOf(r.name.toLowerCase())>-1))if(r.content){var o=C()(r.content)[0];t.headers[r.name]=Er(n,o)}else void 0!==n&&(t.headers[r.name]=K({key:r.name,value:n,style:r.style||"simple",explode:void 0!==r.explode&&r.explode,escape:!1}))}function kr(e){var t=e.req,r=e.parameter,n=e.value;t.headers=t.headers||{};var o=h()(n);if(r.content){var a,i=C()(r.content)[0];t.headers.Cookie=j()(a="".concat(r.name,"=")).call(a,Er(n,i))}else if("undefined"!==o){var s="object"===o&&!Array.isArray(n)&&r.explode?"":"".concat(r.name,"=");t.headers.Cookie=s+K({key:r.name,value:n,escape:!1,style:r.style||"form",explode:void 0!==r.explode&&r.explode})}}var Cr=r(92381),Or=r.n(Cr);const jr=(void 0!==Or()?Or():"undefined"!=typeof self?self:window).btoa;function Ir(e,t){var r=e.operation,n=e.requestBody,o=e.securities,a=e.spec,i=e.attachContentTypeForEmptyPayload,s=e.requestContentType;t=function(e){var t=e.request,r=e.securities,n=void 0===r?{}:r,o=e.operation,a=void 0===o?{}:o,i=e.spec,s=me()({},t),l=n.authorized,u=void 0===l?{}:l,c=a.security||i.security||[],p=u&&!!C()(u).length,f=gr()(i,["components","securitySchemes"])||{};if(s.headers=s.headers||{},s.query=s.query||{},!C()(n).length||!p||!c||Array.isArray(a.security)&&!a.security.length)return t;return c.forEach((function(e){C()(e).forEach((function(e){var t=u[e],r=f[e];if(t){var n=t.value||t,o=r.type;if(t)if("apiKey"===o)"query"===r.in&&(s.query[r.name]=n),"header"===r.in&&(s.headers[r.name]=n),"cookie"===r.in&&(s.cookies[r.name]=n);else if("http"===o){if(/^basic$/i.test(r.scheme)){var a,i=n.username||"",l=n.password||"",c=jr(j()(a="".concat(i,":")).call(a,l));s.headers.Authorization="Basic ".concat(c)}/^bearer$/i.test(r.scheme)&&(s.headers.Authorization="Bearer ".concat(n))}else if("oauth2"===o||"openIdConnect"===o){var p,h=t.token||{},d=h[r["x-tokenName"]||"access_token"],m=h.token_type;m&&"bearer"!==m.toLowerCase()||(m="Bearer"),s.headers.Authorization=j()(p="".concat(m," ")).call(p,d)}}}))})),s}({request:t,securities:o,operation:r,spec:a});var l=r.requestBody||{},u=C()(l.content||{}),c=s&&u.indexOf(s)>-1;if(n||i){if(s&&c)t.headers["Content-Type"]=s;else if(!s){var p=u[0];p&&(t.headers["Content-Type"]=p,s=p)}}else s&&c&&(t.headers["Content-Type"]=s);if(!e.responseContentType&&r.responses){var f,d=P()(f=N()(r.responses)).call(f,(function(e){var t=m()(e,2),r=t[0],n=t[1],o=parseInt(r,10);return o>=200&&o<300&&br(n.content)})).reduce((function(e,t){var r=m()(t,2)[1];return j()(e).call(e,C()(r.content))}),[]);d.length>0&&(t.headers.accept=d.join(", "))}if(n)if(s){if(u.indexOf(s)>-1)if("application/x-www-form-urlencoded"===s||"multipart/form-data"===s)if("object"===h()(n)){var g=(l.content[s]||{}).encoding||{};t.form={},C()(n).forEach((function(e){t.form[e]={value:n[e],encoding:g[e]||{}}}))}else t.form=n;else t.body=n}else t.body=n;return t}function Nr(e,t){var r,n,o=e.spec,a=e.operation,i=e.securities,s=e.requestContentType,l=e.responseContentType,u=e.attachContentTypeForEmptyPayload;if(t=function(e){var t=e.request,r=e.securities,n=void 0===r?{}:r,o=e.operation,a=void 0===o?{}:o,i=e.spec,s=me()({},t),l=n.authorized,u=void 0===l?{}:l,c=n.specSecurity,p=void 0===c?[]:c,f=a.security||p,h=u&&!!C()(u).length,d=i.securityDefinitions;if(s.headers=s.headers||{},s.query=s.query||{},!C()(n).length||!h||!f||Array.isArray(a.security)&&!a.security.length)return t;return f.forEach((function(e){C()(e).forEach((function(e){var t=u[e];if(t){var r=t.token,n=t.value||t,o=d[e],a=o.type,i=o["x-tokenName"]||"access_token",l=r&&r[i],c=r&&r.token_type;if(t)if("apiKey"===a){var p="query"===o.in?"query":"headers";s[p]=s[p]||{},s[p][o.name]=n}else if("basic"===a)if(n.header)s.headers.authorization=n.header;else{var f,h=n.username||"",m=n.password||"";n.base64=jr(j()(f="".concat(h,":")).call(f,m)),s.headers.authorization="Basic ".concat(n.base64)}else if("oauth2"===a&&l){var g;c=c&&"bearer"!==c.toLowerCase()?c:"Bearer",s.headers.authorization=j()(g="".concat(c," ")).call(g,l)}}}))})),s}({request:t,securities:i,operation:a,spec:o}),t.body||t.form||u)if(s)t.headers["Content-Type"]=s;else if(Array.isArray(a.consumes)){var c=m()(a.consumes,1);t.headers["Content-Type"]=c[0]}else if(Array.isArray(o.consumes)){var p=m()(o.consumes,1);t.headers["Content-Type"]=p[0]}else a.parameters&&P()(r=a.parameters).call(r,(function(e){return"file"===e.type})).length?t.headers["Content-Type"]="multipart/form-data":a.parameters&&P()(n=a.parameters).call(n,(function(e){return"formData"===e.in})).length&&(t.headers["Content-Type"]="application/x-www-form-urlencoded");else if(s){var f,h,d=a.parameters&&P()(f=a.parameters).call(f,(function(e){return"body"===e.in})).length>0,g=a.parameters&&P()(h=a.parameters).call(h,(function(e){return"formData"===e.in})).length>0;(d||g)&&(t.headers["Content-Type"]=s)}return!l&&Array.isArray(a.produces)&&a.produces.length>0&&(t.headers.accept=a.produces.join(", ")),t}var Tr=["http","fetch","spec","operationId","pathName","method","parameters","securities"],Pr=function(e){return Array.isArray(e)?e:[]},Rr=Ct("OperationNotFoundError",(function(e,t,r){this.originalError=r,Ee()(this,t||{})})),Mr={buildRequest:Lr};function Dr(e){var t=e.http,r=e.fetch,n=e.spec,o=e.operationId,a=e.pathName,i=e.method,s=e.parameters,l=e.securities,u=dr()(e,Tr),c=t||r||Y;a&&i&&!o&&(o=(0,cr.nc)(a,i));var p=Mr.buildRequest(me()({spec:n,operationId:o,parameters:s,securities:l,http:c},u));return p.body&&(br(p.body)||Array.isArray(p.body))&&(p.body=_()(p.body)),c(p)}function Lr(e){var t,r,n=e.spec,o=e.operationId,i=e.responseContentType,s=e.scheme,l=e.requestInterceptor,u=e.responseInterceptor,c=e.contextUrl,p=e.userFetch,f=e.server,h=e.serverVariables,d=e.http,g=e.signal,v=e.parameters,y=e.parameterBuilders,b=(0,cr.z6)(n);y||(y=b?a:wr);var w={url:"",credentials:d&&d.withCredentials?"include":"same-origin",headers:{},cookies:{}};g&&(w.signal=g),l&&(w.requestInterceptor=l),u&&(w.responseInterceptor=u),p&&(w.userFetch=p);var E=(0,cr.$r)(n,o);if(!E)throw new Rr("Operation ".concat(o," not found"));var x,_=E.operation,S=void 0===_?{}:_,k=E.method,O=E.pathName;if(w.url+=(x={spec:n,scheme:s,contextUrl:c,server:f,serverVariables:h,pathName:O,method:k},(0,cr.z6)(x.spec)?function(e){var t=e.spec,r=e.pathName,n=e.method,o=e.server,a=e.contextUrl,i=e.serverVariables,s=void 0===i?{}:i,l=gr()(t,["paths",r,(n||"").toLowerCase(),"servers"])||gr()(t,["paths",r,"servers"])||gr()(t,["servers"]),u="",c=null;if(o&&l&&l.length){var p=A()(l).call(l,(function(e){return e.url}));p.indexOf(o)>-1&&(u=o,c=l[p.indexOf(o)])}if(!u&&l&&l.length){u=l[0].url;var f=m()(l,1);c=f[0]}return u.indexOf("{")>-1&&function(e){for(var t,r=[],n=/{([^}]+)}/g;t=n.exec(e);)r.push(t[1]);return r}(u).forEach((function(e){if(c.variables&&c.variables[e]){var t=c.variables[e],r=s[e]||t.default,n=new RegExp("{".concat(e,"}"),"g");u=u.replace(n,r)}})),function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=r&&n?kt.parse(kt.resolve(n,r)):kt.parse(r),a=kt.parse(n),i=Br(o.protocol)||Br(a.protocol)||"",s=o.host||a.host,l=o.pathname||"";return"/"===(e=i&&s?j()(t="".concat(i,"://")).call(t,s+l):l)[e.length-1]?$()(e).call(e,0,-1):e}(u,a)}(x):function(e){var t,r,n=e.spec,o=e.scheme,a=e.contextUrl,i=void 0===a?"":a,s=kt.parse(i),l=Array.isArray(n.schemes)?n.schemes[0]:null,u=o||l||Br(s.protocol)||"http",c=n.host||s.host||"",p=n.basePath||"";return"/"===(t=u&&c?j()(r="".concat(u,"://")).call(r,c+p):p)[t.length-1]?$()(t).call(t,0,-1):t}(x)),!o)return delete w.cookies,w;w.url+=O,w.method="".concat(k).toUpperCase(),v=v||{};var I=n.paths[O]||{};i&&(w.headers.accept=i);var N=function(e){var t={};e.forEach((function(e){t[e.in]||(t[e.in]={}),t[e.in][e.name]=e}));var r=[];return C()(t).forEach((function(e){C()(t[e]).forEach((function(n){r.push(t[e][n])}))})),r}(j()(t=j()(r=[]).call(r,Pr(S.parameters))).call(t,Pr(I.parameters)));N.forEach((function(e){var t,r,o=y[e.in];if("body"===e.in&&e.schema&&e.schema.properties&&(t=v),void 0===(t=e&&e.name&&v[e.name]))t=e&&e.name&&v[j()(r="".concat(e.in,".")).call(r,e.name)];else if(function(e,t){return P()(t).call(t,(function(t){return t.name===e}))}(e.name,N).length>1){var a;console.warn(j()(a="Parameter '".concat(e.name,"' is ambiguous because the defined spec has more than one parameter with the name: '")).call(a,e.name,"' and the passed-in parameter values did not define an 'in' value."))}if(null!==t){if(void 0!==e.default&&void 0===t&&(t=e.default),void 0===t&&e.required&&!e.allowEmptyValue)throw new Error("Required parameter ".concat(e.name," is not provided"));if(b&&e.schema&&"object"===e.schema.type&&"string"==typeof t)try{t=JSON.parse(t)}catch(e){throw new Error("Could not parse object parameter value string as JSON")}o&&o({req:w,parameter:e,value:t,operation:S,spec:n})}}));var T=me()(me()({},e),{},{operation:S});if((w=b?Ir(T,w):Nr(T,w)).cookies&&C()(w.cookies).length){var R=C()(w.cookies).reduce((function(e,t){var r=w.cookies[t];return e+(e?"&":"")+vr.serialize(t,r)}),"");w.headers.Cookie=R}return w.cookies&&delete w.cookies,fe(w),w}var Br=function(e){return e?e.replace(/\W/g,""):null};function Fr(e,t){return zr.apply(this,arguments)}function zr(){return zr=s()(u().mark((function e(t,r){var n,o,a,i,s,l,c,p,f,h,d,m,g=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=g.length>2&&void 0!==g[2]?g[2]:{},o=n.returnEntireTree,a=n.baseDoc,i=n.requestInterceptor,s=n.responseInterceptor,l=n.parameterMacro,c=n.modelPropertyMacro,p=n.useCircularStructures,f={pathDiscriminator:r,baseDoc:a,requestInterceptor:i,responseInterceptor:s,parameterMacro:l,modelPropertyMacro:c,useCircularStructures:p},h=(0,cr.K1)({spec:t}),d=h.spec,e.next=6,fr(me()(me()({},f),{},{spec:d,allowMetaPatches:!0,skipNormalization:!0}));case 6:return m=e.sent,!o&&Array.isArray(r)&&r.length&&(m.spec=gr()(m.spec,r)||null),e.abrupt("return",m);case 9:case"end":return e.stop()}}),e)}))),zr.apply(this,arguments)}var Ur=r(34852);function qr(e){let{configs:t,getConfigs:r}=e;return{fn:{fetch:(n=Y,o=t.preFetch,a=t.postFetch,a=a||function(e){return e},o=o||function(e){return e},function(e){return"string"==typeof e&&(e={url:e}),Z.mergeInQueryOrForm(e),e=o(e),a(n(e))}),buildRequest:Lr,execute:Dr,resolve:fr,resolveSubtree:function(e,t,n){if(void 0===n){const e=r();n={modelPropertyMacro:e.modelPropertyMacro,parameterMacro:e.parameterMacro,requestInterceptor:e.requestInterceptor,responseInterceptor:e.responseInterceptor}}for(var o=arguments.length,a=new Array(o>3?o-3:0),i=3;i{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(90242);function o(){return{fn:{shallowEqualKeys:n.be}}}},48347:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getDisplayName:()=>n});const n=e=>e.displayName||e.name||"Component"},73420:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(35627),o=r.n(n),a=r(90242),i=r(55776),s=r(48347),l=r(60314);const u=e=>{let{getComponents:t,getStore:r,getSystem:n}=e;const u=(c=(0,i.getComponent)(n,r,t),(0,a.HP)(c,(function(){for(var e=arguments.length,t=new Array(e),r=0;r(0,l.Z)(e,(function(){for(var e=arguments.length,t=new Array(e),r=0;r{"use strict";r.r(t),r.d(t,{getComponent:()=>ne,render:()=>re,withMappedContainer:()=>te});var n=r(23101),o=r.n(n),a=r(28222),i=r.n(a),s=r(67294),l=r(73935),u=r(97779),c=s.createContext(null);var p=function(e){e()},f=function(){return p},h={notify:function(){}};var d=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=h,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=function(){var e=f(),t=null,r=null;return{clear:function(){t=null,r=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],r=t;r;)e.push(r),r=r.next;return e},subscribe:function(e){var n=!0,o=r={callback:e,next:null,prev:r};return o.prev?o.prev.next=o:t=o,function(){n&&null!==t&&(n=!1,o.next?o.next.prev=o.prev:r=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=h)},e}(),m="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?s.useLayoutEffect:s.useEffect;const g=function(e){var t=e.store,r=e.context,n=e.children,o=(0,s.useMemo)((function(){var e=new d(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),a=(0,s.useMemo)((function(){return t.getState()}),[t]);m((function(){var e=o.subscription;return e.trySubscribe(),a!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[o,a]);var i=r||c;return s.createElement(i.Provider,{value:o},n)};var v=r(87462),y=r(63366),b=r(8679),w=r.n(b),E=r(72973),x=[],_=[null,null];function S(e,t){var r=e[1];return[t.payload,r+1]}function A(e,t,r){m((function(){return e.apply(void 0,t)}),r)}function k(e,t,r,n,o,a,i){e.current=n,t.current=o,r.current=!1,a.current&&(a.current=null,i())}function C(e,t,r,n,o,a,i,s,l,u){if(e){var c=!1,p=null,f=function(){if(!c){var e,r,f=t.getState();try{e=n(f,o.current)}catch(e){r=e,p=e}r||(p=null),e===a.current?i.current||l():(a.current=e,s.current=e,i.current=!0,u({type:"STORE_UPDATED",payload:{error:r}}))}};r.onStateChange=f,r.trySubscribe(),f();return function(){if(c=!0,r.tryUnsubscribe(),r.onStateChange=null,p)throw p}}}var O=function(){return[null,0]};function j(e,t){void 0===t&&(t={});var r=t,n=r.getDisplayName,o=void 0===n?function(e){return"ConnectAdvanced("+e+")"}:n,a=r.methodName,i=void 0===a?"connectAdvanced":a,l=r.renderCountProp,u=void 0===l?void 0:l,p=r.shouldHandleStateChanges,f=void 0===p||p,h=r.storeKey,m=void 0===h?"store":h,g=(r.withRef,r.forwardRef),b=void 0!==g&&g,j=r.context,I=void 0===j?c:j,N=(0,y.Z)(r,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]),T=I;return function(t){var r=t.displayName||t.name||"Component",n=o(r),a=(0,v.Z)({},N,{getDisplayName:o,methodName:i,renderCountProp:u,shouldHandleStateChanges:f,storeKey:m,displayName:n,wrappedComponentName:r,WrappedComponent:t}),l=N.pure;var c=l?s.useMemo:function(e){return e()};function p(r){var n=(0,s.useMemo)((function(){var e=r.reactReduxForwardedRef,t=(0,y.Z)(r,["reactReduxForwardedRef"]);return[r.context,e,t]}),[r]),o=n[0],i=n[1],l=n[2],u=(0,s.useMemo)((function(){return o&&o.Consumer&&(0,E.isContextConsumer)(s.createElement(o.Consumer,null))?o:T}),[o,T]),p=(0,s.useContext)(u),h=Boolean(r.store)&&Boolean(r.store.getState)&&Boolean(r.store.dispatch);Boolean(p)&&Boolean(p.store);var m=h?r.store:p.store,g=(0,s.useMemo)((function(){return function(t){return e(t.dispatch,a)}(m)}),[m]),b=(0,s.useMemo)((function(){if(!f)return _;var e=new d(m,h?null:p.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[m,h,p]),w=b[0],j=b[1],I=(0,s.useMemo)((function(){return h?p:(0,v.Z)({},p,{subscription:w})}),[h,p,w]),N=(0,s.useReducer)(S,x,O),P=N[0][0],R=N[1];if(P&&P.error)throw P.error;var M=(0,s.useRef)(),D=(0,s.useRef)(l),L=(0,s.useRef)(),B=(0,s.useRef)(!1),F=c((function(){return L.current&&l===D.current?L.current:g(m.getState(),l)}),[m,P,l]);A(k,[D,M,B,l,F,L,j]),A(C,[f,m,w,g,D,M,B,L,j,R],[m,w,g]);var z=(0,s.useMemo)((function(){return s.createElement(t,(0,v.Z)({},F,{ref:i}))}),[i,t,F]);return(0,s.useMemo)((function(){return f?s.createElement(u.Provider,{value:I},z):z}),[u,z,I])}var h=l?s.memo(p):p;if(h.WrappedComponent=t,h.displayName=p.displayName=n,b){var g=s.forwardRef((function(e,t){return s.createElement(h,(0,v.Z)({},e,{reactReduxForwardedRef:t}))}));return g.displayName=n,g.WrappedComponent=t,w()(g,t)}return w()(h,t)}}function I(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function N(e,t){if(I(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(var o=0;o=0;n--){var o=t[n](e);if(o)return o}return function(t,n){throw new Error("Invalid value of type "+typeof e+" for "+r+" argument when connecting component "+n.wrappedComponentName+".")}}function V(e,t){return e===t}function $(e){var t=void 0===e?{}:e,r=t.connectHOC,n=void 0===r?j:r,o=t.mapStateToPropsFactories,a=void 0===o?D:o,i=t.mapDispatchToPropsFactories,s=void 0===i?M:i,l=t.mergePropsFactories,u=void 0===l?B:l,c=t.selectorFactory,p=void 0===c?U:c;return function(e,t,r,o){void 0===o&&(o={});var i=o,l=i.pure,c=void 0===l||l,f=i.areStatesEqual,h=void 0===f?V:f,d=i.areOwnPropsEqual,m=void 0===d?N:d,g=i.areStatePropsEqual,b=void 0===g?N:g,w=i.areMergedPropsEqual,E=void 0===w?N:w,x=(0,y.Z)(i,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),_=q(e,a,"mapStateToProps"),S=q(t,s,"mapDispatchToProps"),A=q(r,u,"mergeProps");return n(p,(0,v.Z)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:_,initMapDispatchToProps:S,initMergeProps:A,pure:c,areStatesEqual:h,areOwnPropsEqual:m,areStatePropsEqual:b,areMergedPropsEqual:E},x))}}const W=$();var H;H=l.unstable_batchedUpdates,p=H;var J=r(57557),K=r.n(J),G=r(6557),Z=r.n(G);const Y=e=>t=>{const{fn:r}=e();class n extends s.Component{render(){return s.createElement(t,o()({},e(),this.props,this.context))}}return n.displayName=`WithSystem(${r.getDisplayName(t)})`,n},Q=(e,t)=>r=>{const{fn:n}=e();class a extends s.Component{render(){return s.createElement(g,{store:t},s.createElement(r,o()({},this.props,this.context)))}}return a.displayName=`WithRoot(${n.getDisplayName(r)})`,a},X=(e,t,r)=>(0,u.qC)(r?Q(e,r):Z(),W(((r,n)=>{var o;const a={...n,...e()},i=(null===(o=t.prototype)||void 0===o?void 0:o.mapStateToProps)||(e=>({state:e}));return i(r,a)})),Y(e))(t),ee=(e,t,r,n)=>{for(const o in t){const a=t[o];"function"==typeof a&&a(r[o],n[o],e())}},te=(e,t,r)=>(t,n)=>{const{fn:o}=e(),a=r(t,"root");class l extends s.Component{constructor(t,r){super(t,r),ee(e,n,t,{})}UNSAFE_componentWillReceiveProps(t){ee(e,n,t,this.props)}render(){const e=K()(this.props,n?i()(n):[]);return s.createElement(a,e)}}return l.displayName=`WithMappedContainer(${o.getDisplayName(a)})`,l},re=(e,t,r,n)=>o=>{const a=r(e,t,n)("App","root");l.render(s.createElement(a,null),o)},ne=(e,t,r)=>function(n,o){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"!=typeof n)throw new TypeError("Need a string, to fetch a component. Was given a "+typeof n);const i=r(n);return i?o?"root"===o?X(e,i,t()):X(e,i):i:(a.failSilently||e().log.warn("Could not find component:",n),null)}},33424:(e,t,r)=>{"use strict";r.d(t,{d3:()=>D,C2:()=>ee});var n=r(28222),o=r.n(n),a=r(58118),i=r.n(a),s=r(63366);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=4?[t[0],t[1],t[2],t[3],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[2],".").concat(t[3]),"".concat(t[3],".").concat(t[0]),"".concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[0]),"".concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[3],".").concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[2],".").concat(t[1],".").concat(t[0])]:void 0),m[n]}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,n=e.filter((function(e){return"token"!==e})),o=g(n);return o.reduce((function(e,t){return d(d({},e),r[t])}),t)}function y(e){return e.join(" ")}function b(e){var t=e.node,r=e.stylesheet,n=e.style,o=void 0===n?{}:n,a=e.useInlineStyles,i=e.key,s=t.properties,l=t.type,u=t.tagName,c=t.value;if("text"===l)return c;if(u){var h,m=function(e,t){var r=0;return function(n){return r+=1,n.map((function(n,o){return b({node:n,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(r,"-").concat(o)})}))}}(r,a);if(a){var g=Object.keys(r).reduce((function(e,t){return t.split(".").forEach((function(t){e.includes(t)||e.push(t)})),e}),[]),w=s.className&&s.className.includes("token")?["token"]:[],E=s.className&&w.concat(s.className.filter((function(e){return!g.includes(e)})));h=d(d({},s),{},{className:y(E)||void 0,style:v(s.className,Object.assign({},s.style,o),r)})}else h=d(d({},s),{},{className:y(s.className)});var x=m(t.children);return p.createElement(u,(0,f.Z)({key:i},h),x)}}var w=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function x(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=0;n2&&void 0!==arguments[2]?arguments[2]:[];return C({children:e,lineNumber:t,lineNumberStyle:s,largestLineNumber:i,showInlineLineNumbers:o,lineProps:r,className:a,showLineNumbers:n,wrapLongLines:l})}function m(e,t){if(n&&t&&o){var r=k(s,t,i);e.unshift(A(t,r))}return e}function g(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return t||n.length>0?d(e,r,n):m(e,r)}for(var v=function(){var e=c[h],t=e.children[0].value;if(t.match(_)){var r=t.split("\n");r.forEach((function(t,o){var i=n&&p.length+a,s={type:"text",value:"".concat(t,"\n")};if(0===o){var l=g(c.slice(f+1,h).concat(C({children:[s],className:e.properties.className})),i);p.push(l)}else if(o===r.length-1){var u=c[h+1]&&c[h+1].children&&c[h+1].children[0],d={type:"text",value:"".concat(t)};if(u){var m=C({children:[d],className:e.properties.className});c.splice(h+1,0,m)}else{var v=g([d],i,e.properties.className);p.push(v)}}else{var y=g([s],i,e.properties.className);p.push(y)}})),f=h}h++};h=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,w);q=q||T;var $=d?p.createElement(S,{containerStyle:b,codeStyle:u.style||{},numberStyle:_,startingLineNumber:y,codeString:U}):null,W=o.hljs||o['pre[class*="language-"]']||{backgroundColor:"#fff"},H=N(q)?"hljs":"prismjs",J=f?Object.assign({},V,{style:Object.assign({},W,i)}):Object.assign({},V,{className:V.className?"".concat(H," ").concat(V.className):H,style:Object.assign({},i)});if(u.style=x(x({},u.style),{},C?{whiteSpace:"pre-wrap"}:{whiteSpace:"pre"}),!q)return p.createElement(L,J,$,p.createElement(F,u,U));(void 0===A&&M||C)&&(A=!0),M=M||I;var K=[{type:"text",value:U}],G=function(e){var t=e.astGenerator,r=e.language,n=e.code,o=e.defaultCodeValue;if(N(t)){var a=function(e,t){return-1!==e.listLanguages().indexOf(t)}(t,r);return"text"===r?{value:o,language:"text"}:a?t.highlight(r,n):t.highlightAuto(n)}try{return r&&"text"!==r?{value:t.highlight(n,r)}:{value:o}}catch(e){return{value:o}}}({astGenerator:q,language:t,code:U,defaultCodeValue:K});null===G.language&&(G.value=K);var Z=j(G,A,R,d,g,y,G.value.length+y,_,C);return p.createElement(L,J,p.createElement(F,u,!g&&$,M({rows:Z,stylesheet:o,useInlineStyles:f})))});M.registerLanguage=R.registerLanguage;const D=M;var L=r(96344);const B=r.n(L)();var F=r(82026);const z=r.n(F)();var U=r(42157);const q=r.n(U)();var V=r(61519);const $=r.n(V)();var W=r(54587);const H=r.n(W)();var J=r(30786);const K=r.n(J)();var G=r(66336);const Z=r.n(G)(),Y={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#333",color:"white"},"hljs-name":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-code":{fontStyle:"italic",color:"#888"},"hljs-emphasis":{fontStyle:"italic"},"hljs-tag":{color:"#62c8f3"},"hljs-variable":{color:"#ade5fc"},"hljs-template-variable":{color:"#ade5fc"},"hljs-selector-id":{color:"#ade5fc"},"hljs-selector-class":{color:"#ade5fc"},"hljs-string":{color:"#a2fca2"},"hljs-bullet":{color:"#d36363"},"hljs-type":{color:"#ffa"},"hljs-title":{color:"#ffa"},"hljs-section":{color:"#ffa"},"hljs-attribute":{color:"#ffa"},"hljs-quote":{color:"#ffa"},"hljs-built_in":{color:"#ffa"},"hljs-builtin-name":{color:"#ffa"},"hljs-number":{color:"#d36363"},"hljs-symbol":{color:"#d36363"},"hljs-keyword":{color:"#fcc28c"},"hljs-selector-tag":{color:"#fcc28c"},"hljs-literal":{color:"#fcc28c"},"hljs-comment":{color:"#888"},"hljs-deletion":{color:"#333",backgroundColor:"#fc9b9b"},"hljs-regexp":{color:"#c6b4f0"},"hljs-link":{color:"#c6b4f0"},"hljs-meta":{color:"#fc9b9b"},"hljs-addition":{backgroundColor:"#a2fca2",color:"#333"}};D.registerLanguage("json",z),D.registerLanguage("js",B),D.registerLanguage("xml",q),D.registerLanguage("yaml",H),D.registerLanguage("http",K),D.registerLanguage("bash",$),D.registerLanguage("powershell",Z),D.registerLanguage("javascript",B);const Q={agate:Y,arta:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#222",color:"#aaa"},"hljs-subst":{color:"#aaa"},"hljs-section":{color:"#fff",fontWeight:"bold"},"hljs-comment":{color:"#444"},"hljs-quote":{color:"#444"},"hljs-meta":{color:"#444"},"hljs-string":{color:"#ffcc33"},"hljs-symbol":{color:"#ffcc33"},"hljs-bullet":{color:"#ffcc33"},"hljs-regexp":{color:"#ffcc33"},"hljs-number":{color:"#00cc66"},"hljs-addition":{color:"#00cc66"},"hljs-built_in":{color:"#32aaee"},"hljs-builtin-name":{color:"#32aaee"},"hljs-literal":{color:"#32aaee"},"hljs-type":{color:"#32aaee"},"hljs-template-variable":{color:"#32aaee"},"hljs-attribute":{color:"#32aaee"},"hljs-link":{color:"#32aaee"},"hljs-keyword":{color:"#6644aa"},"hljs-selector-tag":{color:"#6644aa"},"hljs-name":{color:"#6644aa"},"hljs-selector-id":{color:"#6644aa"},"hljs-selector-class":{color:"#6644aa"},"hljs-title":{color:"#bb1166"},"hljs-variable":{color:"#bb1166"},"hljs-deletion":{color:"#bb1166"},"hljs-template-tag":{color:"#bb1166"},"hljs-doctag":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-emphasis":{fontStyle:"italic"}},monokai:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#272822",color:"#ddd"},"hljs-tag":{color:"#f92672"},"hljs-keyword":{color:"#f92672",fontWeight:"bold"},"hljs-selector-tag":{color:"#f92672",fontWeight:"bold"},"hljs-literal":{color:"#f92672",fontWeight:"bold"},"hljs-strong":{color:"#f92672"},"hljs-name":{color:"#f92672"},"hljs-code":{color:"#66d9ef"},"hljs-class .hljs-title":{color:"white"},"hljs-attribute":{color:"#bf79db"},"hljs-symbol":{color:"#bf79db"},"hljs-regexp":{color:"#bf79db"},"hljs-link":{color:"#bf79db"},"hljs-string":{color:"#a6e22e"},"hljs-bullet":{color:"#a6e22e"},"hljs-subst":{color:"#a6e22e"},"hljs-title":{color:"#a6e22e",fontWeight:"bold"},"hljs-section":{color:"#a6e22e",fontWeight:"bold"},"hljs-emphasis":{color:"#a6e22e"},"hljs-type":{color:"#a6e22e",fontWeight:"bold"},"hljs-built_in":{color:"#a6e22e"},"hljs-builtin-name":{color:"#a6e22e"},"hljs-selector-attr":{color:"#a6e22e"},"hljs-selector-pseudo":{color:"#a6e22e"},"hljs-addition":{color:"#a6e22e"},"hljs-variable":{color:"#a6e22e"},"hljs-template-tag":{color:"#a6e22e"},"hljs-template-variable":{color:"#a6e22e"},"hljs-comment":{color:"#75715e"},"hljs-quote":{color:"#75715e"},"hljs-deletion":{color:"#75715e"},"hljs-meta":{color:"#75715e"},"hljs-doctag":{fontWeight:"bold"},"hljs-selector-id":{fontWeight:"bold"}},nord:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#2E3440",color:"#D8DEE9"},"hljs-subst":{color:"#D8DEE9"},"hljs-selector-tag":{color:"#81A1C1"},"hljs-selector-id":{color:"#8FBCBB",fontWeight:"bold"},"hljs-selector-class":{color:"#8FBCBB"},"hljs-selector-attr":{color:"#8FBCBB"},"hljs-selector-pseudo":{color:"#88C0D0"},"hljs-addition":{backgroundColor:"rgba(163, 190, 140, 0.5)"},"hljs-deletion":{backgroundColor:"rgba(191, 97, 106, 0.5)"},"hljs-built_in":{color:"#8FBCBB"},"hljs-type":{color:"#8FBCBB"},"hljs-class":{color:"#8FBCBB"},"hljs-function":{color:"#88C0D0"},"hljs-function > .hljs-title":{color:"#88C0D0"},"hljs-keyword":{color:"#81A1C1"},"hljs-literal":{color:"#81A1C1"},"hljs-symbol":{color:"#81A1C1"},"hljs-number":{color:"#B48EAD"},"hljs-regexp":{color:"#EBCB8B"},"hljs-string":{color:"#A3BE8C"},"hljs-title":{color:"#8FBCBB"},"hljs-params":{color:"#D8DEE9"},"hljs-bullet":{color:"#81A1C1"},"hljs-code":{color:"#8FBCBB"},"hljs-emphasis":{fontStyle:"italic"},"hljs-formula":{color:"#8FBCBB"},"hljs-strong":{fontWeight:"bold"},"hljs-link:hover":{textDecoration:"underline"},"hljs-quote":{color:"#4C566A"},"hljs-comment":{color:"#4C566A"},"hljs-doctag":{color:"#8FBCBB"},"hljs-meta":{color:"#5E81AC"},"hljs-meta-keyword":{color:"#5E81AC"},"hljs-meta-string":{color:"#A3BE8C"},"hljs-attr":{color:"#8FBCBB"},"hljs-attribute":{color:"#D8DEE9"},"hljs-builtin-name":{color:"#81A1C1"},"hljs-name":{color:"#81A1C1"},"hljs-section":{color:"#88C0D0"},"hljs-tag":{color:"#81A1C1"},"hljs-variable":{color:"#D8DEE9"},"hljs-template-variable":{color:"#D8DEE9"},"hljs-template-tag":{color:"#5E81AC"},"abnf .hljs-attribute":{color:"#88C0D0"},"abnf .hljs-symbol":{color:"#EBCB8B"},"apache .hljs-attribute":{color:"#88C0D0"},"apache .hljs-section":{color:"#81A1C1"},"arduino .hljs-built_in":{color:"#88C0D0"},"aspectj .hljs-meta":{color:"#D08770"},"aspectj > .hljs-title":{color:"#88C0D0"},"bnf .hljs-attribute":{color:"#8FBCBB"},"clojure .hljs-name":{color:"#88C0D0"},"clojure .hljs-symbol":{color:"#EBCB8B"},"coq .hljs-built_in":{color:"#88C0D0"},"cpp .hljs-meta-string":{color:"#8FBCBB"},"css .hljs-built_in":{color:"#88C0D0"},"css .hljs-keyword":{color:"#D08770"},"diff .hljs-meta":{color:"#8FBCBB"},"ebnf .hljs-attribute":{color:"#8FBCBB"},"glsl .hljs-built_in":{color:"#88C0D0"},"groovy .hljs-meta:not(:first-child)":{color:"#D08770"},"haxe .hljs-meta":{color:"#D08770"},"java .hljs-meta":{color:"#D08770"},"ldif .hljs-attribute":{color:"#8FBCBB"},"lisp .hljs-name":{color:"#88C0D0"},"lua .hljs-built_in":{color:"#88C0D0"},"moonscript .hljs-built_in":{color:"#88C0D0"},"nginx .hljs-attribute":{color:"#88C0D0"},"nginx .hljs-section":{color:"#5E81AC"},"pf .hljs-built_in":{color:"#88C0D0"},"processing .hljs-built_in":{color:"#88C0D0"},"scss .hljs-keyword":{color:"#81A1C1"},"stylus .hljs-keyword":{color:"#81A1C1"},"swift .hljs-meta":{color:"#D08770"},"vim .hljs-built_in":{color:"#88C0D0",fontStyle:"italic"},"yaml .hljs-meta":{color:"#D08770"}},obsidian:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#282b2e",color:"#e0e2e4"},"hljs-keyword":{color:"#93c763",fontWeight:"bold"},"hljs-selector-tag":{color:"#93c763",fontWeight:"bold"},"hljs-literal":{color:"#93c763",fontWeight:"bold"},"hljs-selector-id":{color:"#93c763"},"hljs-number":{color:"#ffcd22"},"hljs-attribute":{color:"#668bb0"},"hljs-code":{color:"white"},"hljs-class .hljs-title":{color:"white"},"hljs-section":{color:"white",fontWeight:"bold"},"hljs-regexp":{color:"#d39745"},"hljs-link":{color:"#d39745"},"hljs-meta":{color:"#557182"},"hljs-tag":{color:"#8cbbad"},"hljs-name":{color:"#8cbbad",fontWeight:"bold"},"hljs-bullet":{color:"#8cbbad"},"hljs-subst":{color:"#8cbbad"},"hljs-emphasis":{color:"#8cbbad"},"hljs-type":{color:"#8cbbad",fontWeight:"bold"},"hljs-built_in":{color:"#8cbbad"},"hljs-selector-attr":{color:"#8cbbad"},"hljs-selector-pseudo":{color:"#8cbbad"},"hljs-addition":{color:"#8cbbad"},"hljs-variable":{color:"#8cbbad"},"hljs-template-tag":{color:"#8cbbad"},"hljs-template-variable":{color:"#8cbbad"},"hljs-string":{color:"#ec7600"},"hljs-symbol":{color:"#ec7600"},"hljs-comment":{color:"#818e96"},"hljs-quote":{color:"#818e96"},"hljs-deletion":{color:"#818e96"},"hljs-selector-class":{color:"#A082BD"},"hljs-doctag":{fontWeight:"bold"},"hljs-title":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"}},"tomorrow-night":{"hljs-comment":{color:"#969896"},"hljs-quote":{color:"#969896"},"hljs-variable":{color:"#cc6666"},"hljs-template-variable":{color:"#cc6666"},"hljs-tag":{color:"#cc6666"},"hljs-name":{color:"#cc6666"},"hljs-selector-id":{color:"#cc6666"},"hljs-selector-class":{color:"#cc6666"},"hljs-regexp":{color:"#cc6666"},"hljs-deletion":{color:"#cc6666"},"hljs-number":{color:"#de935f"},"hljs-built_in":{color:"#de935f"},"hljs-builtin-name":{color:"#de935f"},"hljs-literal":{color:"#de935f"},"hljs-type":{color:"#de935f"},"hljs-params":{color:"#de935f"},"hljs-meta":{color:"#de935f"},"hljs-link":{color:"#de935f"},"hljs-attribute":{color:"#f0c674"},"hljs-string":{color:"#b5bd68"},"hljs-symbol":{color:"#b5bd68"},"hljs-bullet":{color:"#b5bd68"},"hljs-addition":{color:"#b5bd68"},"hljs-title":{color:"#81a2be"},"hljs-section":{color:"#81a2be"},"hljs-keyword":{color:"#b294bb"},"hljs-selector-tag":{color:"#b294bb"},hljs:{display:"block",overflowX:"auto",background:"#1d1f21",color:"#c5c8c6",padding:"0.5em"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}}},X=o()(Q),ee=e=>i()(X).call(X,e)?Q[e]:(console.warn(`Request style '${e}' is not available, returning default instead`),Y)},90242:(e,t,r)=>{"use strict";r.d(t,{mz:()=>pe,oG:()=>fe,AF:()=>he,LQ:()=>de,Kn:()=>me,Wl:()=>ge,kJ:()=>ve,HP:()=>ye,Ay:()=>be,Q2:()=>we,_5:()=>Ee,iQ:()=>xe,gp:()=>_e,DR:()=>Se,Zl:()=>Ae,Ik:()=>Ce,xi:()=>Pe,UG:()=>Re,r3:()=>Me,wh:()=>De,GZ:()=>Le,be:()=>Be,Nm:()=>Fe,hW:()=>ze,QG:()=>Ue,oJ:()=>qe,J6:()=>Ve,nX:()=>$e,po:()=>We,XV:()=>He,Pz:()=>Je,D$:()=>Ke,V9:()=>Ge,cz:()=>Ze,Uj:()=>Ye,Xb:()=>Qe,O2:()=>et});var n=r(58309),o=r.n(n),a=r(97606),i=r.n(a),s=r(74386),l=r.n(s),u=r(86),c=r.n(u),p=r(14418),f=r.n(p),h=r(28222),d=r.n(h),m=(r(11189),r(24282)),g=r.n(m),v=r(76986),y=r.n(v),b=r(2578),w=r.n(b),E=r(24278),x=r.n(E),_=(r(39022),r(92039)),S=r.n(_),A=(r(58118),r(35627)),k=r.n(A),C=r(11882),O=r.n(C),j=r(51679),I=r.n(j),N=r(27043),T=r.n(N),P=r(81607),R=r.n(P),M=r(43393),D=r.n(M),L=r(17967),B=r(68929),F=r.n(B),z=r(11700),U=r.n(z),q=r(88306),V=r.n(q),$=r(13311),W=r.n($),H=r(59704),J=r.n(H),K=r(77813),G=r.n(K),Z=r(23560),Y=r.n(Z),Q=r(57050),X=r(27504),ee=r(8269),te=r.n(ee),re=r(19069),ne=r(92282),oe=r.n(ne),ae=r(89072),ie=r.n(ae),se=r(1272),le=r(48764).Buffer;const ue="default",ce=e=>D().Iterable.isIterable(e);function pe(e){return me(e)?ce(e)?e.toJS():e:{}}function fe(e){var t,r;if(ce(e))return e;if(e instanceof X.Z.File)return e;if(!me(e))return e;if(o()(e))return i()(r=D().Seq(e)).call(r,fe).toList();if(Y()(l()(e))){var n;const t=function(e){if(!Y()(l()(e)))return e;const t={},r="_**[]",n={};for(let o of l()(e).call(e))if(t[o[0]]||n[o[0]]&&n[o[0]].containsMultiple){if(!n[o[0]]){n[o[0]]={containsMultiple:!0,length:1},t[`${o[0]}${r}${n[o[0]].length}`]=t[o[0]],delete t[o[0]]}n[o[0]].length+=1,t[`${o[0]}${r}${n[o[0]].length}`]=o[1]}else t[o[0]]=o[1];return t}(e);return i()(n=D().OrderedMap(t)).call(n,fe)}return i()(t=D().OrderedMap(e)).call(t,fe)}function he(e){return o()(e)?e:[e]}function de(e){return"function"==typeof e}function me(e){return!!e&&"object"==typeof e}function ge(e){return"function"==typeof e}function ve(e){return o()(e)}const ye=V();function be(e,t){var r;return g()(r=d()(e)).call(r,((r,n)=>(r[n]=t(e[n],n),r)),{})}function we(e,t){var r;return g()(r=d()(e)).call(r,((r,n)=>{let o=t(e[n],n);return o&&"object"==typeof o&&y()(r,o),r}),{})}function Ee(e){return t=>{let{dispatch:r,getState:n}=t;return t=>r=>"function"==typeof r?r(e()):t(r)}}function xe(e){var t;let r=e.keySeq();return r.contains(ue)?ue:w()(t=f()(r).call(r,(e=>"2"===(e+"")[0]))).call(t).first()}function _e(e,t){if(!D().Iterable.isIterable(e))return D().List();let r=e.getIn(o()(t)?t:[t]);return D().List.isList(r)?r:D().List()}function Se(e){let t,r=[/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=[^']+'\w*'([^;]+);?/i,/filename="([^;]*);?"/i,/filename=([^;]*);?/i];if(S()(r).call(r,(r=>(t=r.exec(e),null!==t))),null!==t&&t.length>1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}function Ae(e){return t=e.replace(/\.[^./]*$/,""),U()(F()(t));var t}function ke(e,t,r,n,a){if(!t)return[];let s=[],l=t.get("nullable"),u=t.get("required"),p=t.get("maximum"),h=t.get("minimum"),d=t.get("type"),m=t.get("format"),g=t.get("maxLength"),v=t.get("minLength"),y=t.get("uniqueItems"),b=t.get("maxItems"),w=t.get("minItems"),E=t.get("pattern");const x=r||!0===u,_=null!=e;if(l&&null===e||!d||!(x||_&&"array"===d||!(!x&&!_)))return[];let A="string"===d&&e,k="array"===d&&o()(e)&&e.length,C="array"===d&&D().List.isList(e)&&e.count();const O=[A,k,C,"array"===d&&"string"==typeof e&&e,"file"===d&&e instanceof X.Z.File,"boolean"===d&&(e||!1===e),"number"===d&&(e||0===e),"integer"===d&&(e||0===e),"object"===d&&"object"==typeof e&&null!==e,"object"===d&&"string"==typeof e&&e],j=S()(O).call(O,(e=>!!e));if(x&&!j&&!n)return s.push("Required field is not provided"),s;if("object"===d&&(null===a||"application/json"===a)){let r=e;if("string"==typeof e)try{r=JSON.parse(e)}catch(e){return s.push("Parameter string value must be valid JSON"),s}var I;if(t&&t.has("required")&&ge(u.isList)&&u.isList()&&c()(u).call(u,(e=>{void 0===r[e]&&s.push({propKey:e,error:"Required property not found"})})),t&&t.has("properties"))c()(I=t.get("properties")).call(I,((e,t)=>{const o=ke(r[t],e,!1,n,a);s.push(...i()(o).call(o,(e=>({propKey:t,error:e}))))}))}if(E){let t=((e,t)=>{if(!new RegExp(t).test(e))return"Value must follow pattern "+t})(e,E);t&&s.push(t)}if(w&&"array"===d){let t=((e,t)=>{if(!e&&t>=1||e&&e.length{if(e&&e.length>t)return`Array must not contain more then ${t} item${1===t?"":"s"}`})(e,b);t&&s.push({needRemove:!0,error:t})}if(y&&"array"===d){let t=((e,t)=>{if(e&&("true"===t||!0===t)){const t=(0,M.fromJS)(e),r=t.toSet();if(e.length>r.size){let e=(0,M.Set)();if(c()(t).call(t,((r,n)=>{f()(t).call(t,(e=>ge(e.equals)?e.equals(r):e===r)).size>1&&(e=e.add(n))})),0!==e.size)return i()(e).call(e,(e=>({index:e,error:"No duplicates allowed."}))).toArray()}}})(e,y);t&&s.push(...t)}if(g||0===g){let t=((e,t)=>{if(e.length>t)return`Value must be no longer than ${t} character${1!==t?"s":""}`})(e,g);t&&s.push(t)}if(v){let t=((e,t)=>{if(e.length{if(e>t)return`Value must be less than ${t}`})(e,p);t&&s.push(t)}if(h||0===h){let t=((e,t)=>{if(e{if(isNaN(Date.parse(e)))return"Value must be a DateTime"})(e):"uuid"===m?(e=>{if(e=e.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(e))return"Value must be a Guid"})(e):(e=>{if(e&&"string"!=typeof e)return"Value must be a string"})(e),!t)return s;s.push(t)}else if("boolean"===d){let t=(e=>{if("true"!==e&&"false"!==e&&!0!==e&&!1!==e)return"Value must be a boolean"})(e);if(!t)return s;s.push(t)}else if("number"===d){let t=(e=>{if(!/^-?\d+(\.?\d+)?$/.test(e))return"Value must be a number"})(e);if(!t)return s;s.push(t)}else if("integer"===d){let t=(e=>{if(!/^-?\d+$/.test(e))return"Value must be an integer"})(e);if(!t)return s;s.push(t)}else if("array"===d){if(!k&&!C)return s;e&&c()(e).call(e,((e,r)=>{const o=ke(e,t.get("items"),!1,n,a);s.push(...i()(o).call(o,(e=>({index:r,error:e}))))}))}else if("file"===d){let t=(e=>{if(e&&!(e instanceof X.Z.File))return"Value must be a file"})(e);if(!t)return s;s.push(t)}return s}const Ce=function(e,t){let{isOAS3:r=!1,bypassRequiredCheck:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=e.get("required"),{schema:a,parameterContentMediaType:i}=(0,re.Z)(e,{isOAS3:r});return ke(t,a,o,n,i)},Oe=(e,t,r)=>{if(e&&!e.xml&&(e.xml={}),e&&!e.xml.name){if(!e.$$ref&&(e.type||e.items||e.properties||e.additionalProperties))return'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e';if(e.$$ref){let t=e.$$ref.match(/\S*\/(\S+)$/);e.xml.name=t[1]}}return(0,Q.memoizedCreateXMLExample)(e,t,r)},je=[{when:/json/,shouldStringifyTypes:["string"]}],Ie=["object"],Ne=(e,t,r,n)=>{const o=(0,Q.memoizedSampleFromSchema)(e,t,n),a=typeof o,i=g()(je).call(je,((e,t)=>t.when.test(r)?[...e,...t.shouldStringifyTypes]:e),Ie);return J()(i,(e=>e===a))?k()(o,null,2):o},Te=(e,t,r,n)=>{const o=Ne(e,t,r,n);let a;try{a=se.ZP.dump(se.ZP.load(o),{lineWidth:-1},{schema:se.A8}),"\n"===a[a.length-1]&&(a=x()(a).call(a,0,a.length-1))}catch(e){return console.error(e),"error: could not generate yaml example"}return a.replace(/\t/g," ")},Pe=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return e&&ge(e.toJS)&&(e=e.toJS()),n&&ge(n.toJS)&&(n=n.toJS()),/xml/.test(t)?Oe(e,r,n):/(yaml|yml)/.test(t)?Te(e,r,t,n):Ne(e,r,t,n)},Re=()=>{let e={},t=X.Z.location.search;if(!t)return{};if(""!=t){let r=t.substr(1).split("&");for(let t in r)Object.prototype.hasOwnProperty.call(r,t)&&(t=r[t].split("="),e[decodeURIComponent(t[0])]=t[1]&&decodeURIComponent(t[1])||"")}return e},Me=e=>{let t;return t=e instanceof le?e:le.from(e.toString(),"utf-8"),t.toString("base64")},De={operationsSorter:{alpha:(e,t)=>e.get("path").localeCompare(t.get("path")),method:(e,t)=>e.get("method").localeCompare(t.get("method"))},tagsSorter:{alpha:(e,t)=>e.localeCompare(t)}},Le=e=>{let t=[];for(let r in e){let n=e[r];void 0!==n&&""!==n&&t.push([r,"=",encodeURIComponent(n).replace(/%20/g,"+")].join(""))}return t.join("&")},Be=(e,t,r)=>!!W()(r,(r=>G()(e[r],t[r])));function Fe(e){return"string"!=typeof e||""===e?"":(0,L.N)(e)}function ze(e){return!(!e||O()(e).call(e,"localhost")>=0||O()(e).call(e,"127.0.0.1")>=0||"none"===e)}function Ue(e){if(!D().OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;const t=I()(e).call(e,((e,t)=>T()(t).call(t,"2")&&d()(e.get("content")||{}).length>0)),r=e.get("default")||D().OrderedMap(),n=(r.get("content")||D().OrderedMap()).keySeq().toJS().length?r:null;return t||n}const qe=e=>"string"==typeof e||e instanceof String?R()(e).call(e).replace(/\s/g,"%20"):"",Ve=e=>te()(qe(e).replace(/%20/g,"_")),$e=e=>f()(e).call(e,((e,t)=>/^x-/.test(t))),We=e=>f()(e).call(e,((e,t)=>/^pattern|maxLength|minLength|maximum|minimum/.test(t)));function He(e,t){var r;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>!0;if("object"!=typeof e||o()(e)||null===e||!t)return e;const a=y()({},e);return c()(r=d()(a)).call(r,(e=>{e===t&&n(a[e],e)?delete a[e]:a[e]=He(a[e],t,n)})),a}function Je(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),"object"==typeof e&&null!==e)try{return k()(e,null,2)}catch(t){return String(e)}return null==e?"":e.toString()}function Ke(e){return"number"==typeof e?e.toString():e}function Ge(e){let{returnAll:t=!1,allowHashes:r=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!D().Map.isMap(e))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");const n=e.get("name"),o=e.get("in");let a=[];return e&&e.hashCode&&o&&n&&r&&a.push(`${o}.${n}.hash-${e.hashCode()}`),o&&n&&a.push(`${o}.${n}`),a.push(n),t?a:a[0]||""}function Ze(e,t){var r;const n=Ge(e,{returnAll:!0});return f()(r=i()(n).call(n,(e=>t[e]))).call(r,(e=>void 0!==e))[0]}function Ye(){return Xe(oe()(32).toString("base64"))}function Qe(e){return Xe(ie()("sha256").update(e).digest("base64"))}function Xe(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}const et=e=>!e||!(!ce(e)||!e.isEmpty())},2518:(e,t,r)=>{"use strict";function n(e){return function(e){try{return!!JSON.parse(e)}catch(e){return null}}(e)?"json":null}r.d(t,{O:()=>n})},27504:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});const n=function(){var e={location:{},history:{},open:()=>{},close:()=>{},File:function(){}};if("undefined"==typeof window)return e;try{e=window;for(var t of["File","Blob","FormData"])t in window&&(e[t]=window[t])}catch(e){console.error(e)}return e}()},19069:(e,t,r)=>{"use strict";r.d(t,{Z:()=>c});var n=r(14418),o=r.n(n),a=r(58118),i=r.n(a),s=r(43393),l=r.n(s);const u=l().Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");function c(e){let{isOAS3:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!l().Map.isMap(e))return{schema:l().Map(),parameterContentMediaType:null};if(!t)return"body"===e.get("in")?{schema:e.get("schema",l().Map()),parameterContentMediaType:null}:{schema:o()(e).call(e,((e,t)=>i()(u).call(u,t))),parameterContentMediaType:null};if(e.get("content")){const t=e.get("content",l().Map({})).keySeq().first();return{schema:e.getIn(["content",t,"schema"],l().Map()),parameterContentMediaType:t}}return{schema:e.get("schema")?e.get("schema",l().Map()):l().Map(),parameterContentMediaType:null}}},60314:(e,t,r)=>{"use strict";r.d(t,{Z:()=>x});var n=r(58309),o=r.n(n),a=r(2250),i=r.n(a),s=r(25110),l=r.n(s),u=r(8712),c=r.n(u),p=r(51679),f=r.n(p),h=r(12373),d=r.n(h),m=r(18492),g=r.n(m),v=r(88306),y=r.n(v);const b=e=>t=>o()(e)&&o()(t)&&e.length===t.length&&i()(e).call(e,((e,r)=>e===t[r])),w=function(){for(var e=arguments.length,t=new Array(e),r=0;r1&&void 0!==arguments[1]?arguments[1]:w;const{Cache:r}=y();y().Cache=E;const n=y()(e,t);return y().Cache=r,n}},79742:(e,t)=>{"use strict";t.byteLength=function(e){var t=l(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,a=l(e),i=a[0],s=a[1],u=new o(function(e,t,r){return 3*(t+r)/4-r}(0,i,s)),c=0,p=s>0?i-4:i;for(r=0;r>16&255,u[c++]=t>>8&255,u[c++]=255&t;2===s&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[c++]=255&t);1===s&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[c++]=t>>8&255,u[c++]=255&t);return u},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,a=[],i=16383,s=0,l=n-o;sl?l:s+i));1===o?(t=e[n-1],a.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],a.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return a.join("")};for(var r=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,s=a.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function u(e,t,n){for(var o,a,i=[],s=t;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return i.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},48764:(e,t,r)=>{"use strict";const n=r(79742),o=r(80645),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=l,t.SlowBuffer=function(e){+e!=e&&(e=0);return l.alloc(+e)},t.INSPECT_MAX_BYTES=50;const i=2147483647;function s(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return p(e)}return u(e,t,r)}function u(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|m(e,t);let n=s(r);const o=n.write(e,t);o!==r&&(n=n.slice(0,o));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(G(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(G(e,ArrayBuffer)||e&&G(e.buffer,ArrayBuffer))return h(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(G(e,SharedArrayBuffer)||e&&G(e.buffer,SharedArrayBuffer)))return h(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,r);const o=function(e){if(l.isBuffer(e)){const t=0|d(e.length),r=s(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||Z(e.length)?s(0):f(e);if("Buffer"===e.type&&Array.isArray(e.data))return f(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function p(e){return c(e),s(e<0?0:0|d(e))}function f(e){const t=e.length<0?0:0|d(e.length),r=s(t);for(let n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||G(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let o=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return H(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(e).length;default:if(o)return n?-1:H(e).length;t=(""+t).toLowerCase(),o=!0}}function g(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return I(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return O(this,t,r);case"latin1":case"binary":return j(this,t,r);case"base64":return A(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Z(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,o);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,o){let a,i=1,s=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;i=2,s/=2,l/=2,r/=2}function u(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(o){let n=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){let r=!0;for(let n=0;no&&(n=o):n=o;const a=t.length;let i;for(n>a/2&&(n=a/2),i=0;i>8,o=r%256,a.push(o),a.push(n);return a}(t,e.length-r),e,r,n)}function A(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);const n=[];let o=t;for(;o239?4:t>223?3:t>191?2:1;if(o+i<=r){let r,n,s,l;switch(i){case 1:t<128&&(a=t);break;case 2:r=e[o+1],128==(192&r)&&(l=(31&t)<<6|63&r,l>127&&(a=l));break;case 3:r=e[o+1],n=e[o+2],128==(192&r)&&128==(192&n)&&(l=(15&t)<<12|(63&r)<<6|63&n,l>2047&&(l<55296||l>57343)&&(a=l));break;case 4:r=e[o+1],n=e[o+2],s=e[o+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(l=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,l>65535&&l<1114112&&(a=l))}}null===a?(a=65533,i=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),o+=i}return function(e){const t=e.length;if(t<=C)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(l.isBuffer(t)||(t=l.from(t)),t.copy(n,o)):Uint8Array.prototype.set.call(n,t,o);else{if(!l.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,o)}o+=t.length}return n},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(e+=" ... "),""},a&&(l.prototype[a]=l.prototype.inspect),l.prototype.compare=function(e,t,r,n,o){if(G(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;let a=(o>>>=0)-(n>>>=0),i=(r>>>=0)-(t>>>=0);const s=Math.min(a,i),u=this.slice(n,o),c=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const o=this.length-t;if((void 0===r||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let a=!1;for(;;)switch(n){case"hex":return w(this,e,t,r);case"utf8":case"utf-8":return E(this,e,t,r);case"ascii":case"latin1":case"binary":return x(this,e,t,r);case"base64":return _(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const C=4096;function O(e,t,r){let n="";r=Math.min(e.length,r);for(let o=t;on)&&(r=n);let o="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,r,n,o,a){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function R(e,t,r,n,o){q(t,n,o,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a;let i=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=i,i>>=8,e[r++]=i,i>>=8,e[r++]=i,i>>=8,e[r++]=i,r}function M(e,t,r,n,o){q(t,n,o,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a>>=8,e[r+6]=a,a>>=8,e[r+5]=a,a>>=8,e[r+4]=a;let i=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=i,i>>=8,e[r+2]=i,i>>=8,e[r+1]=i,i>>=8,e[r]=i,r+8}function D(e,t,r,n,o,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,n,a){return t=+t,r>>>=0,a||D(e,0,r,4),o.write(e,t,r,n,23,4),r+4}function B(e,t,r,n,a){return t=+t,r>>>=0,a||D(e,0,r,8),o.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e],o=1,a=0;for(;++a>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e+--t],o=1;for(;t>0&&(o*=256);)n+=this[e+--t]*o;return n},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readBigUInt64LE=Q((function(e){V(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,o=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(o)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],o=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e],o=1,a=0;for(;++a=o&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||T(e,t,this.length);let n=t,o=1,a=this[e+--n];for(;n>0&&(o*=256);)a+=this[e+--n]*o;return o*=128,a>=o&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||T(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){e>>>=0,t||T(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readBigInt64LE=Q((function(e){V(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||T(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||T(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||T(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||T(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){P(this,e,t,r,Math.pow(2,8*r)-1,0)}let o=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,!n){P(this,e,t,r,Math.pow(2,8*r)-1,0)}let o=r-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+r},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigUInt64LE=Q((function(e,t=0){return R(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeBigUInt64BE=Q((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);P(this,e,t,r,n-1,-n)}let o=0,a=1,i=0;for(this[t]=255&e;++o>0)-i&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);P(this,e,t,r,n-1,-n)}let o=r-1,a=1,i=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===i&&0!==this[t+o+1]&&(i=1),this[t+o]=(e/a>>0)-i&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigInt64LE=Q((function(e,t=0){return R(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeBigInt64BE=Q((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return B(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return B(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function q(e,t,r,n,o,a){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(a+1)}${n}`:`>= -(2${n} ** ${8*(a+1)-1}${n}) and < 2 ** ${8*(a+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new F.ERR_OUT_OF_RANGE("value",o,e)}!function(e,t,r){V(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||$(t,e.length-(r+1))}(n,o,a)}function V(e,t){if("number"!=typeof e)throw new F.ERR_INVALID_ARG_TYPE(t,"number",e)}function $(e,t,r){if(Math.floor(e)!==e)throw V(e,r),new F.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new F.ERR_BUFFER_OUT_OF_BOUNDS;throw new F.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}z("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),z("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),z("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,o=r;return Number.isInteger(r)&&Math.abs(r)>2**32?o=U(String(r)):"bigint"==typeof r&&(o=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(o=U(o)),o+="n"),n+=` It must be ${t}. Received ${o}`,n}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function H(e,t){let r;t=t||1/0;const n=e.length;let o=null;const a=[];for(let i=0;i55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function J(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,r,n){let o;for(o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function G(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const Y=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let o=0;o<16;++o)t[n+o]=e[r]+e[o]}return t}();function Q(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}},21924:(e,t,r)=>{"use strict";var n=r(40210),o=r(55559),a=o(n("String.prototype.indexOf"));e.exports=function(e,t){var r=n(e,!!t);return"function"==typeof r&&a(e,".prototype.")>-1?o(r):r}},55559:(e,t,r)=>{"use strict";var n=r(58612),o=r(40210),a=o("%Function.prototype.apply%"),i=o("%Function.prototype.call%"),s=o("%Reflect.apply%",!0)||n.call(i,a),l=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),c=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(e){u=null}e.exports=function(e){var t=s(n,i,arguments);if(l&&u){var r=l(t,"length");r.configurable&&u(t,"length",{value:1+c(0,e.length-(arguments.length-1))})}return t};var p=function(){return s(n,a,arguments)};u?u(e.exports,"apply",{value:p}):e.exports.apply=p},94184:(e,t)=>{var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t{"use strict";t.parse=function(e,t){if("string"!=typeof e)throw new TypeError("argument str must be a string");var r={},n=(t||{}).decode||o,a=0;for(;a{"use strict";var n=r(11742),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,a,i,s,l,u,c=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),s=document.createRange(),l=document.getSelection(),(u=document.createElement("span")).textContent=e,u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=o[t.format]||o.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(u),s.selectNodeContents(u),l.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");c=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),c=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(s):l.removeAllRanges()),u&&document.body.removeChild(u),i()}return c}},95299:(e,t,r)=>{var n=r(24848);e.exports=n},83450:(e,t,r)=>{var n=r(83363);e.exports=n},66820:(e,t,r)=>{var n=r(56243);e.exports=n},5023:(e,t,r)=>{var n=r(72369);e.exports=n},90093:(e,t,r)=>{var n=r(28196);e.exports=n},3688:(e,t,r)=>{var n=r(11955);e.exports=n},83838:(e,t,r)=>{var n=r(46279);e.exports=n},15684:(e,t,r)=>{var n=r(19373);e.exports=n},99826:(e,t,r)=>{var n=r(28427);e.exports=n},84234:(e,t,r)=>{var n=r(82073);e.exports=n},65362:(e,t,r)=>{var n=r(63383);e.exports=n},32271:(e,t,r)=>{var n=r(14471);e.exports=n},91254:(e,t,r)=>{var n=r(57396);e.exports=n},43536:(e,t,r)=>{var n=r(41910);e.exports=n},37331:(e,t,r)=>{var n=r(79427);e.exports=n},68522:(e,t,r)=>{var n=r(62857);e.exports=n},73151:(e,t,r)=>{var n=r(9534);e.exports=n},99565:(e,t,r)=>{var n=r(96507);e.exports=n},45012:(e,t,r)=>{var n=r(23059);e.exports=n},78690:(e,t,r)=>{var n=r(16670);e.exports=n},25626:(e,t,r)=>{var n=r(27460);e.exports=n},80281:(e,t,r)=>{var n=r(92547);e.exports=n},40031:(e,t,r)=>{var n=r(46509);e.exports=n},54493:(e,t,r)=>{r(77971),r(53242);var n=r(54058);e.exports=n.Array.from},24034:(e,t,r)=>{r(92737);var n=r(54058);e.exports=n.Array.isArray},15367:(e,t,r)=>{r(85906);var n=r(35703);e.exports=n("Array").concat},12710:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").entries},51459:(e,t,r)=>{r(48851);var n=r(35703);e.exports=n("Array").every},6172:(e,t,r)=>{r(80290);var n=r(35703);e.exports=n("Array").fill},62383:(e,t,r)=>{r(21501);var n=r(35703);e.exports=n("Array").filter},60009:(e,t,r)=>{r(44929);var n=r(35703);e.exports=n("Array").findIndex},17671:(e,t,r)=>{r(80833);var n=r(35703);e.exports=n("Array").find},99324:(e,t,r)=>{r(2437);var n=r(35703);e.exports=n("Array").forEach},80991:(e,t,r)=>{r(97690);var n=r(35703);e.exports=n("Array").includes},8700:(e,t,r)=>{r(99076);var n=r(35703);e.exports=n("Array").indexOf},95909:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").keys},6442:(e,t,r)=>{r(75915);var n=r(35703);e.exports=n("Array").lastIndexOf},23866:(e,t,r)=>{r(68787);var n=r(35703);e.exports=n("Array").map},52999:(e,t,r)=>{r(81876);var n=r(35703);e.exports=n("Array").reduce},91876:(e,t,r)=>{r(11490);var n=r(35703);e.exports=n("Array").reverse},24900:(e,t,r)=>{r(60186);var n=r(35703);e.exports=n("Array").slice},3824:(e,t,r)=>{r(36026);var n=r(35703);e.exports=n("Array").some},2948:(e,t,r)=>{r(4115);var n=r(35703);e.exports=n("Array").sort},78209:(e,t,r)=>{r(98611);var n=r(35703);e.exports=n("Array").splice},14423:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").values},81103:(e,t,r)=>{r(95160);var n=r(54058);e.exports=n.Date.now},27700:(e,t,r)=>{r(73381);var n=r(35703);e.exports=n("Function").bind},13830:(e,t,r)=>{r(66274),r(77971);var n=r(22902);e.exports=n},91031:(e,t,r)=>{r(52595),e.exports=r(21899)},16246:(e,t,r)=>{var n=r(7046),o=r(27700),a=Function.prototype;e.exports=function(e){var t=e.bind;return e===a||n(a,e)&&t===a.bind?o:t}},56043:(e,t,r)=>{var n=r(7046),o=r(15367),a=Array.prototype;e.exports=function(e){var t=e.concat;return e===a||n(a,e)&&t===a.concat?o:t}},13160:(e,t,r)=>{var n=r(7046),o=r(51459),a=Array.prototype;e.exports=function(e){var t=e.every;return e===a||n(a,e)&&t===a.every?o:t}},80446:(e,t,r)=>{var n=r(7046),o=r(6172),a=Array.prototype;e.exports=function(e){var t=e.fill;return e===a||n(a,e)&&t===a.fill?o:t}},2480:(e,t,r)=>{var n=r(7046),o=r(62383),a=Array.prototype;e.exports=function(e){var t=e.filter;return e===a||n(a,e)&&t===a.filter?o:t}},7147:(e,t,r)=>{var n=r(7046),o=r(60009),a=Array.prototype;e.exports=function(e){var t=e.findIndex;return e===a||n(a,e)&&t===a.findIndex?o:t}},32236:(e,t,r)=>{var n=r(7046),o=r(17671),a=Array.prototype;e.exports=function(e){var t=e.find;return e===a||n(a,e)&&t===a.find?o:t}},58557:(e,t,r)=>{var n=r(7046),o=r(80991),a=r(21631),i=Array.prototype,s=String.prototype;e.exports=function(e){var t=e.includes;return e===i||n(i,e)&&t===i.includes?o:"string"==typeof e||e===s||n(s,e)&&t===s.includes?a:t}},34570:(e,t,r)=>{var n=r(7046),o=r(8700),a=Array.prototype;e.exports=function(e){var t=e.indexOf;return e===a||n(a,e)&&t===a.indexOf?o:t}},57564:(e,t,r)=>{var n=r(7046),o=r(6442),a=Array.prototype;e.exports=function(e){var t=e.lastIndexOf;return e===a||n(a,e)&&t===a.lastIndexOf?o:t}},88287:(e,t,r)=>{var n=r(7046),o=r(23866),a=Array.prototype;e.exports=function(e){var t=e.map;return e===a||n(a,e)&&t===a.map?o:t}},68025:(e,t,r)=>{var n=r(7046),o=r(52999),a=Array.prototype;e.exports=function(e){var t=e.reduce;return e===a||n(a,e)&&t===a.reduce?o:t}},59257:(e,t,r)=>{var n=r(7046),o=r(80454),a=String.prototype;e.exports=function(e){var t=e.repeat;return"string"==typeof e||e===a||n(a,e)&&t===a.repeat?o:t}},91060:(e,t,r)=>{var n=r(7046),o=r(91876),a=Array.prototype;e.exports=function(e){var t=e.reverse;return e===a||n(a,e)&&t===a.reverse?o:t}},69601:(e,t,r)=>{var n=r(7046),o=r(24900),a=Array.prototype;e.exports=function(e){var t=e.slice;return e===a||n(a,e)&&t===a.slice?o:t}},28299:(e,t,r)=>{var n=r(7046),o=r(3824),a=Array.prototype;e.exports=function(e){var t=e.some;return e===a||n(a,e)&&t===a.some?o:t}},69355:(e,t,r)=>{var n=r(7046),o=r(2948),a=Array.prototype;e.exports=function(e){var t=e.sort;return e===a||n(a,e)&&t===a.sort?o:t}},18339:(e,t,r)=>{var n=r(7046),o=r(78209),a=Array.prototype;e.exports=function(e){var t=e.splice;return e===a||n(a,e)&&t===a.splice?o:t}},71611:(e,t,r)=>{var n=r(7046),o=r(3269),a=String.prototype;e.exports=function(e){var t=e.startsWith;return"string"==typeof e||e===a||n(a,e)&&t===a.startsWith?o:t}},62774:(e,t,r)=>{var n=r(7046),o=r(13348),a=String.prototype;e.exports=function(e){var t=e.trim;return"string"==typeof e||e===a||n(a,e)&&t===a.trim?o:t}},84426:(e,t,r)=>{r(32619);var n=r(54058),o=r(79730);n.JSON||(n.JSON={stringify:JSON.stringify}),e.exports=function(e,t,r){return o(n.JSON.stringify,null,arguments)}},91018:(e,t,r)=>{r(66274),r(37501),r(55967),r(77971);var n=r(54058);e.exports=n.Map},45999:(e,t,r)=>{r(49221);var n=r(54058);e.exports=n.Object.assign},35254:(e,t,r)=>{r(53882);var n=r(54058).Object;e.exports=function(e,t){return n.create(e,t)}},7702:(e,t,r)=>{r(74979);var n=r(54058).Object,o=e.exports=function(e,t){return n.defineProperties(e,t)};n.defineProperties.sham&&(o.sham=!0)},48171:(e,t,r)=>{r(86450);var n=r(54058).Object,o=e.exports=function(e,t,r){return n.defineProperty(e,t,r)};n.defineProperty.sham&&(o.sham=!0)},73081:(e,t,r)=>{r(94366);var n=r(54058);e.exports=n.Object.entries},286:(e,t,r)=>{r(46924);var n=r(54058).Object,o=e.exports=function(e,t){return n.getOwnPropertyDescriptor(e,t)};n.getOwnPropertyDescriptor.sham&&(o.sham=!0)},92766:(e,t,r)=>{r(88482);var n=r(54058);e.exports=n.Object.getOwnPropertyDescriptors},30498:(e,t,r)=>{r(35824);var n=r(54058);e.exports=n.Object.getOwnPropertySymbols},13966:(e,t,r)=>{r(17405);var n=r(54058);e.exports=n.Object.getPrototypeOf},48494:(e,t,r)=>{r(21724);var n=r(54058);e.exports=n.Object.keys},3065:(e,t,r)=>{r(90108);var n=r(54058);e.exports=n.Object.setPrototypeOf},98430:(e,t,r)=>{r(26614);var n=r(54058);e.exports=n.Object.values},52956:(e,t,r)=>{r(47627),r(66274),r(55967),r(98881),r(4560),r(91302),r(44349),r(77971);var n=r(54058);e.exports=n.Promise},21631:(e,t,r)=>{r(11035);var n=r(35703);e.exports=n("String").includes},80454:(e,t,r)=>{r(60986);var n=r(35703);e.exports=n("String").repeat},3269:(e,t,r)=>{r(94761);var n=r(35703);e.exports=n("String").startsWith},13348:(e,t,r)=>{r(57398);var n=r(35703);e.exports=n("String").trim},57473:(e,t,r)=>{r(85906),r(55967),r(35824),r(8555),r(52615),r(21732),r(35903),r(1825),r(28394),r(45915),r(61766),r(62737),r(89911),r(74315),r(63131),r(64714),r(70659),r(69120),r(79413),r(1502);var n=r(54058);e.exports=n.Symbol},24227:(e,t,r)=>{r(66274),r(55967),r(77971),r(1825);var n=r(11477);e.exports=n.f("iterator")},32304:(e,t,r)=>{r(66274),r(55967),r(54334);var n=r(54058);e.exports=n.WeakMap},27385:(e,t,r)=>{var n=r(95299);e.exports=n},81522:(e,t,r)=>{var n=r(83450);e.exports=n},32209:(e,t,r)=>{var n=r(66820);e.exports=n},30888:(e,t,r)=>{r(9668);var n=r(5023);e.exports=n},14122:(e,t,r)=>{var n=r(90093);e.exports=n},44442:(e,t,r)=>{var n=r(3688);e.exports=n},57152:(e,t,r)=>{var n=r(83838);e.exports=n},69447:(e,t,r)=>{var n=r(15684);e.exports=n},17579:(e,t,r)=>{var n=r(99826);e.exports=n},81493:(e,t,r)=>{var n=r(84234);e.exports=n},60269:(e,t,r)=>{var n=r(65362);e.exports=n},76094:(e,t,r)=>{var n=r(32271);e.exports=n},70573:(e,t,r)=>{var n=r(91254);e.exports=n},73685:(e,t,r)=>{var n=r(43536);e.exports=n},27533:(e,t,r)=>{var n=r(37331);e.exports=n},39057:(e,t,r)=>{var n=r(68522);e.exports=n},84710:(e,t,r)=>{var n=r(73151);e.exports=n},74303:(e,t,r)=>{var n=r(99565);e.exports=n},93799:(e,t,r)=>{var n=r(45012);e.exports=n},55122:(e,t,r)=>{var n=r(78690);e.exports=n},29531:(e,t,r)=>{var n=r(25626);r(89731),r(55708),r(30014),r(88731),e.exports=n},86600:(e,t,r)=>{var n=r(80281);r(28783),r(43975),r(65799),r(45414),r(46774),r(80620),r(36172),e.exports=n},9759:(e,t,r)=>{var n=r(40031);e.exports=n},24883:(e,t,r)=>{var n=r(21899),o=r(57475),a=r(69826),i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not a function")}},174:(e,t,r)=>{var n=r(21899),o=r(24284),a=r(69826),i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not a constructor")}},11851:(e,t,r)=>{var n=r(21899),o=r(57475),a=n.String,i=n.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw i("Can't set "+a(e)+" as a prototype")}},18479:e=>{e.exports=function(){}},5743:(e,t,r)=>{var n=r(21899),o=r(7046),a=n.TypeError;e.exports=function(e,t){if(o(t,e))return e;throw a("Incorrect invocation")}},96059:(e,t,r)=>{var n=r(21899),o=r(10941),a=n.String,i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not an object")}},97135:(e,t,r)=>{var n=r(95981);e.exports=n((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},91860:(e,t,r)=>{"use strict";var n=r(89678),o=r(59413),a=r(10623);e.exports=function(e){for(var t=n(this),r=a(t),i=arguments.length,s=o(i>1?arguments[1]:void 0,r),l=i>2?arguments[2]:void 0,u=void 0===l?r:o(l,r);u>s;)t[s++]=e;return t}},56837:(e,t,r)=>{"use strict";var n=r(3610).forEach,o=r(34194)("forEach");e.exports=o?[].forEach:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}},11354:(e,t,r)=>{"use strict";var n=r(21899),o=r(86843),a=r(78834),i=r(89678),s=r(75196),l=r(6782),u=r(24284),c=r(10623),p=r(55449),f=r(53476),h=r(22902),d=n.Array;e.exports=function(e){var t=i(e),r=u(this),n=arguments.length,m=n>1?arguments[1]:void 0,g=void 0!==m;g&&(m=o(m,n>2?arguments[2]:void 0));var v,y,b,w,E,x,_=h(t),S=0;if(!_||this==d&&l(_))for(v=c(t),y=r?new this(v):d(v);v>S;S++)x=g?m(t[S],S):t[S],p(y,S,x);else for(E=(w=f(t,_)).next,y=r?new this:[];!(b=a(E,w)).done;S++)x=g?s(w,m,[b.value,S],!0):b.value,p(y,S,x);return y.length=S,y}},31692:(e,t,r)=>{var n=r(74529),o=r(59413),a=r(10623),i=function(e){return function(t,r,i){var s,l=n(t),u=a(l),c=o(i,u);if(e&&r!=r){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},3610:(e,t,r)=>{var n=r(86843),o=r(95329),a=r(37026),i=r(89678),s=r(10623),l=r(64692),u=o([].push),c=function(e){var t=1==e,r=2==e,o=3==e,c=4==e,p=6==e,f=7==e,h=5==e||p;return function(d,m,g,v){for(var y,b,w=i(d),E=a(w),x=n(m,g),_=s(E),S=0,A=v||l,k=t?A(d,_):r||f?A(d,0):void 0;_>S;S++)if((h||S in E)&&(b=x(y=E[S],S,w),e))if(t)k[S]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:u(k,y)}else switch(e){case 4:return!1;case 7:u(k,y)}return p?-1:o||c?c:k}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterReject:c(7)}},67145:(e,t,r)=>{"use strict";var n=r(79730),o=r(74529),a=r(62435),i=r(10623),s=r(34194),l=Math.min,u=[].lastIndexOf,c=!!u&&1/[1].lastIndexOf(1,-0)<0,p=s("lastIndexOf"),f=c||!p;e.exports=f?function(e){if(c)return n(u,this,arguments)||0;var t=o(this),r=i(t),s=r-1;for(arguments.length>1&&(s=l(s,a(arguments[1]))),s<0&&(s=r+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:u},50568:(e,t,r)=>{var n=r(95981),o=r(99813),a=r(53385),i=o("species");e.exports=function(e){return a>=51||!n((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},34194:(e,t,r)=>{"use strict";var n=r(95981);e.exports=function(e,t){var r=[][e];return!!r&&n((function(){r.call(null,t||function(){throw 1},1)}))}},46499:(e,t,r)=>{var n=r(21899),o=r(24883),a=r(89678),i=r(37026),s=r(10623),l=n.TypeError,u=function(e){return function(t,r,n,u){o(r);var c=a(t),p=i(c),f=s(c),h=e?f-1:0,d=e?-1:1;if(n<2)for(;;){if(h in p){u=p[h],h+=d;break}if(h+=d,e?h<0:f<=h)throw l("Reduce of empty array with no initial value")}for(;e?h>=0:f>h;h+=d)h in p&&(u=r(u,p[h],h,c));return u}};e.exports={left:u(!1),right:u(!0)}},15790:(e,t,r)=>{var n=r(21899),o=r(59413),a=r(10623),i=r(55449),s=n.Array,l=Math.max;e.exports=function(e,t,r){for(var n=a(e),u=o(t,n),c=o(void 0===r?n:r,n),p=s(l(c-u,0)),f=0;u{var n=r(95329);e.exports=n([].slice)},61388:(e,t,r)=>{var n=r(15790),o=Math.floor,a=function(e,t){var r=e.length,l=o(r/2);return r<8?i(e,t):s(e,a(n(e,0,l),t),a(n(e,l),t),t)},i=function(e,t){for(var r,n,o=e.length,a=1;a0;)e[n]=e[--n];n!==a++&&(e[n]=r)}return e},s=function(e,t,r,n){for(var o=t.length,a=r.length,i=0,s=0;i{var n=r(21899),o=r(1052),a=r(24284),i=r(10941),s=r(99813)("species"),l=n.Array;e.exports=function(e){var t;return o(e)&&(t=e.constructor,(a(t)&&(t===l||o(t.prototype))||i(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?l:t}},64692:(e,t,r)=>{var n=r(5693);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},75196:(e,t,r)=>{var n=r(96059),o=r(7609);e.exports=function(e,t,r,a){try{return a?t(n(r)[0],r[1]):t(r)}catch(t){o(e,"throw",t)}}},21385:(e,t,r)=>{var n=r(99813)("iterator"),o=!1;try{var a=0,i={next:function(){return{done:!!a++}},return:function(){o=!0}};i[n]=function(){return this},Array.from(i,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var a={};a[n]=function(){return{next:function(){return{done:r=!0}}}},e(a)}catch(e){}return r}},82532:(e,t,r)=>{var n=r(95329),o=n({}.toString),a=n("".slice);e.exports=function(e){return a(o(e),8,-1)}},9697:(e,t,r)=>{var n=r(21899),o=r(22885),a=r(57475),i=r(82532),s=r(99813)("toStringTag"),l=n.Object,u="Arguments"==i(function(){return arguments}());e.exports=o?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=l(e),s))?r:u?i(t):"Object"==(n=i(t))&&a(t.callee)?"Arguments":n}},38694:(e,t,r)=>{var n=r(95329)("".replace),o=String(Error("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,i=a.test(o);e.exports=function(e,t){if(i&&"string"==typeof e)for(;t--;)e=n(e,a,"");return e}},85616:(e,t,r)=>{"use strict";var n=r(65988).f,o=r(29290),a=r(87524),i=r(86843),s=r(5743),l=r(93091),u=r(47771),c=r(94431),p=r(55746),f=r(21647).fastKey,h=r(45402),d=h.set,m=h.getterFor;e.exports={getConstructor:function(e,t,r,u){var c=e((function(e,n){s(e,h),d(e,{type:t,index:o(null),first:void 0,last:void 0,size:0}),p||(e.size=0),null!=n&&l(n,e[u],{that:e,AS_ENTRIES:r})})),h=c.prototype,g=m(t),v=function(e,t,r){var n,o,a=g(e),i=y(e,t);return i?i.value=r:(a.last=i={index:o=f(t,!0),key:t,value:r,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=i),n&&(n.next=i),p?a.size++:e.size++,"F"!==o&&(a.index[o]=i)),e},y=function(e,t){var r,n=g(e),o=f(t);if("F"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key==t)return r};return a(h,{clear:function(){for(var e=g(this),t=e.index,r=e.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete t[r.index],r=r.next;e.first=e.last=void 0,p?e.size=0:this.size=0},delete:function(e){var t=this,r=g(t),n=y(t,e);if(n){var o=n.next,a=n.previous;delete r.index[n.index],n.removed=!0,a&&(a.next=o),o&&(o.previous=a),r.first==n&&(r.first=o),r.last==n&&(r.last=a),p?r.size--:t.size--}return!!n},forEach:function(e){for(var t,r=g(this),n=i(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:r.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!y(this,e)}}),a(h,r?{get:function(e){var t=y(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),p&&n(h,"size",{get:function(){return g(this).size}}),c},setStrong:function(e,t,r){var n=t+" Iterator",o=m(t),a=m(n);u(e,t,(function(e,t){d(this,{type:n,target:e,state:o(e),kind:t,last:void 0})}),(function(){for(var e=a(this),t=e.kind,r=e.last;r&&r.removed;)r=r.previous;return e.target&&(e.last=r=r?r.next:e.state.first)?"keys"==t?{value:r.key,done:!1}:"values"==t?{value:r.value,done:!1}:{value:[r.key,r.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),r?"entries":"values",!r,!0),c(t)}}},8850:(e,t,r)=>{"use strict";var n=r(95329),o=r(87524),a=r(21647).getWeakData,i=r(96059),s=r(10941),l=r(5743),u=r(93091),c=r(3610),p=r(90953),f=r(45402),h=f.set,d=f.getterFor,m=c.find,g=c.findIndex,v=n([].splice),y=0,b=function(e){return e.frozen||(e.frozen=new w)},w=function(){this.entries=[]},E=function(e,t){return m(e.entries,(function(e){return e[0]===t}))};w.prototype={get:function(e){var t=E(this,e);if(t)return t[1]},has:function(e){return!!E(this,e)},set:function(e,t){var r=E(this,e);r?r[1]=t:this.entries.push([e,t])},delete:function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&v(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,r,n){var c=e((function(e,o){l(e,f),h(e,{type:t,id:y++,frozen:void 0}),null!=o&&u(o,e[n],{that:e,AS_ENTRIES:r})})),f=c.prototype,m=d(t),g=function(e,t,r){var n=m(e),o=a(i(t),!0);return!0===o?b(n).set(t,r):o[n.id]=r,e};return o(f,{delete:function(e){var t=m(this);if(!s(e))return!1;var r=a(e);return!0===r?b(t).delete(e):r&&p(r,t.id)&&delete r[t.id]},has:function(e){var t=m(this);if(!s(e))return!1;var r=a(e);return!0===r?b(t).has(e):r&&p(r,t.id)}}),o(f,r?{get:function(e){var t=m(this);if(s(e)){var r=a(e);return!0===r?b(t).get(e):r?r[t.id]:void 0}},set:function(e,t){return g(this,e,t)}}:{add:function(e){return g(this,e,!0)}}),c}}},24683:(e,t,r)=>{"use strict";var n=r(76887),o=r(21899),a=r(21647),i=r(95981),s=r(32029),l=r(93091),u=r(5743),c=r(57475),p=r(10941),f=r(90904),h=r(65988).f,d=r(3610).forEach,m=r(55746),g=r(45402),v=g.set,y=g.getterFor;e.exports=function(e,t,r){var g,b=-1!==e.indexOf("Map"),w=-1!==e.indexOf("Weak"),E=b?"set":"add",x=o[e],_=x&&x.prototype,S={};if(m&&c(x)&&(w||_.forEach&&!i((function(){(new x).entries().next()})))){var A=(g=t((function(t,r){v(u(t,A),{type:e,collection:new x}),null!=r&&l(r,t[E],{that:t,AS_ENTRIES:b})}))).prototype,k=y(e);d(["add","clear","delete","forEach","get","has","set","keys","values","entries"],(function(e){var t="add"==e||"set"==e;!(e in _)||w&&"clear"==e||s(A,e,(function(r,n){var o=k(this).collection;if(!t&&w&&!p(r))return"get"==e&&void 0;var a=o[e](0===r?0:r,n);return t?this:a}))})),w||h(A,"size",{configurable:!0,get:function(){return k(this).collection.size}})}else g=r.getConstructor(t,e,b,E),a.enable();return f(g,e,!1,!0),S[e]=g,n({global:!0,forced:!0},S),w||r.setStrong(g,e,b),g}},23489:(e,t,r)=>{var n=r(90953),o=r(31136),a=r(49677),i=r(65988);e.exports=function(e,t,r){for(var s=o(t),l=i.f,u=a.f,c=0;c{var n=r(99813)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(r){try{return t[n]=!1,"/./"[e](t)}catch(e){}}return!1}},64160:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},31046:(e,t,r)=>{"use strict";var n=r(35143).IteratorPrototype,o=r(29290),a=r(31887),i=r(90904),s=r(12077),l=function(){return this};e.exports=function(e,t,r,u){var c=t+" Iterator";return e.prototype=o(n,{next:a(+!u,r)}),i(e,c,!1,!0),s[c]=l,e}},32029:(e,t,r)=>{var n=r(55746),o=r(65988),a=r(31887);e.exports=n?function(e,t,r){return o.f(e,t,a(1,r))}:function(e,t,r){return e[t]=r,e}},31887:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},55449:(e,t,r)=>{"use strict";var n=r(83894),o=r(65988),a=r(31887);e.exports=function(e,t,r){var i=n(t);i in e?o.f(e,i,a(0,r)):e[i]=r}},47771:(e,t,r)=>{"use strict";var n=r(76887),o=r(78834),a=r(82529),i=r(79417),s=r(57475),l=r(31046),u=r(249),c=r(88929),p=r(90904),f=r(32029),h=r(99754),d=r(99813),m=r(12077),g=r(35143),v=i.PROPER,y=i.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,E=d("iterator"),x="keys",_="values",S="entries",A=function(){return this};e.exports=function(e,t,r,i,d,g,k){l(r,t,i);var C,O,j,I=function(e){if(e===d&&M)return M;if(!w&&e in P)return P[e];switch(e){case x:case _:case S:return function(){return new r(this,e)}}return function(){return new r(this)}},N=t+" Iterator",T=!1,P=e.prototype,R=P[E]||P["@@iterator"]||d&&P[d],M=!w&&R||I(d),D="Array"==t&&P.entries||R;if(D&&(C=u(D.call(new e)))!==Object.prototype&&C.next&&(a||u(C)===b||(c?c(C,b):s(C[E])||h(C,E,A)),p(C,N,!0,!0),a&&(m[N]=A)),v&&d==_&&R&&R.name!==_&&(!a&&y?f(P,"name",_):(T=!0,M=function(){return o(R,this)})),d)if(O={values:I(_),keys:g?M:I(x),entries:I(S)},k)for(j in O)(w||T||!(j in P))&&h(P,j,O[j]);else n({target:t,proto:!0,forced:w||T},O);return a&&!k||P[E]===M||h(P,E,M,{name:d}),m[t]=M,O}},66349:(e,t,r)=>{var n=r(54058),o=r(90953),a=r(11477),i=r(65988).f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});o(t,e)||i(t,e,{value:a.f(e)})}},55746:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},61333:(e,t,r)=>{var n=r(21899),o=r(10941),a=n.document,i=o(a)&&o(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},63281:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},34342:(e,t,r)=>{var n=r(2861).match(/firefox\/(\d+)/i);e.exports=!!n&&+n[1]},23321:e=>{e.exports="object"==typeof window},81046:(e,t,r)=>{var n=r(2861);e.exports=/MSIE|Trident/.test(n)},4470:(e,t,r)=>{var n=r(2861),o=r(21899);e.exports=/ipad|iphone|ipod/i.test(n)&&void 0!==o.Pebble},22749:(e,t,r)=>{var n=r(2861);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},6049:(e,t,r)=>{var n=r(82532),o=r(21899);e.exports="process"==n(o.process)},58045:(e,t,r)=>{var n=r(2861);e.exports=/web0s(?!.*chrome)/i.test(n)},2861:(e,t,r)=>{var n=r(626);e.exports=n("navigator","userAgent")||""},53385:(e,t,r)=>{var n,o,a=r(21899),i=r(2861),s=a.process,l=a.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(o=(n=c.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&i&&(!(n=i.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=i.match(/Chrome\/(\d+)/))&&(o=+n[1]),e.exports=o},18938:(e,t,r)=>{var n=r(2861).match(/AppleWebKit\/(\d+)\./);e.exports=!!n&&+n[1]},35703:(e,t,r)=>{var n=r(54058);e.exports=function(e){return n[e+"Prototype"]}},56759:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},18780:(e,t,r)=>{var n=r(95981),o=r(31887);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},76887:(e,t,r)=>{"use strict";var n=r(21899),o=r(79730),a=r(95329),i=r(57475),s=r(49677).f,l=r(37252),u=r(54058),c=r(86843),p=r(32029),f=r(90953),h=function(e){var t=function(r,n,a){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,a)}return o(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var r,o,d,m,g,v,y,b,w=e.target,E=e.global,x=e.stat,_=e.proto,S=E?n:x?n[w]:(n[w]||{}).prototype,A=E?u:u[w]||p(u,w,{})[w],k=A.prototype;for(d in t)r=!l(E?d:w+(x?".":"#")+d,e.forced)&&S&&f(S,d),g=A[d],r&&(v=e.noTargetGet?(b=s(S,d))&&b.value:S[d]),m=r&&v?v:t[d],r&&typeof g==typeof m||(y=e.bind&&r?c(m,n):e.wrap&&r?h(m):_&&i(m)?a(m):m,(e.sham||m&&m.sham||g&&g.sham)&&p(y,"sham",!0),p(A,d,y),_&&(f(u,o=w+"Prototype")||p(u,o,{}),p(u[o],d,m),e.real&&k&&!k[d]&&p(k,d,m)))}},95981:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},45602:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},79730:(e,t,r)=>{var n=r(18285),o=Function.prototype,a=o.apply,i=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?i.bind(a):function(){return i.apply(a,arguments)})},86843:(e,t,r)=>{var n=r(95329),o=r(24883),a=r(18285),i=n(n.bind);e.exports=function(e,t){return o(e),void 0===t?e:a?i(e,t):function(){return e.apply(t,arguments)}}},18285:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},98308:(e,t,r)=>{"use strict";var n=r(21899),o=r(95329),a=r(24883),i=r(10941),s=r(90953),l=r(93765),u=r(18285),c=n.Function,p=o([].concat),f=o([].join),h={},d=function(e,t,r){if(!s(h,t)){for(var n=[],o=0;o{var n=r(18285),o=Function.prototype.call;e.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},79417:(e,t,r)=>{var n=r(55746),o=r(90953),a=Function.prototype,i=n&&Object.getOwnPropertyDescriptor,s=o(a,"name"),l=s&&"something"===function(){}.name,u=s&&(!n||n&&i(a,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},95329:(e,t,r)=>{var n=r(18285),o=Function.prototype,a=o.bind,i=o.call,s=n&&a.bind(i,i);e.exports=n?function(e){return e&&s(e)}:function(e){return e&&function(){return i.apply(e,arguments)}}},626:(e,t,r)=>{var n=r(54058),o=r(21899),a=r(57475),i=function(e){return a(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(n[e])||i(o[e]):n[e]&&n[e][t]||o[e]&&o[e][t]}},22902:(e,t,r)=>{var n=r(9697),o=r(14229),a=r(12077),i=r(99813)("iterator");e.exports=function(e){if(null!=e)return o(e,i)||o(e,"@@iterator")||a[n(e)]}},53476:(e,t,r)=>{var n=r(21899),o=r(78834),a=r(24883),i=r(96059),s=r(69826),l=r(22902),u=n.TypeError;e.exports=function(e,t){var r=arguments.length<2?l(e):t;if(a(r))return i(o(r,e));throw u(s(e)+" is not iterable")}},14229:(e,t,r)=>{var n=r(24883);e.exports=function(e,t){var r=e[t];return null==r?void 0:n(r)}},21899:(e,t,r)=>{var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},90953:(e,t,r)=>{var n=r(95329),o=r(89678),a=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return a(o(e),t)}},27748:e=>{e.exports={}},34845:(e,t,r)=>{var n=r(21899);e.exports=function(e,t){var r=n.console;r&&r.error&&(1==arguments.length?r.error(e):r.error(e,t))}},15463:(e,t,r)=>{var n=r(626);e.exports=n("document","documentElement")},2840:(e,t,r)=>{var n=r(55746),o=r(95981),a=r(61333);e.exports=!n&&!o((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},37026:(e,t,r)=>{var n=r(21899),o=r(95329),a=r(95981),i=r(82532),s=n.Object,l=o("".split);e.exports=a((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?l(e,""):s(e)}:s},81302:(e,t,r)=>{var n=r(95329),o=r(57475),a=r(63030),i=n(Function.toString);o(a.inspectSource)||(a.inspectSource=function(e){return i(e)}),e.exports=a.inspectSource},53794:(e,t,r)=>{var n=r(10941),o=r(32029);e.exports=function(e,t){n(t)&&"cause"in t&&o(e,"cause",t.cause)}},21647:(e,t,r)=>{var n=r(76887),o=r(95329),a=r(27748),i=r(10941),s=r(90953),l=r(65988).f,u=r(10946),c=r(684),p=r(91584),f=r(99418),h=r(45602),d=!1,m=f("meta"),g=0,v=function(e){l(e,m,{value:{objectID:"O"+g++,weakData:{}}})},y=e.exports={enable:function(){y.enable=function(){},d=!0;var e=u.f,t=o([].splice),r={};r[m]=1,e(r).length&&(u.f=function(r){for(var n=e(r),o=0,a=n.length;o{var n,o,a,i=r(38019),s=r(21899),l=r(95329),u=r(10941),c=r(32029),p=r(90953),f=r(63030),h=r(44262),d=r(27748),m="Object already initialized",g=s.TypeError,v=s.WeakMap;if(i||f.state){var y=f.state||(f.state=new v),b=l(y.get),w=l(y.has),E=l(y.set);n=function(e,t){if(w(y,e))throw new g(m);return t.facade=e,E(y,e,t),t},o=function(e){return b(y,e)||{}},a=function(e){return w(y,e)}}else{var x=h("state");d[x]=!0,n=function(e,t){if(p(e,x))throw new g(m);return t.facade=e,c(e,x,t),t},o=function(e){return p(e,x)?e[x]:{}},a=function(e){return p(e,x)}}e.exports={set:n,get:o,has:a,enforce:function(e){return a(e)?o(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!u(t)||(r=o(t)).type!==e)throw g("Incompatible receiver, "+e+" required");return r}}}},6782:(e,t,r)=>{var n=r(99813),o=r(12077),a=n("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||i[a]===e)}},1052:(e,t,r)=>{var n=r(82532);e.exports=Array.isArray||function(e){return"Array"==n(e)}},57475:e=>{e.exports=function(e){return"function"==typeof e}},24284:(e,t,r)=>{var n=r(95329),o=r(95981),a=r(57475),i=r(9697),s=r(626),l=r(81302),u=function(){},c=[],p=s("Reflect","construct"),f=/^\s*(?:class|function)\b/,h=n(f.exec),d=!f.exec(u),m=function(e){if(!a(e))return!1;try{return p(u,c,e),!0}catch(e){return!1}},g=function(e){if(!a(e))return!1;switch(i(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!h(f,l(e))}catch(e){return!0}};g.sham=!0,e.exports=!p||o((function(){var e;return m(m.call)||!m(Object)||!m((function(){e=!0}))||e}))?g:m},37252:(e,t,r)=>{var n=r(95981),o=r(57475),a=/#|\.prototype\./,i=function(e,t){var r=l[s(e)];return r==c||r!=u&&(o(t)?n(t):!!t)},s=i.normalize=function(e){return String(e).replace(a,".").toLowerCase()},l=i.data={},u=i.NATIVE="N",c=i.POLYFILL="P";e.exports=i},10941:(e,t,r)=>{var n=r(57475);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},82529:e=>{e.exports=!0},60685:(e,t,r)=>{var n=r(10941),o=r(82532),a=r(99813)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[a])?!!t:"RegExp"==o(e))}},56664:(e,t,r)=>{var n=r(21899),o=r(626),a=r(57475),i=r(7046),s=r(32302),l=n.Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=o("Symbol");return a(t)&&i(t.prototype,l(e))}},93091:(e,t,r)=>{var n=r(21899),o=r(86843),a=r(78834),i=r(96059),s=r(69826),l=r(6782),u=r(10623),c=r(7046),p=r(53476),f=r(22902),h=r(7609),d=n.TypeError,m=function(e,t){this.stopped=e,this.result=t},g=m.prototype;e.exports=function(e,t,r){var n,v,y,b,w,E,x,_=r&&r.that,S=!(!r||!r.AS_ENTRIES),A=!(!r||!r.IS_ITERATOR),k=!(!r||!r.INTERRUPTED),C=o(t,_),O=function(e){return n&&h(n,"normal",e),new m(!0,e)},j=function(e){return S?(i(e),k?C(e[0],e[1],O):C(e[0],e[1])):k?C(e,O):C(e)};if(A)n=e;else{if(!(v=f(e)))throw d(s(e)+" is not iterable");if(l(v)){for(y=0,b=u(e);b>y;y++)if((w=j(e[y]))&&c(g,w))return w;return new m(!1)}n=p(e,v)}for(E=n.next;!(x=a(E,n)).done;){try{w=j(x.value)}catch(e){h(n,"throw",e)}if("object"==typeof w&&w&&c(g,w))return w}return new m(!1)}},7609:(e,t,r)=>{var n=r(78834),o=r(96059),a=r(14229);e.exports=function(e,t,r){var i,s;o(e);try{if(!(i=a(e,"return"))){if("throw"===t)throw r;return r}i=n(i,e)}catch(e){s=!0,i=e}if("throw"===t)throw r;if(s)throw i;return o(i),r}},35143:(e,t,r)=>{"use strict";var n,o,a,i=r(95981),s=r(57475),l=r(29290),u=r(249),c=r(99754),p=r(99813),f=r(82529),h=p("iterator"),d=!1;[].keys&&("next"in(a=[].keys())?(o=u(u(a)))!==Object.prototype&&(n=o):d=!0),null==n||i((function(){var e={};return n[h].call(e)!==e}))?n={}:f&&(n=l(n)),s(n[h])||c(n,h,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:d}},12077:e=>{e.exports={}},10623:(e,t,r)=>{var n=r(43057);e.exports=function(e){return n(e.length)}},66132:(e,t,r)=>{var n,o,a,i,s,l,u,c,p=r(21899),f=r(86843),h=r(49677).f,d=r(42941).set,m=r(22749),g=r(4470),v=r(58045),y=r(6049),b=p.MutationObserver||p.WebKitMutationObserver,w=p.document,E=p.process,x=p.Promise,_=h(p,"queueMicrotask"),S=_&&_.value;S||(n=function(){var e,t;for(y&&(e=E.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(e){throw o?i():a=void 0,e}}a=void 0,e&&e.enter()},m||y||v||!b||!w?!g&&x&&x.resolve?((u=x.resolve(void 0)).constructor=x,c=f(u.then,u),i=function(){c(n)}):y?i=function(){E.nextTick(n)}:(d=f(d,p),i=function(){d(n)}):(s=!0,l=w.createTextNode(""),new b(n).observe(l,{characterData:!0}),i=function(){l.data=s=!s})),e.exports=S||function(e){var t={fn:e,next:void 0};a&&(a.next=t),o||(o=t,i()),a=t}},19297:(e,t,r)=>{var n=r(21899);e.exports=n.Promise},72497:(e,t,r)=>{var n=r(53385),o=r(95981);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},28468:(e,t,r)=>{var n=r(95981),o=r(99813),a=r(82529),i=o("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,r="";return e.pathname="c%20d",t.forEach((function(e,n){t.delete("b"),r+=n+e})),a&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[i]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==r||"x"!==new URL("http://x",void 0).host}))},38019:(e,t,r)=>{var n=r(21899),o=r(57475),a=r(81302),i=n.WeakMap;e.exports=o(i)&&/native code/.test(a(i))},69520:(e,t,r)=>{"use strict";var n=r(24883),o=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new o(e)}},14649:(e,t,r)=>{var n=r(85803);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},70344:(e,t,r)=>{var n=r(21899),o=r(60685),a=n.TypeError;e.exports=function(e){if(o(e))throw a("The method doesn't accept regular expressions");return e}},24420:(e,t,r)=>{"use strict";var n=r(55746),o=r(95329),a=r(78834),i=r(95981),s=r(14771),l=r(87857),u=r(36760),c=r(89678),p=r(37026),f=Object.assign,h=Object.defineProperty,d=o([].concat);e.exports=!f||i((function(){if(n&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(),o="abcdefghijklmnopqrst";return e[r]=7,o.split("").forEach((function(e){t[e]=e})),7!=f({},e)[r]||s(f({},t)).join("")!=o}))?function(e,t){for(var r=c(e),o=arguments.length,i=1,f=l.f,h=u.f;o>i;)for(var m,g=p(arguments[i++]),v=f?d(s(g),f(g)):s(g),y=v.length,b=0;y>b;)m=v[b++],n&&!a(h,g,m)||(r[m]=g[m]);return r}:f},29290:(e,t,r)=>{var n,o=r(96059),a=r(59938),i=r(56759),s=r(27748),l=r(15463),u=r(61333),c=r(44262),p=c("IE_PROTO"),f=function(){},h=function(e){return"