From 99bbfed08d270fda89ba9e9a239c8cb74bb5d3e2 Mon Sep 17 00:00:00 2001 From: YuYang Date: Wed, 6 Sep 2023 17:49:23 +0800 Subject: [PATCH] add DRAIN strategy --- rpc/gen/core.pb.go | 1030 +++++++++++++++++++------------------- rpc/gen/core.proto | 1 + rpc/gen/core_grpc.pb.go | 134 ++--- strategy/drained.go | 43 ++ strategy/drained_test.go | 63 +++ strategy/strategy.go | 13 +- 6 files changed, 699 insertions(+), 585 deletions(-) create mode 100644 strategy/drained.go create mode 100644 strategy/drained_test.go diff --git a/rpc/gen/core.pb.go b/rpc/gen/core.pb.go index b97394fd1..18bc7fb6c 100644 --- a/rpc/gen/core.pb.go +++ b/rpc/gen/core.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.28.1 +// protoc v3.12.4 // source: rpc/gen/core.proto package pb @@ -173,11 +173,12 @@ func (BuildImageOptions_BuildMethod) EnumDescriptor() ([]byte, []int) { type DeployOptions_Strategy int32 const ( - DeployOptions_AUTO DeployOptions_Strategy = 0 - DeployOptions_FILL DeployOptions_Strategy = 1 - DeployOptions_EACH DeployOptions_Strategy = 2 - DeployOptions_GLOBAL DeployOptions_Strategy = 3 - DeployOptions_DUMMY DeployOptions_Strategy = 99 + DeployOptions_AUTO DeployOptions_Strategy = 0 + DeployOptions_FILL DeployOptions_Strategy = 1 + DeployOptions_EACH DeployOptions_Strategy = 2 + DeployOptions_GLOBAL DeployOptions_Strategy = 3 + DeployOptions_DRAINED DeployOptions_Strategy = 4 + DeployOptions_DUMMY DeployOptions_Strategy = 99 ) // Enum value maps for DeployOptions_Strategy. @@ -187,14 +188,16 @@ var ( 1: "FILL", 2: "EACH", 3: "GLOBAL", + 4: "DRAINED", 99: "DUMMY", } DeployOptions_Strategy_value = map[string]int32{ - "AUTO": 0, - "FILL": 1, - "EACH": 2, - "GLOBAL": 3, - "DUMMY": 99, + "AUTO": 0, + "FILL": 1, + "EACH": 2, + "GLOBAL": 3, + "DRAINED": 4, + "DUMMY": 99, } ) @@ -6141,7 +6144,7 @@ var file_rpc_gen_core_proto_rawDesc = []byte{ 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 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, - 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f, 0x0c, 0x0a, + 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9c, 0x0c, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, @@ -6234,437 +6237,438 @@ var file_rpc_gen_core_proto_rawDesc = []byte{ 0x3c, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3f, 0x0a, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x49, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x41, 0x43, 0x48, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x4c, 0x4f, 0x42, 0x41, - 0x4c, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x55, 0x4d, 0x4d, 0x59, 0x10, 0x63, 0x22, 0xf7, - 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x30, 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x18, 0xe9, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x4f, 0x70, 0x74, 0x12, 0x27, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, - 0x68, 0x65, 0x72, 0x69, 0x74, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x12, 0x4a, 0x0a, 0x0d, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0xeb, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x63, 0x6f, 0x70, 0x79, - 0x18, 0xec, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x70, 0x79, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x70, 0x79, 0x12, 0x11, 0x0a, 0x03, 0x49, - 0x44, 0x73, 0x18, 0xec, 0x27, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x49, 0x44, 0x73, 0x1a, 0x3f, - 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x4c, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x04, + 0x12, 0x09, 0x0a, 0x05, 0x44, 0x55, 0x4d, 0x4d, 0x59, 0x10, 0x63, 0x22, 0xf7, 0x02, 0x0a, 0x0e, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, + 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x18, 0xe9, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x09, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, + 0x12, 0x27, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x68, 0x65, 0x72, + 0x69, 0x74, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x12, 0x4a, 0x0a, 0x0d, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x63, 0x6f, 0x70, 0x79, 0x18, 0xec, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x70, 0x79, 0x12, 0x11, 0x0a, 0x03, 0x49, 0x44, 0x73, 0x18, + 0xec, 0x27, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x49, 0x44, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 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, 0x37, 0x0a, 0x09, + 0x43, 0x6f, 0x70, 0x79, 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, 0x22, 0x66, 0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x07, 0x70, 0x6f, + 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, + 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0xeb, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x22, 0x7e, 0x0a, + 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xe9, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, + 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0xea, 0x07, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x17, 0x0a, + 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x15, 0x0a, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, + 0xed, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x22, 0x65, 0x0a, + 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x19, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xe9, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, + 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x22, 0x22, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x61, 0x74, 0x68, + 0x73, 0x12, 0x15, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x70, + 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x2e, + 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x73, 0x1a, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x61, 0x74, 0x68, + 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x09, + 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x11, 0x0a, 0x03, 0x75, 0x69, 0x64, + 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x11, 0x0a, 0x03, + 0x67, 0x69, 0x64, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, + 0x1f, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x84, 0x03, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x11, 0x0a, 0x03, 0x49, 0x44, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, + 0x49, 0x44, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xea, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0xeb, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, + 0x18, 0xec, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, + 0x44, 0x61, 0x74, 0x61, 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, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 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, - 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 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, 0x22, 0x66, 0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, - 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, - 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x73, 0x18, 0xeb, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, - 0x22, 0x7e, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0xea, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x12, 0x17, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x15, 0x0a, 0x05, 0x70, 0x72, 0x75, - 0x6e, 0x65, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, - 0x22, 0x65, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1d, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0xea, 0x07, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x17, - 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x22, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x50, - 0x61, 0x74, 0x68, 0x73, 0x12, 0x15, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0xe9, 0x07, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0b, - 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x73, 0x1a, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x50, - 0x61, 0x74, 0x68, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x31, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x11, 0x0a, 0x03, - 0x75, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, - 0x11, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x67, - 0x69, 0x64, 0x22, 0x1f, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x13, - 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x22, 0x84, 0x03, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x0a, 0x03, 0x49, 0x44, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x03, 0x49, 0x44, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xea, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, - 0xeb, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x73, 0x18, 0xec, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x2e, - 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x1a, - 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x0c, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x48, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x0b, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x13, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x19, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x11, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x17, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0xec, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, - 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x33, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0xee, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x70, 0x62, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0b, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xda, 0x02, 0x0a, 0x15, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1b, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xea, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xed, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0xee, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x18, 0xef, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x48, 0x0a, + 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x13, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0xe9, + 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x11, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xec, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x06, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x12, 0x33, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x18, 0xee, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0b, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xda, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x07, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x13, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, - 0x18, 0xf0, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x1d, 0x0a, - 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0xf1, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 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, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0xe9, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x7d, 0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x19, - 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x6e, 0x6f, 0x64, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, - 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x63, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x19, - 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, - 0x74, 0x65, 0x6d, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0xea, 0x07, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x6a, 0x0a, 0x10, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, - 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x11, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0x58, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x19, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x13, 0x0a, 0x04, 0x68, 0x6f, - 0x6f, 0x6b, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, - 0x43, 0x0a, 0x19, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2f, 0x0a, 0x16, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, - 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x74, 0x0a, 0x0b, 0x43, 0x6f, 0x70, 0x79, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xea, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xed, - 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0b, 0x53, - 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xea, 0x07, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0f, 0x73, 0x74, 0x64, 0x5f, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xeb, 0x07, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, 0x57, - 0x61, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe9, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0xea, 0x07, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x15, 0x0a, 0x05, 0x61, 0x73, 0x79, 0x6e, - 0x63, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x12, - 0x24, 0x0a, 0x0d, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x57, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x11, 0x0a, 0x03, 0x49, 0x44, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x49, - 0x44, 0x73, 0x12, 0x13, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x55, - 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, + 0x67, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xe9, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, + 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x18, 0xee, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x18, 0xef, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x13, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0xf0, 0x07, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x1d, 0x0a, 0x09, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0xf1, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 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, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x32, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0xea, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x7d, 0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xec, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x63, + 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x13, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x6a, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xea, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x11, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, + 0x72, 0x72, 0x22, 0x58, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x13, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, + 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x43, 0x0a, 0x19, + 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x22, 0x2f, 0x0a, 0x16, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x74, 0x0a, 0x0b, 0x43, 0x6f, 0x70, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x15, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xed, 0x07, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x15, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0xe9, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, + 0x12, 0x13, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0f, 0x73, 0x74, 0x64, 0x5f, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x11, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x15, 0x0a, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0xeb, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x24, 0x0a, 0x0d, + 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0xec, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x22, 0x57, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x0a, 0x03, + 0x49, 0x44, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x49, 0x44, 0x73, 0x12, + 0x13, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0xeb, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x55, 0x0a, 0x16, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x13, 0x0a, + 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x6f, + 0x6f, 0x6b, 0x22, 0x7f, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x18, + 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x15, 0x0a, 0x05, + 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x69, + 0x6e, 0x63, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0xec, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x17, 0x0a, 0x06, 0x66, 0x6f, + 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x6f, 0x6c, + 0x6c, 0x6f, 0x77, 0x22, 0x8b, 0x01, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x12, 0x13, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x7f, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0f, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x13, 0x0a, 0x04, 0x74, 0x61, - 0x69, 0x6c, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x12, - 0x15, 0x0a, 0x05, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x18, - 0xec, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x17, 0x0a, - 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x22, 0x8b, 0x01, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xeb, 0x07, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0f, 0x73, 0x74, 0x64, 0x5f, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xec, 0x07, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x54, 0x79, 0x70, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x20, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0xe9, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, - 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0xea, 0x07, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x13, - 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x65, - 0x6e, 0x76, 0x73, 0x12, 0x19, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69, 0x72, 0x18, 0xec, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69, 0x72, 0x12, 0x1e, - 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x18, 0xed, 0x07, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x64, 0x69, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0xee, 0x07, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x43, 0x6d, 0x64, 0x22, 0xbe, 0x01, 0x0a, 0x0f, 0x43, - 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x51, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x61, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x61, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, - 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x27, 0x0a, 0x06, 0x54, - 0x72, 0x69, 0x4f, 0x70, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x54, 0x52, 0x55, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, 0x4c, - 0x53, 0x45, 0x10, 0x02, 0x2a, 0x52, 0x0a, 0x0d, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x4f, 0x55, 0x54, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x45, 0x52, 0x52, 0x10, 0x01, 0x12, 0x12, 0x0a, - 0x0e, 0x54, 0x59, 0x50, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x44, 0x10, - 0x06, 0x12, 0x15, 0x0a, 0x08, 0x45, 0x52, 0x55, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x32, 0x88, 0x14, 0x0a, 0x07, 0x43, 0x6f, 0x72, - 0x65, 0x52, 0x50, 0x43, 0x12, 0x21, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x09, 0x2e, 0x70, - 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x72, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x2e, - 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x30, 0x01, 0x12, - 0x36, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, - 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x00, 0x12, 0x26, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, - 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x64, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x09, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, - 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x26, 0x0a, 0x06, 0x47, - 0x65, 0x74, 0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, - 0x64, 0x22, 0x00, 0x12, 0x21, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, - 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, - 0x50, 0x6f, 0x64, 0x73, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x2e, 0x70, 0x62, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x00, 0x30, - 0x01, 0x12, 0x41, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x22, 0x00, 0x12, 0x29, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x12, 0x13, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0f, 0x73, 0x74, 0x64, 0x5f, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0xe9, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x1b, + 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x13, 0x0a, 0x04, 0x65, + 0x6e, 0x76, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, + 0x12, 0x19, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69, 0x72, 0x18, 0xec, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, + 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x64, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, + 0x65, 0x70, 0x6c, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0xee, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, + 0x72, 0x65, 0x70, 0x6c, 0x43, 0x6d, 0x64, 0x22, 0xbe, 0x01, 0x0a, 0x0f, 0x43, 0x61, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x51, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, + 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x27, 0x0a, 0x06, 0x54, 0x72, 0x69, 0x4f, + 0x70, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, + 0x54, 0x52, 0x55, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x10, + 0x02, 0x2a, 0x52, 0x0a, 0x0d, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x4f, 0x55, 0x54, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x53, 0x54, 0x44, 0x45, 0x52, 0x52, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x59, + 0x50, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x44, 0x10, 0x06, 0x12, 0x15, + 0x0a, 0x08, 0x45, 0x52, 0x55, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x32, 0x88, 0x14, 0x0a, 0x07, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x50, + 0x43, 0x12, 0x21, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x30, 0x01, 0x12, 0x36, 0x0a, 0x0c, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x16, 0x2e, 0x70, + 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x00, + 0x12, 0x3e, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x12, 0x26, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, + 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x07, 0x2e, + 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x64, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x26, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x64, 0x22, 0x00, + 0x12, 0x21, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x09, 0x2e, 0x70, + 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x64, + 0x73, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x41, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x2e, + 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, + 0x00, 0x12, 0x29, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, 0x70, + 0x62, 0x2e, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0a, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x32, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x14, + 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x29, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, 0x12, 0x35, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x22, 0x00, 0x12, 0x29, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, 0x12, - 0x30, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x2e, - 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, + 0x48, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0d, 0x53, 0x65, 0x74, + 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, + 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x00, 0x12, 0x32, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x6f, 0x64, 0x65, - 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, - 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x29, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, - 0x12, 0x35, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, - 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x45, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0x00, 0x12, 0x29, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x4e, 0x6f, - 0x64, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1b, 0x2e, - 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0d, - 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, - 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x3c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x44, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x5c, - 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x11, - 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, - 0x79, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, - 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x44, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x44, 0x73, 0x1a, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0d, 0x4c, 0x69, - 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x22, 0x00, 0x30, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x12, 0x2e, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, - 0x00, 0x12, 0x2c, 0x0a, 0x04, 0x43, 0x6f, 0x70, 0x79, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x43, - 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, - 0x43, 0x6f, 0x70, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, - 0x2c, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, - 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, - 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, - 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, - 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, - 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x41, 0x0a, - 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x16, 0x2e, 0x70, - 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, - 0x12, 0x3b, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, - 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x42, 0x0a, - 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, + 0x00, 0x12, 0x3e, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, + 0x01, 0x12, 0x3c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x44, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, + 0x4a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x14, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x11, 0x43, 0x61, 0x6c, + 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x11, + 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x49, 0x44, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x49, 0x44, 0x73, 0x1a, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x22, 0x00, 0x30, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0d, 0x2e, + 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x00, 0x12, 0x2c, + 0x0a, 0x04, 0x43, 0x6f, 0x70, 0x79, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, + 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2c, 0x0a, 0x04, + 0x53, 0x65, 0x6e, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x42, 0x75, + 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, + 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x0b, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3b, 0x0a, + 0x09, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x0e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x11, 0x2e, 0x70, + 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x45, + 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, - 0x01, 0x12, 0x45, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, - 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x44, - 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4d, 0x0a, 0x0f, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x0f, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, - 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0f, 0x52, - 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, - 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, - 0x12, 0x3b, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x14, 0x2e, - 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x44, 0x0a, - 0x0a, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, - 0x2e, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x28, - 0x01, 0x30, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x72, 0x75, 0x32, 0x2f, 0x63, 0x6f, - 0x72, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x65, 0x6e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x12, 0x56, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4d, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x70, + 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x70, 0x62, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, + 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, + 0x09, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, + 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x44, 0x0a, 0x0a, 0x52, 0x75, + 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x75, + 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, + 0x42, 0x28, 0x5a, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x72, 0x75, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, + 0x72, 0x70, 0x63, 0x2f, 0x67, 0x65, 0x6e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -6681,7 +6685,7 @@ func file_rpc_gen_core_proto_rawDescGZIP() []byte { var file_rpc_gen_core_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_rpc_gen_core_proto_msgTypes = make([]protoimpl.MessageInfo, 116) -var file_rpc_gen_core_proto_goTypes = []any{ +var file_rpc_gen_core_proto_goTypes = []interface{}{ (TriOpt)(0), // 0: pb.TriOpt (StdStreamType)(0), // 1: pb.StdStreamType (BuildImageOptions_BuildMethod)(0), // 2: pb.BuildImageOptions.BuildMethod @@ -6973,7 +6977,7 @@ func file_rpc_gen_core_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rpc_gen_core_proto_msgTypes[0].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); i { case 0: return &v.state @@ -6985,7 +6989,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[1].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CoreInfo); i { case 0: return &v.state @@ -6997,7 +7001,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[2].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceStatus); i { case 0: return &v.state @@ -7009,7 +7013,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[3].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Engine); i { case 0: return &v.state @@ -7021,7 +7025,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[4].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkloadsOptions); i { case 0: return &v.state @@ -7033,7 +7037,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[5].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Pod); i { case 0: return &v.state @@ -7045,7 +7049,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[6].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Pods); i { case 0: return &v.state @@ -7057,7 +7061,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[7].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeResource); i { case 0: return &v.state @@ -7069,7 +7073,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[8].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNetworkOptions); i { case 0: return &v.state @@ -7081,7 +7085,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[9].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConnectNetworkOptions); i { case 0: return &v.state @@ -7093,7 +7097,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[10].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DisconnectNetworkOptions); i { case 0: return &v.state @@ -7105,7 +7109,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[11].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Network); i { case 0: return &v.state @@ -7117,7 +7121,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[12].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Networks); i { case 0: return &v.state @@ -7129,7 +7133,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[13].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Node); i { case 0: return &v.state @@ -7141,7 +7145,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[14].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddPodOptions); i { case 0: return &v.state @@ -7153,7 +7157,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[15].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemovePodOptions); i { case 0: return &v.state @@ -7165,7 +7169,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[16].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPodOptions); i { case 0: return &v.state @@ -7177,7 +7181,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[17].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddNodeOptions); i { case 0: return &v.state @@ -7189,7 +7193,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[18].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveNodeOptions); i { case 0: return &v.state @@ -7201,7 +7205,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[19].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNodeOptions); i { case 0: return &v.state @@ -7213,7 +7217,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[20].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNodeResourceOptions); i { case 0: return &v.state @@ -7225,7 +7229,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[21].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNodesOptions); i { case 0: return &v.state @@ -7237,7 +7241,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[22].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetNodeOptions); i { case 0: return &v.state @@ -7249,7 +7253,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[23].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetNodeStatusOptions); i { case 0: return &v.state @@ -7261,7 +7265,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[24].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNodeStatusOptions); i { case 0: return &v.state @@ -7273,7 +7277,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[25].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeStatusStreamMessage); i { case 0: return &v.state @@ -7285,7 +7289,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[26].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeFilter); i { case 0: return &v.state @@ -7297,7 +7301,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[27].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workload); i { case 0: return &v.state @@ -7309,7 +7313,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[28].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkloadStatus); i { case 0: return &v.state @@ -7321,7 +7325,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[29].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkloadsStatus); i { case 0: return &v.state @@ -7333,7 +7337,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[30].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetWorkloadsStatusOptions); i { case 0: return &v.state @@ -7345,7 +7349,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[31].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkloadStatusStreamOptions); i { case 0: return &v.state @@ -7357,7 +7361,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[32].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkloadStatusStreamMessage); i { case 0: return &v.state @@ -7369,7 +7373,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[33].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workloads); i { case 0: return &v.state @@ -7381,7 +7385,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[34].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkloadID); i { case 0: return &v.state @@ -7393,7 +7397,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[35].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkloadIDs); i { case 0: return &v.state @@ -7405,7 +7409,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[36].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveWorkloadOptions); i { case 0: return &v.state @@ -7417,7 +7421,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[37].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DissociateWorkloadOptions); i { case 0: return &v.state @@ -7429,7 +7433,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[38].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReallocOptions); i { case 0: return &v.state @@ -7441,7 +7445,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[39].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Build); i { case 0: return &v.state @@ -7453,7 +7457,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[40].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Builds); i { case 0: return &v.state @@ -7465,7 +7469,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[41].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BuildImageOptions); i { case 0: return &v.state @@ -7477,7 +7481,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[42].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HookOptions); i { case 0: return &v.state @@ -7489,7 +7493,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[43].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HealthCheckOptions); i { case 0: return &v.state @@ -7501,7 +7505,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[44].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogOptions); i { case 0: return &v.state @@ -7513,7 +7517,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[45].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EntrypointOptions); i { case 0: return &v.state @@ -7525,7 +7529,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[46].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Volume); i { case 0: return &v.state @@ -7537,7 +7541,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[47].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeployOptions); i { case 0: return &v.state @@ -7549,7 +7553,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[48].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReplaceOptions); i { case 0: return &v.state @@ -7561,7 +7565,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[49].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CacheImageOptions); i { case 0: return &v.state @@ -7573,7 +7577,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[50].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveImageOptions); i { case 0: return &v.state @@ -7585,7 +7589,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[51].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListImageOptions); i { case 0: return &v.state @@ -7597,7 +7601,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[52].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CopyPaths); i { case 0: return &v.state @@ -7609,7 +7613,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[53].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CopyOptions); i { case 0: return &v.state @@ -7621,7 +7625,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[54].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileOwner); i { case 0: return &v.state @@ -7633,7 +7637,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[55].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileMode); i { case 0: return &v.state @@ -7645,7 +7649,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[56].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendOptions); i { case 0: return &v.state @@ -7657,7 +7661,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[57].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ErrorDetail); i { case 0: return &v.state @@ -7669,7 +7673,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[58].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BuildImageMessage); i { case 0: return &v.state @@ -7681,7 +7685,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[59].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateWorkloadMessage); i { case 0: return &v.state @@ -7693,7 +7697,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[60].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReplaceWorkloadMessage); i { case 0: return &v.state @@ -7705,7 +7709,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[61].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CacheImageMessage); i { case 0: return &v.state @@ -7717,7 +7721,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[62].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveImageMessage); i { case 0: return &v.state @@ -7729,7 +7733,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[63].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImageItem); i { case 0: return &v.state @@ -7741,7 +7745,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[64].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListImageMessage); i { case 0: return &v.state @@ -7753,7 +7757,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[65].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveWorkloadMessage); i { case 0: return &v.state @@ -7765,7 +7769,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[66].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DissociateWorkloadMessage); i { case 0: return &v.state @@ -7777,7 +7781,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[67].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReallocResourceMessage); i { case 0: return &v.state @@ -7789,7 +7793,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[68].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CopyMessage); i { case 0: return &v.state @@ -7801,7 +7805,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[69].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMessage); i { case 0: return &v.state @@ -7813,7 +7817,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[70].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AttachWorkloadMessage); i { case 0: return &v.state @@ -7825,7 +7829,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[71].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RunAndWaitOptions); i { case 0: return &v.state @@ -7837,7 +7841,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[72].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlWorkloadOptions); i { case 0: return &v.state @@ -7849,7 +7853,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[73].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlWorkloadMessage); i { case 0: return &v.state @@ -7861,7 +7865,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[74].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogStreamOptions); i { case 0: return &v.state @@ -7873,7 +7877,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[75].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogStreamMessage); i { case 0: return &v.state @@ -7885,7 +7889,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[76].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecuteWorkloadOptions); i { case 0: return &v.state @@ -7897,7 +7901,7 @@ func file_rpc_gen_core_proto_init() { return nil } } - file_rpc_gen_core_proto_msgTypes[77].Exporter = func(v any, i int) any { + file_rpc_gen_core_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CapacityMessage); i { case 0: return &v.state diff --git a/rpc/gen/core.proto b/rpc/gen/core.proto index 20c3b13e5..450c687c3 100644 --- a/rpc/gen/core.proto +++ b/rpc/gen/core.proto @@ -395,6 +395,7 @@ message DeployOptions { FILL = 1; EACH = 2; GLOBAL = 3; + DRAINED = 4; DUMMY = 99; } string name = 1001; diff --git a/rpc/gen/core_grpc.pb.go b/rpc/gen/core_grpc.pb.go index e82657fe9..23a149110 100644 --- a/rpc/gen/core_grpc.pb.go +++ b/rpc/gen/core_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.12 +// - protoc v3.12.4 // source: rpc/gen/core.proto package pb @@ -1114,7 +1114,7 @@ func RegisterCoreRPCServer(s grpc.ServiceRegistrar, srv CoreRPCServer) { s.RegisterService(&CoreRPC_ServiceDesc, srv) } -func _CoreRPC_Info_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_Info_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { return nil, err @@ -1126,13 +1126,13 @@ func _CoreRPC_Info_Handler(srv any, ctx context.Context, dec func(any) error, in Server: srv, FullMethod: "/pb.CoreRPC/Info", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).Info(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_WatchServiceStatus_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_WatchServiceStatus_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(Empty) if err := stream.RecvMsg(m); err != nil { return err @@ -1153,7 +1153,7 @@ func (x *coreRPCWatchServiceStatusServer) Send(m *ServiceStatus) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_ListNetworks_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_ListNetworks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListNetworkOptions) if err := dec(in); err != nil { return nil, err @@ -1165,13 +1165,13 @@ func _CoreRPC_ListNetworks_Handler(srv any, ctx context.Context, dec func(any) e Server: srv, FullMethod: "/pb.CoreRPC/ListNetworks", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).ListNetworks(ctx, req.(*ListNetworkOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_ConnectNetwork_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_ConnectNetwork_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ConnectNetworkOptions) if err := dec(in); err != nil { return nil, err @@ -1183,13 +1183,13 @@ func _CoreRPC_ConnectNetwork_Handler(srv any, ctx context.Context, dec func(any) Server: srv, FullMethod: "/pb.CoreRPC/ConnectNetwork", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).ConnectNetwork(ctx, req.(*ConnectNetworkOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_DisconnectNetwork_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_DisconnectNetwork_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DisconnectNetworkOptions) if err := dec(in); err != nil { return nil, err @@ -1201,13 +1201,13 @@ func _CoreRPC_DisconnectNetwork_Handler(srv any, ctx context.Context, dec func(a Server: srv, FullMethod: "/pb.CoreRPC/DisconnectNetwork", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).DisconnectNetwork(ctx, req.(*DisconnectNetworkOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_AddPod_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_AddPod_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AddPodOptions) if err := dec(in); err != nil { return nil, err @@ -1219,13 +1219,13 @@ func _CoreRPC_AddPod_Handler(srv any, ctx context.Context, dec func(any) error, Server: srv, FullMethod: "/pb.CoreRPC/AddPod", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).AddPod(ctx, req.(*AddPodOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_RemovePod_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_RemovePod_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemovePodOptions) if err := dec(in); err != nil { return nil, err @@ -1237,13 +1237,13 @@ func _CoreRPC_RemovePod_Handler(srv any, ctx context.Context, dec func(any) erro Server: srv, FullMethod: "/pb.CoreRPC/RemovePod", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).RemovePod(ctx, req.(*RemovePodOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_GetPod_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_GetPod_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetPodOptions) if err := dec(in); err != nil { return nil, err @@ -1255,13 +1255,13 @@ func _CoreRPC_GetPod_Handler(srv any, ctx context.Context, dec func(any) error, Server: srv, FullMethod: "/pb.CoreRPC/GetPod", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).GetPod(ctx, req.(*GetPodOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_ListPods_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_ListPods_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { return nil, err @@ -1273,13 +1273,13 @@ func _CoreRPC_ListPods_Handler(srv any, ctx context.Context, dec func(any) error Server: srv, FullMethod: "/pb.CoreRPC/ListPods", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).ListPods(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_GetPodResource_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_GetPodResource_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(GetPodOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1300,7 +1300,7 @@ func (x *coreRPCGetPodResourceServer) Send(m *NodeResource) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_GetNodeResource_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_GetNodeResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetNodeResourceOptions) if err := dec(in); err != nil { return nil, err @@ -1312,13 +1312,13 @@ func _CoreRPC_GetNodeResource_Handler(srv any, ctx context.Context, dec func(any Server: srv, FullMethod: "/pb.CoreRPC/GetNodeResource", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).GetNodeResource(ctx, req.(*GetNodeResourceOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_AddNode_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_AddNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AddNodeOptions) if err := dec(in); err != nil { return nil, err @@ -1330,13 +1330,13 @@ func _CoreRPC_AddNode_Handler(srv any, ctx context.Context, dec func(any) error, Server: srv, FullMethod: "/pb.CoreRPC/AddNode", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).AddNode(ctx, req.(*AddNodeOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_RemoveNode_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_RemoveNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemoveNodeOptions) if err := dec(in); err != nil { return nil, err @@ -1348,13 +1348,13 @@ func _CoreRPC_RemoveNode_Handler(srv any, ctx context.Context, dec func(any) err Server: srv, FullMethod: "/pb.CoreRPC/RemoveNode", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).RemoveNode(ctx, req.(*RemoveNodeOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_ListPodNodes_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_ListPodNodes_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(ListNodesOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1375,7 +1375,7 @@ func (x *coreRPCListPodNodesServer) Send(m *Node) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_GetNode_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_GetNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetNodeOptions) if err := dec(in); err != nil { return nil, err @@ -1387,13 +1387,13 @@ func _CoreRPC_GetNode_Handler(srv any, ctx context.Context, dec func(any) error, Server: srv, FullMethod: "/pb.CoreRPC/GetNode", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).GetNode(ctx, req.(*GetNodeOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_GetNodeEngineInfo_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_GetNodeEngineInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetNodeOptions) if err := dec(in); err != nil { return nil, err @@ -1405,13 +1405,13 @@ func _CoreRPC_GetNodeEngineInfo_Handler(srv any, ctx context.Context, dec func(a Server: srv, FullMethod: "/pb.CoreRPC/GetNodeEngineInfo", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).GetNodeEngineInfo(ctx, req.(*GetNodeOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_SetNode_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_SetNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetNodeOptions) if err := dec(in); err != nil { return nil, err @@ -1423,13 +1423,13 @@ func _CoreRPC_SetNode_Handler(srv any, ctx context.Context, dec func(any) error, Server: srv, FullMethod: "/pb.CoreRPC/SetNode", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).SetNode(ctx, req.(*SetNodeOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_GetNodeStatus_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_GetNodeStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetNodeStatusOptions) if err := dec(in); err != nil { return nil, err @@ -1441,13 +1441,13 @@ func _CoreRPC_GetNodeStatus_Handler(srv any, ctx context.Context, dec func(any) Server: srv, FullMethod: "/pb.CoreRPC/GetNodeStatus", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).GetNodeStatus(ctx, req.(*GetNodeStatusOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_SetNodeStatus_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_SetNodeStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetNodeStatusOptions) if err := dec(in); err != nil { return nil, err @@ -1459,13 +1459,13 @@ func _CoreRPC_SetNodeStatus_Handler(srv any, ctx context.Context, dec func(any) Server: srv, FullMethod: "/pb.CoreRPC/SetNodeStatus", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).SetNodeStatus(ctx, req.(*SetNodeStatusOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_NodeStatusStream_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_NodeStatusStream_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(Empty) if err := stream.RecvMsg(m); err != nil { return err @@ -1486,7 +1486,7 @@ func (x *coreRPCNodeStatusStreamServer) Send(m *NodeStatusStreamMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_GetWorkloadsStatus_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_GetWorkloadsStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(WorkloadIDs) if err := dec(in); err != nil { return nil, err @@ -1498,13 +1498,13 @@ func _CoreRPC_GetWorkloadsStatus_Handler(srv any, ctx context.Context, dec func( Server: srv, FullMethod: "/pb.CoreRPC/GetWorkloadsStatus", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).GetWorkloadsStatus(ctx, req.(*WorkloadIDs)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_SetWorkloadsStatus_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_SetWorkloadsStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetWorkloadsStatusOptions) if err := dec(in); err != nil { return nil, err @@ -1516,13 +1516,13 @@ func _CoreRPC_SetWorkloadsStatus_Handler(srv any, ctx context.Context, dec func( Server: srv, FullMethod: "/pb.CoreRPC/SetWorkloadsStatus", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).SetWorkloadsStatus(ctx, req.(*SetWorkloadsStatusOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_WorkloadStatusStream_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_WorkloadStatusStream_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(WorkloadStatusStreamOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1543,7 +1543,7 @@ func (x *coreRPCWorkloadStatusStreamServer) Send(m *WorkloadStatusStreamMessage) return x.ServerStream.SendMsg(m) } -func _CoreRPC_CalculateCapacity_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_CalculateCapacity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeployOptions) if err := dec(in); err != nil { return nil, err @@ -1555,13 +1555,13 @@ func _CoreRPC_CalculateCapacity_Handler(srv any, ctx context.Context, dec func(a Server: srv, FullMethod: "/pb.CoreRPC/CalculateCapacity", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).CalculateCapacity(ctx, req.(*DeployOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_GetWorkload_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_GetWorkload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(WorkloadID) if err := dec(in); err != nil { return nil, err @@ -1573,13 +1573,13 @@ func _CoreRPC_GetWorkload_Handler(srv any, ctx context.Context, dec func(any) er Server: srv, FullMethod: "/pb.CoreRPC/GetWorkload", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).GetWorkload(ctx, req.(*WorkloadID)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_GetWorkloads_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_GetWorkloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(WorkloadIDs) if err := dec(in); err != nil { return nil, err @@ -1591,13 +1591,13 @@ func _CoreRPC_GetWorkloads_Handler(srv any, ctx context.Context, dec func(any) e Server: srv, FullMethod: "/pb.CoreRPC/GetWorkloads", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).GetWorkloads(ctx, req.(*WorkloadIDs)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_ListWorkloads_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_ListWorkloads_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(ListWorkloadsOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1618,7 +1618,7 @@ func (x *coreRPCListWorkloadsServer) Send(m *Workload) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_ListNodeWorkloads_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_ListNodeWorkloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetNodeOptions) if err := dec(in); err != nil { return nil, err @@ -1630,13 +1630,13 @@ func _CoreRPC_ListNodeWorkloads_Handler(srv any, ctx context.Context, dec func(a Server: srv, FullMethod: "/pb.CoreRPC/ListNodeWorkloads", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).ListNodeWorkloads(ctx, req.(*GetNodeOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_Copy_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_Copy_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(CopyOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1657,7 +1657,7 @@ func (x *coreRPCCopyServer) Send(m *CopyMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_Send_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_Send_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(SendOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1678,7 +1678,7 @@ func (x *coreRPCSendServer) Send(m *SendMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_BuildImage_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_BuildImage_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(BuildImageOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1699,7 +1699,7 @@ func (x *coreRPCBuildImageServer) Send(m *BuildImageMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_CacheImage_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_CacheImage_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(CacheImageOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1720,7 +1720,7 @@ func (x *coreRPCCacheImageServer) Send(m *CacheImageMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_RemoveImage_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_RemoveImage_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(RemoveImageOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1741,7 +1741,7 @@ func (x *coreRPCRemoveImageServer) Send(m *RemoveImageMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_ListImage_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_ListImage_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(ListImageOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1762,7 +1762,7 @@ func (x *coreRPCListImageServer) Send(m *ListImageMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_CreateWorkload_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_CreateWorkload_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(DeployOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1783,7 +1783,7 @@ func (x *coreRPCCreateWorkloadServer) Send(m *CreateWorkloadMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_ReplaceWorkload_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_ReplaceWorkload_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(ReplaceOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1804,7 +1804,7 @@ func (x *coreRPCReplaceWorkloadServer) Send(m *ReplaceWorkloadMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_RemoveWorkload_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_RemoveWorkload_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(RemoveWorkloadOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1825,7 +1825,7 @@ func (x *coreRPCRemoveWorkloadServer) Send(m *RemoveWorkloadMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_DissociateWorkload_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_DissociateWorkload_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(DissociateWorkloadOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1846,7 +1846,7 @@ func (x *coreRPCDissociateWorkloadServer) Send(m *DissociateWorkloadMessage) err return x.ServerStream.SendMsg(m) } -func _CoreRPC_ControlWorkload_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_ControlWorkload_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(ControlWorkloadOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1867,7 +1867,7 @@ func (x *coreRPCControlWorkloadServer) Send(m *ControlWorkloadMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_ExecuteWorkload_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_ExecuteWorkload_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(CoreRPCServer).ExecuteWorkload(&coreRPCExecuteWorkloadServer{stream}) } @@ -1893,7 +1893,7 @@ func (x *coreRPCExecuteWorkloadServer) Recv() (*ExecuteWorkloadOptions, error) { return m, nil } -func _CoreRPC_ReallocResource_Handler(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error) { +func _CoreRPC_ReallocResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ReallocOptions) if err := dec(in); err != nil { return nil, err @@ -1905,13 +1905,13 @@ func _CoreRPC_ReallocResource_Handler(srv any, ctx context.Context, dec func(any Server: srv, FullMethod: "/pb.CoreRPC/ReallocResource", } - handler := func(ctx context.Context, req any) (any, error) { + handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CoreRPCServer).ReallocResource(ctx, req.(*ReallocOptions)) } return interceptor(ctx, in, info, handler) } -func _CoreRPC_LogStream_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_LogStream_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(LogStreamOptions) if err := stream.RecvMsg(m); err != nil { return err @@ -1932,7 +1932,7 @@ func (x *coreRPCLogStreamServer) Send(m *LogStreamMessage) error { return x.ServerStream.SendMsg(m) } -func _CoreRPC_RunAndWait_Handler(srv any, stream grpc.ServerStream) error { +func _CoreRPC_RunAndWait_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(CoreRPCServer).RunAndWait(&coreRPCRunAndWaitServer{stream}) } diff --git a/strategy/drained.go b/strategy/drained.go new file mode 100644 index 000000000..e765f7039 --- /dev/null +++ b/strategy/drained.go @@ -0,0 +1,43 @@ +package strategy + +import ( + "context" + "sort" + + "github.com/projecteru2/core/types" + + "github.com/cockroachdb/errors" +) + +// DrainedPlan 优先往Capacity最小的节点部署,尽可能把节点的资源榨干在部署下一台. +func DrainedPlan(_ context.Context, infos []Info, need, total, _ int) (map[string]int, error) { + if total < need { + return nil, errors.Wrapf(types.ErrInsufficientResource, "need: %d, available: %d", need, total) + } + + deploy := map[string]int{} + + infosCopy := make([]Info, len(infos)) + copy(infosCopy, infos) + sort.Slice(infosCopy, func(i, j int) bool { + if infosCopy[i].Capacity < infosCopy[j].Capacity { + return true + } + return infosCopy[i].Usage > infosCopy[j].Usage + }) + + for idx := 0; idx < len(infosCopy); idx++ { + info := &infosCopy[idx] + if need < info.Capacity { + deploy[info.Nodename] = need + need = 0 + } else { + deploy[info.Nodename] = info.Capacity + need -= info.Capacity + } + if need == 0 { + return deploy, nil + } + } + return nil, errors.Wrapf(types.ErrInsufficientResource, "BUG: never reach here") +} diff --git a/strategy/drained_test.go b/strategy/drained_test.go new file mode 100644 index 000000000..caa8334f9 --- /dev/null +++ b/strategy/drained_test.go @@ -0,0 +1,63 @@ +package strategy + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestDrainedPlan(t *testing.T) { + nodes := []Info{ + { + Nodename: "n1", + Capacity: 10, + Count: 2, + }, + { + Nodename: "n2", + Capacity: 9, + Count: 3, + }, + { + Nodename: "n3", + Capacity: 10, + Count: 5, + }, + { + Nodename: "n4", + Capacity: 8, + Count: 7, + }, + } + + r, err := DrainedPlan(context.Background(), nodes, 1, 100, 0) + assert.NoError(t, err) + assert.ElementsMatch(t, []int{2, 3, 5, 8}, getFinalStatus(r, nodes)) + + r, err = DrainedPlan(context.Background(), nodes, 2, 1, 0) + assert.Error(t, err) + + r, err = DrainedPlan(context.Background(), nodes, 2, 100, 0) + assert.NoError(t, err) + assert.ElementsMatch(t, []int{2, 3, 5, 9}, getFinalStatus(r, nodes)) + + r, err = DrainedPlan(context.Background(), nodes, 3, 100, 0) + assert.ElementsMatch(t, []int{2, 3, 5, 10}, getFinalStatus(r, nodes)) + + r, err = DrainedPlan(context.Background(), nodes, 10, 100, 0) + assert.NoError(t, err) + assert.ElementsMatch(t, []int{2, 5, 5, 15}, getFinalStatus(r, nodes)) + + r, err = DrainedPlan(context.Background(), nodes, 25, 100, 0) + assert.NoError(t, err) + assert.ElementsMatch(t, []int{10, 12, 5, 15}, getFinalStatus(r, nodes)) + + r, err = DrainedPlan(context.Background(), nodes, 29, 100, 0) + assert.NoError(t, err) + assert.ElementsMatch(t, []int{12, 12, 7, 15}, getFinalStatus(r, nodes)) + + r, err = DrainedPlan(context.Background(), nodes, 37, 100, 0) + assert.NoError(t, err) + assert.ElementsMatch(t, []int{12, 12, 15, 15}, getFinalStatus(r, nodes)) +} diff --git a/strategy/strategy.go b/strategy/strategy.go index 66bd2df11..c724cb04f 100644 --- a/strategy/strategy.go +++ b/strategy/strategy.go @@ -16,16 +16,19 @@ const ( Each = "EACH" // Global . Global = "GLOBAL" + // Drained . + Drained = "DRAINED" // Dummy for calculate capacity Dummy = "DUMMY" ) // Plans . var Plans = map[string]strategyFunc{ - Auto: CommunismPlan, - Fill: FillPlan, - Each: AveragePlan, - Global: GlobalPlan, + Auto: CommunismPlan, + Fill: FillPlan, + Each: AveragePlan, + Global: GlobalPlan, + Drained: DrainedPlan, } type strategyFunc = func(_ context.Context, _ []Info, need, total, limit int) (map[string]int, error) @@ -40,7 +43,7 @@ func Deploy(ctx context.Context, strategy string, count, nodesLimit int, strateg return nil, types.ErrInvaildDeployCount } - log.WithFunc("strategy.Deploy").Debugf(ctx, "infos %+v, need %d, total %d, limit %d", strategyInfos, count, total, nodesLimit) + log.WithFunc("strategy.Deploy").Debugf(ctx, "strategy %s, infos %+v, need %d, total %d, limit %d", strategy, strategyInfos, count, total, nodesLimit) return deployMethod(ctx, strategyInfos, count, total, nodesLimit) }