From 47c77fcdbb9dd7e526bbbafd0d9dbddcd3efd75d Mon Sep 17 00:00:00 2001 From: jjxu <428192774@qq.com> Date: Thu, 12 Jun 2025 17:07:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=A2=E6=9C=8D=E8=81=8A=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/accountFiee/accountFiee.pb.go | 6782 ++++++++++++++----- api/accountFiee/accountFiee.proto | 236 +- api/accountFiee/accountFiee.validator.pb.go | 3 + api/accountFiee/accountFiee_triple.pb.go | 1229 +++- go.mod | 1 + pkg/cache/common.go | 2 +- pkg/common/ws/base.go | 178 + pkg/common/ws/chatRoom.go | 315 + pkg/common/ws/client.go | 111 + pkg/common/ws/ginWSUpgrade.go | 21 + pkg/common/ws/readme.md | 53 + pkg/common/ws/wsMessageHandle.go | 144 + pkg/common/ws/wsRoom.html | 127 + pkg/e/chatCode.go | 61 + pkg/e/code.go | 9 + pkg/e/msg.go | 2 + pkg/router/router.go | 18 +- pkg/serializer/common.go | 22 +- pkg/service/asChat/cache.go | 241 + pkg/service/asChat/chatRoom.go | 33 + pkg/service/asChat/dto.go | 130 + pkg/service/asChat/handler.go | 577 ++ pkg/service/asChat/readme.md | 26 + pkg/service/asChat/service.go | 46 + pkg/service/upload/upload.go | 15 + pkg/utils/if.go | 47 + pkg/utils/unqiue.go | 19 + 27 files changed, 8621 insertions(+), 1827 deletions(-) create mode 100644 pkg/common/ws/base.go create mode 100644 pkg/common/ws/chatRoom.go create mode 100644 pkg/common/ws/client.go create mode 100644 pkg/common/ws/ginWSUpgrade.go create mode 100644 pkg/common/ws/readme.md create mode 100644 pkg/common/ws/wsMessageHandle.go create mode 100644 pkg/common/ws/wsRoom.html create mode 100644 pkg/e/chatCode.go create mode 100644 pkg/service/asChat/cache.go create mode 100644 pkg/service/asChat/chatRoom.go create mode 100644 pkg/service/asChat/dto.go create mode 100644 pkg/service/asChat/handler.go create mode 100644 pkg/service/asChat/readme.md create mode 100644 pkg/service/asChat/service.go create mode 100644 pkg/utils/if.go create mode 100644 pkg/utils/unqiue.go diff --git a/api/accountFiee/accountFiee.pb.go b/api/accountFiee/accountFiee.pb.go index 579c1dd..4ad8909 100644 --- a/api/accountFiee/accountFiee.pb.go +++ b/api/accountFiee/accountFiee.pb.go @@ -17,8 +17,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v4.24.0--rc1 -// source: api/accountFiee/accountFiee.proto +// protoc v4.22.0--rc2 +// source: accountFiee.proto package accountFiee @@ -37,6 +37,64 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type MsgType int32 + +const ( + MsgType_UnknownMsgType MsgType = 0 //未知类型 + MsgType_TextMsgType MsgType = 1 //文本 + MsgType_ImageMsgType MsgType = 2 //图片 + MsgType_AudioMsgType MsgType = 3 //音频 + MsgType_VideoMsgType MsgType = 4 //视频 + MsgType_FileType MsgType = 5 //文件 +) + +// Enum value maps for MsgType. +var ( + MsgType_name = map[int32]string{ + 0: "UnknownMsgType", + 1: "TextMsgType", + 2: "ImageMsgType", + 3: "AudioMsgType", + 4: "VideoMsgType", + 5: "FileType", + } + MsgType_value = map[string]int32{ + "UnknownMsgType": 0, + "TextMsgType": 1, + "ImageMsgType": 2, + "AudioMsgType": 3, + "VideoMsgType": 4, + "FileType": 5, + } +) + +func (x MsgType) Enum() *MsgType { + p := new(MsgType) + *p = x + return p +} + +func (x MsgType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MsgType) Descriptor() protoreflect.EnumDescriptor { + return file_accountFiee_proto_enumTypes[0].Descriptor() +} + +func (MsgType) Type() protoreflect.EnumType { + return &file_accountFiee_proto_enumTypes[0] +} + +func (x MsgType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MsgType.Descriptor instead. +func (MsgType) EnumDescriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{0} +} + type VerifySliderStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -48,7 +106,7 @@ type VerifySliderStatusRequest struct { func (x *VerifySliderStatusRequest) Reset() { *x = VerifySliderStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[0] + mi := &file_accountFiee_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -61,7 +119,7 @@ func (x *VerifySliderStatusRequest) String() string { func (*VerifySliderStatusRequest) ProtoMessage() {} func (x *VerifySliderStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[0] + mi := &file_accountFiee_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74,7 +132,7 @@ func (x *VerifySliderStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifySliderStatusRequest.ProtoReflect.Descriptor instead. func (*VerifySliderStatusRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{0} + return file_accountFiee_proto_rawDescGZIP(), []int{0} } func (x *VerifySliderStatusRequest) GetNonceStr() string { @@ -96,7 +154,7 @@ type VerifySliderStatusResponse struct { func (x *VerifySliderStatusResponse) Reset() { *x = VerifySliderStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[1] + mi := &file_accountFiee_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -109,7 +167,7 @@ func (x *VerifySliderStatusResponse) String() string { func (*VerifySliderStatusResponse) ProtoMessage() {} func (x *VerifySliderStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[1] + mi := &file_accountFiee_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -122,7 +180,7 @@ func (x *VerifySliderStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifySliderStatusResponse.ProtoReflect.Descriptor instead. func (*VerifySliderStatusResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{1} + return file_accountFiee_proto_rawDescGZIP(), []int{1} } func (x *VerifySliderStatusResponse) GetNonceStr() string { @@ -155,7 +213,7 @@ type SendNationMsgRequest struct { func (x *SendNationMsgRequest) Reset() { *x = SendNationMsgRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[2] + mi := &file_accountFiee_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -168,7 +226,7 @@ func (x *SendNationMsgRequest) String() string { func (*SendNationMsgRequest) ProtoMessage() {} func (x *SendNationMsgRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[2] + mi := &file_accountFiee_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -181,7 +239,7 @@ func (x *SendNationMsgRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendNationMsgRequest.ProtoReflect.Descriptor instead. func (*SendNationMsgRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{2} + return file_accountFiee_proto_rawDescGZIP(), []int{2} } func (x *SendNationMsgRequest) GetDomain() string { @@ -237,7 +295,7 @@ type VerifySliderCaptchaResponse struct { func (x *VerifySliderCaptchaResponse) Reset() { *x = VerifySliderCaptchaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[3] + mi := &file_accountFiee_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -250,7 +308,7 @@ func (x *VerifySliderCaptchaResponse) String() string { func (*VerifySliderCaptchaResponse) ProtoMessage() {} func (x *VerifySliderCaptchaResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[3] + mi := &file_accountFiee_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -263,7 +321,7 @@ func (x *VerifySliderCaptchaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifySliderCaptchaResponse.ProtoReflect.Descriptor instead. func (*VerifySliderCaptchaResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{3} + return file_accountFiee_proto_rawDescGZIP(), []int{3} } func (x *VerifySliderCaptchaResponse) GetNonceStr() string { @@ -285,7 +343,7 @@ type VerifySliderCaptchaRequest struct { func (x *VerifySliderCaptchaRequest) Reset() { *x = VerifySliderCaptchaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[4] + mi := &file_accountFiee_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -298,7 +356,7 @@ func (x *VerifySliderCaptchaRequest) String() string { func (*VerifySliderCaptchaRequest) ProtoMessage() {} func (x *VerifySliderCaptchaRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[4] + mi := &file_accountFiee_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -311,7 +369,7 @@ func (x *VerifySliderCaptchaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifySliderCaptchaRequest.ProtoReflect.Descriptor instead. func (*VerifySliderCaptchaRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{4} + return file_accountFiee_proto_rawDescGZIP(), []int{4} } func (x *VerifySliderCaptchaRequest) GetNonceStr() string { @@ -344,7 +402,7 @@ type GenerateSliderCaptchaResponse struct { func (x *GenerateSliderCaptchaResponse) Reset() { *x = GenerateSliderCaptchaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[5] + mi := &file_accountFiee_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -357,7 +415,7 @@ func (x *GenerateSliderCaptchaResponse) String() string { func (*GenerateSliderCaptchaResponse) ProtoMessage() {} func (x *GenerateSliderCaptchaResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[5] + mi := &file_accountFiee_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -370,7 +428,7 @@ func (x *GenerateSliderCaptchaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateSliderCaptchaResponse.ProtoReflect.Descriptor instead. func (*GenerateSliderCaptchaResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{5} + return file_accountFiee_proto_rawDescGZIP(), []int{5} } func (x *GenerateSliderCaptchaResponse) GetNonceStr() string { @@ -431,7 +489,7 @@ type GenerateSliderCaptchaRequest struct { func (x *GenerateSliderCaptchaRequest) Reset() { *x = GenerateSliderCaptchaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[6] + mi := &file_accountFiee_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -444,7 +502,7 @@ func (x *GenerateSliderCaptchaRequest) String() string { func (*GenerateSliderCaptchaRequest) ProtoMessage() {} func (x *GenerateSliderCaptchaRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[6] + mi := &file_accountFiee_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -457,7 +515,7 @@ func (x *GenerateSliderCaptchaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateSliderCaptchaRequest.ProtoReflect.Descriptor instead. func (*GenerateSliderCaptchaRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{6} + return file_accountFiee_proto_rawDescGZIP(), []int{6} } func (x *GenerateSliderCaptchaRequest) GetCanvasWidth() uint64 { @@ -514,7 +572,7 @@ type CheckRealNameResponse struct { func (x *CheckRealNameResponse) Reset() { *x = CheckRealNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[7] + mi := &file_accountFiee_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -527,7 +585,7 @@ func (x *CheckRealNameResponse) String() string { func (*CheckRealNameResponse) ProtoMessage() {} func (x *CheckRealNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[7] + mi := &file_accountFiee_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -540,7 +598,7 @@ func (x *CheckRealNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckRealNameResponse.ProtoReflect.Descriptor instead. func (*CheckRealNameResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{7} + return file_accountFiee_proto_rawDescGZIP(), []int{7} } func (x *CheckRealNameResponse) GetId() uint64 { @@ -570,7 +628,7 @@ type CheckRealNameRequest struct { func (x *CheckRealNameRequest) Reset() { *x = CheckRealNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[8] + mi := &file_accountFiee_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -583,7 +641,7 @@ func (x *CheckRealNameRequest) String() string { func (*CheckRealNameRequest) ProtoMessage() {} func (x *CheckRealNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[8] + mi := &file_accountFiee_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -596,7 +654,7 @@ func (x *CheckRealNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckRealNameRequest.ProtoReflect.Descriptor instead. func (*CheckRealNameRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{8} + return file_accountFiee_proto_rawDescGZIP(), []int{8} } func (x *CheckRealNameRequest) GetId() uint64 { @@ -634,7 +692,7 @@ type UserListResponse struct { func (x *UserListResponse) Reset() { *x = UserListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[9] + mi := &file_accountFiee_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -647,7 +705,7 @@ func (x *UserListResponse) String() string { func (*UserListResponse) ProtoMessage() {} func (x *UserListResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[9] + mi := &file_accountFiee_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -660,7 +718,7 @@ func (x *UserListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UserListResponse.ProtoReflect.Descriptor instead. func (*UserListResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{9} + return file_accountFiee_proto_rawDescGZIP(), []int{9} } func (x *UserListResponse) GetCount() uint64 { @@ -721,7 +779,7 @@ type UserListInfo struct { func (x *UserListInfo) Reset() { *x = UserListInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[10] + mi := &file_accountFiee_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -734,7 +792,7 @@ func (x *UserListInfo) String() string { func (*UserListInfo) ProtoMessage() {} func (x *UserListInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[10] + mi := &file_accountFiee_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -747,7 +805,7 @@ func (x *UserListInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use UserListInfo.ProtoReflect.Descriptor instead. func (*UserListInfo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{10} + return file_accountFiee_proto_rawDescGZIP(), []int{10} } func (x *UserListInfo) GetId() uint64 { @@ -909,7 +967,7 @@ type UserListRequest struct { func (x *UserListRequest) Reset() { *x = UserListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[11] + mi := &file_accountFiee_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -922,7 +980,7 @@ func (x *UserListRequest) String() string { func (*UserListRequest) ProtoMessage() {} func (x *UserListRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[11] + mi := &file_accountFiee_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -935,7 +993,7 @@ func (x *UserListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UserListRequest.ProtoReflect.Descriptor instead. func (*UserListRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{11} + return file_accountFiee_proto_rawDescGZIP(), []int{11} } func (x *UserListRequest) GetDomain() string { @@ -1029,7 +1087,7 @@ type UserInfoResponse struct { func (x *UserInfoResponse) Reset() { *x = UserInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[12] + mi := &file_accountFiee_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1042,7 +1100,7 @@ func (x *UserInfoResponse) String() string { func (*UserInfoResponse) ProtoMessage() {} func (x *UserInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[12] + mi := &file_accountFiee_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1055,7 +1113,7 @@ func (x *UserInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UserInfoResponse.ProtoReflect.Descriptor instead. func (*UserInfoResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{12} + return file_accountFiee_proto_rawDescGZIP(), []int{12} } func (x *UserInfoResponse) GetId() uint64 { @@ -1196,7 +1254,7 @@ type RealNameResponse struct { func (x *RealNameResponse) Reset() { *x = RealNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[13] + mi := &file_accountFiee_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1209,7 +1267,7 @@ func (x *RealNameResponse) String() string { func (*RealNameResponse) ProtoMessage() {} func (x *RealNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[13] + mi := &file_accountFiee_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1222,7 +1280,7 @@ func (x *RealNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RealNameResponse.ProtoReflect.Descriptor instead. func (*RealNameResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{13} + return file_accountFiee_proto_rawDescGZIP(), []int{13} } func (x *RealNameResponse) GetId() uint64 { @@ -1259,7 +1317,7 @@ type RealNameRequest struct { func (x *RealNameRequest) Reset() { *x = RealNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[14] + mi := &file_accountFiee_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1272,7 +1330,7 @@ func (x *RealNameRequest) String() string { func (*RealNameRequest) ProtoMessage() {} func (x *RealNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[14] + mi := &file_accountFiee_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1285,7 +1343,7 @@ func (x *RealNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RealNameRequest.ProtoReflect.Descriptor instead. func (*RealNameRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{14} + return file_accountFiee_proto_rawDescGZIP(), []int{14} } func (x *RealNameRequest) GetId() uint64 { @@ -1371,7 +1429,7 @@ type RegisterResponse struct { func (x *RegisterResponse) Reset() { *x = RegisterResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[15] + mi := &file_accountFiee_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1384,7 +1442,7 @@ func (x *RegisterResponse) String() string { func (*RegisterResponse) ProtoMessage() {} func (x *RegisterResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[15] + mi := &file_accountFiee_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1397,7 +1455,7 @@ func (x *RegisterResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterResponse.ProtoReflect.Descriptor instead. func (*RegisterResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{15} + return file_accountFiee_proto_rawDescGZIP(), []int{15} } func (x *RegisterResponse) GetID() uint64 { @@ -1433,7 +1491,7 @@ type UsersByJobNumRequest struct { func (x *UsersByJobNumRequest) Reset() { *x = UsersByJobNumRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[16] + mi := &file_accountFiee_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1446,7 +1504,7 @@ func (x *UsersByJobNumRequest) String() string { func (*UsersByJobNumRequest) ProtoMessage() {} func (x *UsersByJobNumRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[16] + mi := &file_accountFiee_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1459,7 +1517,7 @@ func (x *UsersByJobNumRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersByJobNumRequest.ProtoReflect.Descriptor instead. func (*UsersByJobNumRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{16} + return file_accountFiee_proto_rawDescGZIP(), []int{16} } func (x *UsersByJobNumRequest) GetDomain() string { @@ -1489,7 +1547,7 @@ type QueryPersonnelWithTheSameNameRequest struct { func (x *QueryPersonnelWithTheSameNameRequest) Reset() { *x = QueryPersonnelWithTheSameNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[17] + mi := &file_accountFiee_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1502,7 +1560,7 @@ func (x *QueryPersonnelWithTheSameNameRequest) String() string { func (*QueryPersonnelWithTheSameNameRequest) ProtoMessage() {} func (x *QueryPersonnelWithTheSameNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[17] + mi := &file_accountFiee_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1515,7 +1573,7 @@ func (x *QueryPersonnelWithTheSameNameRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use QueryPersonnelWithTheSameNameRequest.ProtoReflect.Descriptor instead. func (*QueryPersonnelWithTheSameNameRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{17} + return file_accountFiee_proto_rawDescGZIP(), []int{17} } func (x *QueryPersonnelWithTheSameNameRequest) GetNames() []string { @@ -1551,7 +1609,7 @@ type QueryPersonnelWithTheSameNameResponse struct { func (x *QueryPersonnelWithTheSameNameResponse) Reset() { *x = QueryPersonnelWithTheSameNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[18] + mi := &file_accountFiee_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1564,7 +1622,7 @@ func (x *QueryPersonnelWithTheSameNameResponse) String() string { func (*QueryPersonnelWithTheSameNameResponse) ProtoMessage() {} func (x *QueryPersonnelWithTheSameNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[18] + mi := &file_accountFiee_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1577,7 +1635,7 @@ func (x *QueryPersonnelWithTheSameNameResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use QueryPersonnelWithTheSameNameResponse.ProtoReflect.Descriptor instead. func (*QueryPersonnelWithTheSameNameResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{18} + return file_accountFiee_proto_rawDescGZIP(), []int{18} } func (x *QueryPersonnelWithTheSameNameResponse) GetNames() []string { @@ -1622,7 +1680,7 @@ type ListV2Request struct { func (x *ListV2Request) Reset() { *x = ListV2Request{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[19] + mi := &file_accountFiee_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1635,7 +1693,7 @@ func (x *ListV2Request) String() string { func (*ListV2Request) ProtoMessage() {} func (x *ListV2Request) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[19] + mi := &file_accountFiee_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1648,7 +1706,7 @@ func (x *ListV2Request) ProtoReflect() protoreflect.Message { // Deprecated: Use ListV2Request.ProtoReflect.Descriptor instead. func (*ListV2Request) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{19} + return file_accountFiee_proto_rawDescGZIP(), []int{19} } func (x *ListV2Request) GetDomain() string { @@ -1795,7 +1853,7 @@ type SendClockInWechatRequest struct { func (x *SendClockInWechatRequest) Reset() { *x = SendClockInWechatRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[20] + mi := &file_accountFiee_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1808,7 +1866,7 @@ func (x *SendClockInWechatRequest) String() string { func (*SendClockInWechatRequest) ProtoMessage() {} func (x *SendClockInWechatRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[20] + mi := &file_accountFiee_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1821,7 +1879,7 @@ func (x *SendClockInWechatRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendClockInWechatRequest.ProtoReflect.Descriptor instead. func (*SendClockInWechatRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{20} + return file_accountFiee_proto_rawDescGZIP(), []int{20} } func (x *SendClockInWechatRequest) GetDomain() string { @@ -1893,7 +1951,7 @@ type MailAccountByNickNameRequest struct { func (x *MailAccountByNickNameRequest) Reset() { *x = MailAccountByNickNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[21] + mi := &file_accountFiee_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1906,7 +1964,7 @@ func (x *MailAccountByNickNameRequest) String() string { func (*MailAccountByNickNameRequest) ProtoMessage() {} func (x *MailAccountByNickNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[21] + mi := &file_accountFiee_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1919,7 +1977,7 @@ func (x *MailAccountByNickNameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MailAccountByNickNameRequest.ProtoReflect.Descriptor instead. func (*MailAccountByNickNameRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{21} + return file_accountFiee_proto_rawDescGZIP(), []int{21} } func (x *MailAccountByNickNameRequest) GetDomain() string { @@ -1956,7 +2014,7 @@ type CreateMaiAccountRequest struct { func (x *CreateMaiAccountRequest) Reset() { *x = CreateMaiAccountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[22] + mi := &file_accountFiee_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1969,7 +2027,7 @@ func (x *CreateMaiAccountRequest) String() string { func (*CreateMaiAccountRequest) ProtoMessage() {} func (x *CreateMaiAccountRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[22] + mi := &file_accountFiee_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1982,7 +2040,7 @@ func (x *CreateMaiAccountRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMaiAccountRequest.ProtoReflect.Descriptor instead. func (*CreateMaiAccountRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{22} + return file_accountFiee_proto_rawDescGZIP(), []int{22} } func (x *CreateMaiAccountRequest) GetID() uint32 { @@ -2018,7 +2076,7 @@ type MaiAccountResponse struct { func (x *MaiAccountResponse) Reset() { *x = MaiAccountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[23] + mi := &file_accountFiee_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2031,7 +2089,7 @@ func (x *MaiAccountResponse) String() string { func (*MaiAccountResponse) ProtoMessage() {} func (x *MaiAccountResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[23] + mi := &file_accountFiee_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2044,7 +2102,7 @@ func (x *MaiAccountResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MaiAccountResponse.ProtoReflect.Descriptor instead. func (*MaiAccountResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{23} + return file_accountFiee_proto_rawDescGZIP(), []int{23} } func (x *MaiAccountResponse) GetEnglishName() string { @@ -2068,7 +2126,7 @@ type FddCreateUserRequest struct { Openid string `protobuf:"bytes,1,opt,name=openid,proto3" json:"openid,omitempty"` WxUserId uint32 `protobuf:"varint,2,opt,name=wxUserId,proto3" json:"wxUserId,omitempty"` - //string UserId = 3; + // string UserId = 3; CustomerId string `protobuf:"bytes,4,opt,name=customerId,proto3" json:"customerId,omitempty"` IsVerify bool `protobuf:"varint,5,opt,name=isVerify,proto3" json:"isVerify,omitempty"` TransactionNo string `protobuf:"bytes,6,opt,name=transactionNo,proto3" json:"transactionNo,omitempty"` @@ -2077,7 +2135,7 @@ type FddCreateUserRequest struct { func (x *FddCreateUserRequest) Reset() { *x = FddCreateUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[24] + mi := &file_accountFiee_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2090,7 +2148,7 @@ func (x *FddCreateUserRequest) String() string { func (*FddCreateUserRequest) ProtoMessage() {} func (x *FddCreateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[24] + mi := &file_accountFiee_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2103,7 +2161,7 @@ func (x *FddCreateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FddCreateUserRequest.ProtoReflect.Descriptor instead. func (*FddCreateUserRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{24} + return file_accountFiee_proto_rawDescGZIP(), []int{24} } func (x *FddCreateUserRequest) GetOpenid() string { @@ -2153,7 +2211,7 @@ type WxBoxUserInfoRequest struct { func (x *WxBoxUserInfoRequest) Reset() { *x = WxBoxUserInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[25] + mi := &file_accountFiee_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2166,7 +2224,7 @@ func (x *WxBoxUserInfoRequest) String() string { func (*WxBoxUserInfoRequest) ProtoMessage() {} func (x *WxBoxUserInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[25] + mi := &file_accountFiee_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2179,7 +2237,7 @@ func (x *WxBoxUserInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WxBoxUserInfoRequest.ProtoReflect.Descriptor instead. func (*WxBoxUserInfoRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{25} + return file_accountFiee_proto_rawDescGZIP(), []int{25} } func (x *WxBoxUserInfoRequest) GetOpenid() string { @@ -2209,7 +2267,7 @@ type WxGetOpenIdByCodeRequest struct { func (x *WxGetOpenIdByCodeRequest) Reset() { *x = WxGetOpenIdByCodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[26] + mi := &file_accountFiee_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2222,7 +2280,7 @@ func (x *WxGetOpenIdByCodeRequest) String() string { func (*WxGetOpenIdByCodeRequest) ProtoMessage() {} func (x *WxGetOpenIdByCodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[26] + mi := &file_accountFiee_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2235,7 +2293,7 @@ func (x *WxGetOpenIdByCodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WxGetOpenIdByCodeRequest.ProtoReflect.Descriptor instead. func (*WxGetOpenIdByCodeRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{26} + return file_accountFiee_proto_rawDescGZIP(), []int{26} } func (x *WxGetOpenIdByCodeRequest) GetCode() string { @@ -2270,7 +2328,7 @@ type WxGetOpenIdByCodeResponse struct { func (x *WxGetOpenIdByCodeResponse) Reset() { *x = WxGetOpenIdByCodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[27] + mi := &file_accountFiee_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2283,7 +2341,7 @@ func (x *WxGetOpenIdByCodeResponse) String() string { func (*WxGetOpenIdByCodeResponse) ProtoMessage() {} func (x *WxGetOpenIdByCodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[27] + mi := &file_accountFiee_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2296,7 +2354,7 @@ func (x *WxGetOpenIdByCodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WxGetOpenIdByCodeResponse.ProtoReflect.Descriptor instead. func (*WxGetOpenIdByCodeResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{27} + return file_accountFiee_proto_rawDescGZIP(), []int{27} } func (x *WxGetOpenIdByCodeResponse) GetOpenId() string { @@ -2317,7 +2375,7 @@ type WxBoxTelNumByCodeResponse struct { func (x *WxBoxTelNumByCodeResponse) Reset() { *x = WxBoxTelNumByCodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[28] + mi := &file_accountFiee_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2330,7 +2388,7 @@ func (x *WxBoxTelNumByCodeResponse) String() string { func (*WxBoxTelNumByCodeResponse) ProtoMessage() {} func (x *WxBoxTelNumByCodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[28] + mi := &file_accountFiee_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2343,7 +2401,7 @@ func (x *WxBoxTelNumByCodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WxBoxTelNumByCodeResponse.ProtoReflect.Descriptor instead. func (*WxBoxTelNumByCodeResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{28} + return file_accountFiee_proto_rawDescGZIP(), []int{28} } func (x *WxBoxTelNumByCodeResponse) GetTelNum() string { @@ -2369,7 +2427,7 @@ type WxBoxUserInfo struct { func (x *WxBoxUserInfo) Reset() { *x = WxBoxUserInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[29] + mi := &file_accountFiee_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2382,7 +2440,7 @@ func (x *WxBoxUserInfo) String() string { func (*WxBoxUserInfo) ProtoMessage() {} func (x *WxBoxUserInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[29] + mi := &file_accountFiee_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2395,7 +2453,7 @@ func (x *WxBoxUserInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WxBoxUserInfo.ProtoReflect.Descriptor instead. func (*WxBoxUserInfo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{29} + return file_accountFiee_proto_rawDescGZIP(), []int{29} } func (x *WxBoxUserInfo) GetOpenId() string { @@ -2454,7 +2512,7 @@ type FddInfo struct { func (x *FddInfo) Reset() { *x = FddInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[30] + mi := &file_accountFiee_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2467,7 +2525,7 @@ func (x *FddInfo) String() string { func (*FddInfo) ProtoMessage() {} func (x *FddInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[30] + mi := &file_accountFiee_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2480,7 +2538,7 @@ func (x *FddInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use FddInfo.ProtoReflect.Descriptor instead. func (*FddInfo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{30} + return file_accountFiee_proto_rawDescGZIP(), []int{30} } func (x *FddInfo) GetID() uint64 { @@ -2534,7 +2592,7 @@ type UserInfo struct { func (x *UserInfo) Reset() { *x = UserInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[31] + mi := &file_accountFiee_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2547,7 +2605,7 @@ func (x *UserInfo) String() string { func (*UserInfo) ProtoMessage() {} func (x *UserInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[31] + mi := &file_accountFiee_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2560,7 +2618,7 @@ func (x *UserInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use UserInfo.ProtoReflect.Descriptor instead. func (*UserInfo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{31} + return file_accountFiee_proto_rawDescGZIP(), []int{31} } func (x *UserInfo) GetID() uint64 { @@ -2665,7 +2723,7 @@ type CommonRequest struct { func (x *CommonRequest) Reset() { *x = CommonRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[32] + mi := &file_accountFiee_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2678,7 +2736,7 @@ func (x *CommonRequest) String() string { func (*CommonRequest) ProtoMessage() {} func (x *CommonRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[32] + mi := &file_accountFiee_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2691,7 +2749,7 @@ func (x *CommonRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonRequest.ProtoReflect.Descriptor instead. func (*CommonRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{32} + return file_accountFiee_proto_rawDescGZIP(), []int{32} } func (x *CommonRequest) GetID() uint64 { @@ -2712,7 +2770,7 @@ type WxAppRequest struct { func (x *WxAppRequest) Reset() { *x = WxAppRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[33] + mi := &file_accountFiee_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2725,7 +2783,7 @@ func (x *WxAppRequest) String() string { func (*WxAppRequest) ProtoMessage() {} func (x *WxAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[33] + mi := &file_accountFiee_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2738,7 +2796,7 @@ func (x *WxAppRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WxAppRequest.ProtoReflect.Descriptor instead. func (*WxAppRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{33} + return file_accountFiee_proto_rawDescGZIP(), []int{33} } func (x *WxAppRequest) GetGhId() string { @@ -2760,7 +2818,7 @@ type WxAppResponse struct { func (x *WxAppResponse) Reset() { *x = WxAppResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[34] + mi := &file_accountFiee_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2773,7 +2831,7 @@ func (x *WxAppResponse) String() string { func (*WxAppResponse) ProtoMessage() {} func (x *WxAppResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[34] + mi := &file_accountFiee_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2786,7 +2844,7 @@ func (x *WxAppResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WxAppResponse.ProtoReflect.Descriptor instead. func (*WxAppResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{34} + return file_accountFiee_proto_rawDescGZIP(), []int{34} } func (x *WxAppResponse) GetAppID() string { @@ -2815,7 +2873,7 @@ type WxUserUpdateRequest struct { func (x *WxUserUpdateRequest) Reset() { *x = WxUserUpdateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[35] + mi := &file_accountFiee_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2828,7 +2886,7 @@ func (x *WxUserUpdateRequest) String() string { func (*WxUserUpdateRequest) ProtoMessage() {} func (x *WxUserUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[35] + mi := &file_accountFiee_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2841,7 +2899,7 @@ func (x *WxUserUpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WxUserUpdateRequest.ProtoReflect.Descriptor instead. func (*WxUserUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{35} + return file_accountFiee_proto_rawDescGZIP(), []int{35} } func (x *WxUserUpdateRequest) GetWxID() uint32 { @@ -2870,7 +2928,7 @@ type WxUserOrCreateRequest struct { func (x *WxUserOrCreateRequest) Reset() { *x = WxUserOrCreateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[36] + mi := &file_accountFiee_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2883,7 +2941,7 @@ func (x *WxUserOrCreateRequest) String() string { func (*WxUserOrCreateRequest) ProtoMessage() {} func (x *WxUserOrCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[36] + mi := &file_accountFiee_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2896,7 +2954,7 @@ func (x *WxUserOrCreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WxUserOrCreateRequest.ProtoReflect.Descriptor instead. func (*WxUserOrCreateRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{36} + return file_accountFiee_proto_rawDescGZIP(), []int{36} } func (x *WxUserOrCreateRequest) GetOpenID() string { @@ -2928,7 +2986,7 @@ type WxUserResponse struct { func (x *WxUserResponse) Reset() { *x = WxUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[37] + mi := &file_accountFiee_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2941,7 +2999,7 @@ func (x *WxUserResponse) String() string { func (*WxUserResponse) ProtoMessage() {} func (x *WxUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[37] + mi := &file_accountFiee_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2954,7 +3012,7 @@ func (x *WxUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WxUserResponse.ProtoReflect.Descriptor instead. func (*WxUserResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{37} + return file_accountFiee_proto_rawDescGZIP(), []int{37} } func (x *WxUserResponse) GetOpenID() string { @@ -3003,7 +3061,7 @@ type LoginLogsResponse struct { func (x *LoginLogsResponse) Reset() { *x = LoginLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[38] + mi := &file_accountFiee_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3016,7 +3074,7 @@ func (x *LoginLogsResponse) String() string { func (*LoginLogsResponse) ProtoMessage() {} func (x *LoginLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[38] + mi := &file_accountFiee_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3029,7 +3087,7 @@ func (x *LoginLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginLogsResponse.ProtoReflect.Descriptor instead. func (*LoginLogsResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{38} + return file_accountFiee_proto_rawDescGZIP(), []int{38} } func (x *LoginLogsResponse) GetData() []*LoginLog { @@ -3060,7 +3118,7 @@ type LoginLog struct { func (x *LoginLog) Reset() { *x = LoginLog{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[39] + mi := &file_accountFiee_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3073,7 +3131,7 @@ func (x *LoginLog) String() string { func (*LoginLog) ProtoMessage() {} func (x *LoginLog) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[39] + mi := &file_accountFiee_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3086,7 +3144,7 @@ func (x *LoginLog) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginLog.ProtoReflect.Descriptor instead. func (*LoginLog) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{39} + return file_accountFiee_proto_rawDescGZIP(), []int{39} } func (x *LoginLog) GetDomain() string { @@ -3178,7 +3236,7 @@ type OnlineLogByIdRequest struct { func (x *OnlineLogByIdRequest) Reset() { *x = OnlineLogByIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[40] + mi := &file_accountFiee_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3191,7 +3249,7 @@ func (x *OnlineLogByIdRequest) String() string { func (*OnlineLogByIdRequest) ProtoMessage() {} func (x *OnlineLogByIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[40] + mi := &file_accountFiee_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3204,7 +3262,7 @@ func (x *OnlineLogByIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OnlineLogByIdRequest.ProtoReflect.Descriptor instead. func (*OnlineLogByIdRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{40} + return file_accountFiee_proto_rawDescGZIP(), []int{40} } func (x *OnlineLogByIdRequest) GetDomain() string { @@ -3233,7 +3291,7 @@ type LoginInfosByUserIdRequest struct { func (x *LoginInfosByUserIdRequest) Reset() { *x = LoginInfosByUserIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[41] + mi := &file_accountFiee_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3246,7 +3304,7 @@ func (x *LoginInfosByUserIdRequest) String() string { func (*LoginInfosByUserIdRequest) ProtoMessage() {} func (x *LoginInfosByUserIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[41] + mi := &file_accountFiee_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3259,7 +3317,7 @@ func (x *LoginInfosByUserIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginInfosByUserIdRequest.ProtoReflect.Descriptor instead. func (*LoginInfosByUserIdRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{41} + return file_accountFiee_proto_rawDescGZIP(), []int{41} } func (x *LoginInfosByUserIdRequest) GetDomain() string { @@ -3292,7 +3350,7 @@ type SendNewTelNumMsgRequest struct { func (x *SendNewTelNumMsgRequest) Reset() { *x = SendNewTelNumMsgRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[42] + mi := &file_accountFiee_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3305,7 +3363,7 @@ func (x *SendNewTelNumMsgRequest) String() string { func (*SendNewTelNumMsgRequest) ProtoMessage() {} func (x *SendNewTelNumMsgRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[42] + mi := &file_accountFiee_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3318,7 +3376,7 @@ func (x *SendNewTelNumMsgRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendNewTelNumMsgRequest.ProtoReflect.Descriptor instead. func (*SendNewTelNumMsgRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{42} + return file_accountFiee_proto_rawDescGZIP(), []int{42} } func (x *SendNewTelNumMsgRequest) GetDomain() string { @@ -3375,7 +3433,7 @@ type UserByTelRequest struct { func (x *UserByTelRequest) Reset() { *x = UserByTelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[43] + mi := &file_accountFiee_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3388,7 +3446,7 @@ func (x *UserByTelRequest) String() string { func (*UserByTelRequest) ProtoMessage() {} func (x *UserByTelRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[43] + mi := &file_accountFiee_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3401,7 +3459,7 @@ func (x *UserByTelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UserByTelRequest.ProtoReflect.Descriptor instead. func (*UserByTelRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{43} + return file_accountFiee_proto_rawDescGZIP(), []int{43} } func (x *UserByTelRequest) GetDomain() string { @@ -3427,7 +3485,7 @@ type CommonResponse struct { func (x *CommonResponse) Reset() { *x = CommonResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[44] + mi := &file_accountFiee_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3440,7 +3498,7 @@ func (x *CommonResponse) String() string { func (*CommonResponse) ProtoMessage() {} func (x *CommonResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[44] + mi := &file_accountFiee_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3453,7 +3511,7 @@ func (x *CommonResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonResponse.ProtoReflect.Descriptor instead. func (*CommonResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{44} + return file_accountFiee_proto_rawDescGZIP(), []int{44} } type UsersByTelRequest struct { @@ -3468,7 +3526,7 @@ type UsersByTelRequest struct { func (x *UsersByTelRequest) Reset() { *x = UsersByTelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[45] + mi := &file_accountFiee_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3481,7 +3539,7 @@ func (x *UsersByTelRequest) String() string { func (*UsersByTelRequest) ProtoMessage() {} func (x *UsersByTelRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[45] + mi := &file_accountFiee_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3494,7 +3552,7 @@ func (x *UsersByTelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersByTelRequest.ProtoReflect.Descriptor instead. func (*UsersByTelRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{45} + return file_accountFiee_proto_rawDescGZIP(), []int{45} } func (x *UsersByTelRequest) GetDomain() string { @@ -3528,7 +3586,7 @@ type ListByIDsRequest struct { func (x *ListByIDsRequest) Reset() { *x = ListByIDsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[46] + mi := &file_accountFiee_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3541,7 +3599,7 @@ func (x *ListByIDsRequest) String() string { func (*ListByIDsRequest) ProtoMessage() {} func (x *ListByIDsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[46] + mi := &file_accountFiee_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3554,7 +3612,7 @@ func (x *ListByIDsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListByIDsRequest.ProtoReflect.Descriptor instead. func (*ListByIDsRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{46} + return file_accountFiee_proto_rawDescGZIP(), []int{46} } func (x *ListByIDsRequest) GetDomain() string { @@ -3613,7 +3671,7 @@ type SendMsgRequest struct { Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - //string TelNum = 2 [json_name = "telNum",(validator.field) = {regex: "^1\\d{10}$",human_error: "70002"}]; + // string TelNum = 2 [json_name = "telNum",(validator.field) = {regex: "^1\\d{10}$",human_error: "70002"}]; Project string `protobuf:"bytes,3,opt,name=Project,json=project,proto3" json:"Project,omitempty"` SignNo uint32 `protobuf:"varint,4,opt,name=signNo,proto3" json:"signNo,omitempty"` MId uint32 `protobuf:"varint,5,opt,name=mId,proto3" json:"mId,omitempty"` @@ -3625,7 +3683,7 @@ type SendMsgRequest struct { func (x *SendMsgRequest) Reset() { *x = SendMsgRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[47] + mi := &file_accountFiee_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3638,7 +3696,7 @@ func (x *SendMsgRequest) String() string { func (*SendMsgRequest) ProtoMessage() {} func (x *SendMsgRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[47] + mi := &file_accountFiee_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3651,7 +3709,7 @@ func (x *SendMsgRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendMsgRequest.ProtoReflect.Descriptor instead. func (*SendMsgRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{47} + return file_accountFiee_proto_rawDescGZIP(), []int{47} } func (x *SendMsgRequest) GetDomain() string { @@ -3728,7 +3786,7 @@ type SendCustomMsgRequest struct { func (x *SendCustomMsgRequest) Reset() { *x = SendCustomMsgRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[48] + mi := &file_accountFiee_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3741,7 +3799,7 @@ func (x *SendCustomMsgRequest) String() string { func (*SendCustomMsgRequest) ProtoMessage() {} func (x *SendCustomMsgRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[48] + mi := &file_accountFiee_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3754,7 +3812,7 @@ func (x *SendCustomMsgRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendCustomMsgRequest.ProtoReflect.Descriptor instead. func (*SendCustomMsgRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{48} + return file_accountFiee_proto_rawDescGZIP(), []int{48} } func (x *SendCustomMsgRequest) GetDomain() string { @@ -3828,7 +3886,7 @@ type CheckMsgRequest struct { func (x *CheckMsgRequest) Reset() { *x = CheckMsgRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[49] + mi := &file_accountFiee_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3841,7 +3899,7 @@ func (x *CheckMsgRequest) String() string { func (*CheckMsgRequest) ProtoMessage() {} func (x *CheckMsgRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[49] + mi := &file_accountFiee_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3854,7 +3912,7 @@ func (x *CheckMsgRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckMsgRequest.ProtoReflect.Descriptor instead. func (*CheckMsgRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{49} + return file_accountFiee_proto_rawDescGZIP(), []int{49} } func (x *CheckMsgRequest) GetDomain() string { @@ -3901,7 +3959,7 @@ type SendMsgStatusResponse struct { func (x *SendMsgStatusResponse) Reset() { *x = SendMsgStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[50] + mi := &file_accountFiee_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3914,7 +3972,7 @@ func (x *SendMsgStatusResponse) String() string { func (*SendMsgStatusResponse) ProtoMessage() {} func (x *SendMsgStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[50] + mi := &file_accountFiee_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3927,7 +3985,7 @@ func (x *SendMsgStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SendMsgStatusResponse.ProtoReflect.Descriptor instead. func (*SendMsgStatusResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{50} + return file_accountFiee_proto_rawDescGZIP(), []int{50} } type RemoveRequest struct { @@ -3943,7 +4001,7 @@ type RemoveRequest struct { func (x *RemoveRequest) Reset() { *x = RemoveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[51] + mi := &file_accountFiee_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3956,7 +4014,7 @@ func (x *RemoveRequest) String() string { func (*RemoveRequest) ProtoMessage() {} func (x *RemoveRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[51] + mi := &file_accountFiee_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3969,7 +4027,7 @@ func (x *RemoveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveRequest.ProtoReflect.Descriptor instead. func (*RemoveRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{51} + return file_accountFiee_proto_rawDescGZIP(), []int{51} } func (x *RemoveRequest) GetDomain() string { @@ -4018,7 +4076,7 @@ type WriteOffRequest struct { func (x *WriteOffRequest) Reset() { *x = WriteOffRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[52] + mi := &file_accountFiee_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4031,7 +4089,7 @@ func (x *WriteOffRequest) String() string { func (*WriteOffRequest) ProtoMessage() {} func (x *WriteOffRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[52] + mi := &file_accountFiee_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4044,7 +4102,7 @@ func (x *WriteOffRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteOffRequest.ProtoReflect.Descriptor instead. func (*WriteOffRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{52} + return file_accountFiee_proto_rawDescGZIP(), []int{52} } func (x *WriteOffRequest) GetId() uint64 { @@ -4170,7 +4228,7 @@ type WriteOffListRequest struct { func (x *WriteOffListRequest) Reset() { *x = WriteOffListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[53] + mi := &file_accountFiee_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4183,7 +4241,7 @@ func (x *WriteOffListRequest) String() string { func (*WriteOffListRequest) ProtoMessage() {} func (x *WriteOffListRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[53] + mi := &file_accountFiee_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4196,7 +4254,7 @@ func (x *WriteOffListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteOffListRequest.ProtoReflect.Descriptor instead. func (*WriteOffListRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{53} + return file_accountFiee_proto_rawDescGZIP(), []int{53} } func (x *WriteOffListRequest) GetPage() uint64 { @@ -4267,7 +4325,7 @@ type WriteOffApproveRequest struct { func (x *WriteOffApproveRequest) Reset() { *x = WriteOffApproveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[54] + mi := &file_accountFiee_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4280,7 +4338,7 @@ func (x *WriteOffApproveRequest) String() string { func (*WriteOffApproveRequest) ProtoMessage() {} func (x *WriteOffApproveRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[54] + mi := &file_accountFiee_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4293,7 +4351,7 @@ func (x *WriteOffApproveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteOffApproveRequest.ProtoReflect.Descriptor instead. func (*WriteOffApproveRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{54} + return file_accountFiee_proto_rawDescGZIP(), []int{54} } func (x *WriteOffApproveRequest) GetId() uint64 { @@ -4322,7 +4380,7 @@ type WriteOffListResponse struct { func (x *WriteOffListResponse) Reset() { *x = WriteOffListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[55] + mi := &file_accountFiee_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4335,7 +4393,7 @@ func (x *WriteOffListResponse) String() string { func (*WriteOffListResponse) ProtoMessage() {} func (x *WriteOffListResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[55] + mi := &file_accountFiee_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4348,7 +4406,7 @@ func (x *WriteOffListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteOffListResponse.ProtoReflect.Descriptor instead. func (*WriteOffListResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{55} + return file_accountFiee_proto_rawDescGZIP(), []int{55} } func (x *WriteOffListResponse) GetTotal() int64 { @@ -4374,7 +4432,7 @@ type RemoveResponse struct { func (x *RemoveResponse) Reset() { *x = RemoveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[56] + mi := &file_accountFiee_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4387,7 +4445,7 @@ func (x *RemoveResponse) String() string { func (*RemoveResponse) ProtoMessage() {} func (x *RemoveResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[56] + mi := &file_accountFiee_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4400,7 +4458,7 @@ func (x *RemoveResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveResponse.ProtoReflect.Descriptor instead. func (*RemoveResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{56} + return file_accountFiee_proto_rawDescGZIP(), []int{56} } type UpdateRequest struct { @@ -4417,7 +4475,7 @@ type UpdateRequest struct { func (x *UpdateRequest) Reset() { *x = UpdateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[57] + mi := &file_accountFiee_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4430,7 +4488,7 @@ func (x *UpdateRequest) String() string { func (*UpdateRequest) ProtoMessage() {} func (x *UpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[57] + mi := &file_accountFiee_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4443,7 +4501,7 @@ func (x *UpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRequest.ProtoReflect.Descriptor instead. func (*UpdateRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{57} + return file_accountFiee_proto_rawDescGZIP(), []int{57} } func (x *UpdateRequest) GetID() uint64 { @@ -4486,7 +4544,7 @@ type Operator struct { func (x *Operator) Reset() { *x = Operator{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[58] + mi := &file_accountFiee_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4499,7 +4557,7 @@ func (x *Operator) String() string { func (*Operator) ProtoMessage() {} func (x *Operator) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[58] + mi := &file_accountFiee_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4512,7 +4570,7 @@ func (x *Operator) ProtoReflect() protoreflect.Message { // Deprecated: Use Operator.ProtoReflect.Descriptor instead. func (*Operator) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{58} + return file_accountFiee_proto_rawDescGZIP(), []int{58} } func (x *Operator) GetID() uint32 { @@ -4543,7 +4601,7 @@ type TrainVideo struct { func (x *TrainVideo) Reset() { *x = TrainVideo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[59] + mi := &file_accountFiee_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4556,7 +4614,7 @@ func (x *TrainVideo) String() string { func (*TrainVideo) ProtoMessage() {} func (x *TrainVideo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[59] + mi := &file_accountFiee_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4569,7 +4627,7 @@ func (x *TrainVideo) ProtoReflect() protoreflect.Message { // Deprecated: Use TrainVideo.ProtoReflect.Descriptor instead. func (*TrainVideo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{59} + return file_accountFiee_proto_rawDescGZIP(), []int{59} } func (x *TrainVideo) GetTrainUUID() string { @@ -4609,7 +4667,7 @@ type UpdateResponse struct { func (x *UpdateResponse) Reset() { *x = UpdateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[60] + mi := &file_accountFiee_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4622,7 +4680,7 @@ func (x *UpdateResponse) String() string { func (*UpdateResponse) ProtoMessage() {} func (x *UpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[60] + mi := &file_accountFiee_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4635,7 +4693,7 @@ func (x *UpdateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateResponse.ProtoReflect.Descriptor instead. func (*UpdateResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{60} + return file_accountFiee_proto_rawDescGZIP(), []int{60} } type PrivacyInfoRequest struct { @@ -4651,7 +4709,7 @@ type PrivacyInfoRequest struct { func (x *PrivacyInfoRequest) Reset() { *x = PrivacyInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[61] + mi := &file_accountFiee_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4664,7 +4722,7 @@ func (x *PrivacyInfoRequest) String() string { func (*PrivacyInfoRequest) ProtoMessage() {} func (x *PrivacyInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[61] + mi := &file_accountFiee_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4677,7 +4735,7 @@ func (x *PrivacyInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PrivacyInfoRequest.ProtoReflect.Descriptor instead. func (*PrivacyInfoRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{61} + return file_accountFiee_proto_rawDescGZIP(), []int{61} } func (x *PrivacyInfoRequest) GetID() uint64 { @@ -4719,7 +4777,7 @@ type ListRequest struct { func (x *ListRequest) Reset() { *x = ListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[62] + mi := &file_accountFiee_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4732,7 +4790,7 @@ func (x *ListRequest) String() string { func (*ListRequest) ProtoMessage() {} func (x *ListRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[62] + mi := &file_accountFiee_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4745,7 +4803,7 @@ func (x *ListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRequest.ProtoReflect.Descriptor instead. func (*ListRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{62} + return file_accountFiee_proto_rawDescGZIP(), []int{62} } func (x *ListRequest) GetDomain() string { @@ -4818,7 +4876,7 @@ type ListResponse struct { func (x *ListResponse) Reset() { *x = ListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[63] + mi := &file_accountFiee_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4831,7 +4889,7 @@ func (x *ListResponse) String() string { func (*ListResponse) ProtoMessage() {} func (x *ListResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[63] + mi := &file_accountFiee_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4844,7 +4902,7 @@ func (x *ListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListResponse.ProtoReflect.Descriptor instead. func (*ListResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{63} + return file_accountFiee_proto_rawDescGZIP(), []int{63} } func (x *ListResponse) GetStatus() string { @@ -4888,7 +4946,7 @@ type InfoRequest struct { func (x *InfoRequest) Reset() { *x = InfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[64] + mi := &file_accountFiee_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4901,7 +4959,7 @@ func (x *InfoRequest) String() string { func (*InfoRequest) ProtoMessage() {} func (x *InfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[64] + mi := &file_accountFiee_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4914,7 +4972,7 @@ func (x *InfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InfoRequest.ProtoReflect.Descriptor instead. func (*InfoRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{64} + return file_accountFiee_proto_rawDescGZIP(), []int{64} } func (x *InfoRequest) GetDomain() string { @@ -4951,7 +5009,7 @@ type InfoResponse struct { func (x *InfoResponse) Reset() { *x = InfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[65] + mi := &file_accountFiee_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4964,7 +5022,7 @@ func (x *InfoResponse) String() string { func (*InfoResponse) ProtoMessage() {} func (x *InfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[65] + mi := &file_accountFiee_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4977,7 +5035,7 @@ func (x *InfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InfoResponse.ProtoReflect.Descriptor instead. func (*InfoResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{65} + return file_accountFiee_proto_rawDescGZIP(), []int{65} } func (x *InfoResponse) GetStatus() string { @@ -5016,7 +5074,7 @@ type DecryptJwtResponse struct { func (x *DecryptJwtResponse) Reset() { *x = DecryptJwtResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[66] + mi := &file_accountFiee_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5029,7 +5087,7 @@ func (x *DecryptJwtResponse) String() string { func (*DecryptJwtResponse) ProtoMessage() {} func (x *DecryptJwtResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[66] + mi := &file_accountFiee_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5042,7 +5100,7 @@ func (x *DecryptJwtResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DecryptJwtResponse.ProtoReflect.Descriptor instead. func (*DecryptJwtResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{66} + return file_accountFiee_proto_rawDescGZIP(), []int{66} } func (x *DecryptJwtResponse) GetDomain() string { @@ -5092,7 +5150,7 @@ type DecryptJwtRequest struct { func (x *DecryptJwtRequest) Reset() { *x = DecryptJwtRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[67] + mi := &file_accountFiee_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5105,7 +5163,7 @@ func (x *DecryptJwtRequest) String() string { func (*DecryptJwtRequest) ProtoMessage() {} func (x *DecryptJwtRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[67] + mi := &file_accountFiee_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5118,7 +5176,7 @@ func (x *DecryptJwtRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DecryptJwtRequest.ProtoReflect.Descriptor instead. func (*DecryptJwtRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{67} + return file_accountFiee_proto_rawDescGZIP(), []int{67} } func (x *DecryptJwtRequest) GetToken() string { @@ -5147,7 +5205,7 @@ type CheckPwdRequest struct { func (x *CheckPwdRequest) Reset() { *x = CheckPwdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[68] + mi := &file_accountFiee_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5160,7 +5218,7 @@ func (x *CheckPwdRequest) String() string { func (*CheckPwdRequest) ProtoMessage() {} func (x *CheckPwdRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[68] + mi := &file_accountFiee_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5173,7 +5231,7 @@ func (x *CheckPwdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckPwdRequest.ProtoReflect.Descriptor instead. func (*CheckPwdRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{68} + return file_accountFiee_proto_rawDescGZIP(), []int{68} } func (x *CheckPwdRequest) GetToken() string { @@ -5203,7 +5261,7 @@ type AuthenticationRequest struct { func (x *AuthenticationRequest) Reset() { *x = AuthenticationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[69] + mi := &file_accountFiee_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5216,7 +5274,7 @@ func (x *AuthenticationRequest) String() string { func (*AuthenticationRequest) ProtoMessage() {} func (x *AuthenticationRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[69] + mi := &file_accountFiee_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5229,7 +5287,7 @@ func (x *AuthenticationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthenticationRequest.ProtoReflect.Descriptor instead. func (*AuthenticationRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{69} + return file_accountFiee_proto_rawDescGZIP(), []int{69} } func (x *AuthenticationRequest) GetName() string { @@ -5266,7 +5324,7 @@ type RequestStatus struct { func (x *RequestStatus) Reset() { *x = RequestStatus{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[70] + mi := &file_accountFiee_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5279,7 +5337,7 @@ func (x *RequestStatus) String() string { func (*RequestStatus) ProtoMessage() {} func (x *RequestStatus) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[70] + mi := &file_accountFiee_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5292,7 +5350,7 @@ func (x *RequestStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestStatus.ProtoReflect.Descriptor instead. func (*RequestStatus) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{70} + return file_accountFiee_proto_rawDescGZIP(), []int{70} } func (x *RequestStatus) GetStatus() string { @@ -5333,7 +5391,7 @@ type RegistRequest struct { func (x *RegistRequest) Reset() { *x = RegistRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[71] + mi := &file_accountFiee_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5346,7 +5404,7 @@ func (x *RegistRequest) String() string { func (*RegistRequest) ProtoMessage() {} func (x *RegistRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[71] + mi := &file_accountFiee_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5359,7 +5417,7 @@ func (x *RegistRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RegistRequest.ProtoReflect.Descriptor instead. func (*RegistRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{71} + return file_accountFiee_proto_rawDescGZIP(), []int{71} } func (x *RegistRequest) GetDomain() string { @@ -5428,7 +5486,7 @@ type LoginRequest struct { func (x *LoginRequest) Reset() { *x = LoginRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[72] + mi := &file_accountFiee_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5441,7 +5499,7 @@ func (x *LoginRequest) String() string { func (*LoginRequest) ProtoMessage() {} func (x *LoginRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[72] + mi := &file_accountFiee_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5454,7 +5512,7 @@ func (x *LoginRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginRequest.ProtoReflect.Descriptor instead. func (*LoginRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{72} + return file_accountFiee_proto_rawDescGZIP(), []int{72} } func (x *LoginRequest) GetDomain() string { @@ -5521,7 +5579,7 @@ type TokenInfo struct { func (x *TokenInfo) Reset() { *x = TokenInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[73] + mi := &file_accountFiee_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5534,7 +5592,7 @@ func (x *TokenInfo) String() string { func (*TokenInfo) ProtoMessage() {} func (x *TokenInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[73] + mi := &file_accountFiee_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5547,7 +5605,7 @@ func (x *TokenInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenInfo.ProtoReflect.Descriptor instead. func (*TokenInfo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{73} + return file_accountFiee_proto_rawDescGZIP(), []int{73} } func (x *TokenInfo) GetAccountInfo() *AccountInfo { @@ -5599,7 +5657,7 @@ type Extend struct { func (x *Extend) Reset() { *x = Extend{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[74] + mi := &file_accountFiee_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5612,7 +5670,7 @@ func (x *Extend) String() string { func (*Extend) ProtoMessage() {} func (x *Extend) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[74] + mi := &file_accountFiee_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5625,7 +5683,7 @@ func (x *Extend) ProtoReflect() protoreflect.Message { // Deprecated: Use Extend.ProtoReflect.Descriptor instead. func (*Extend) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{74} + return file_accountFiee_proto_rawDescGZIP(), []int{74} } func (x *Extend) GetJumpTo() string { @@ -5668,7 +5726,7 @@ type Department struct { func (x *Department) Reset() { *x = Department{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[75] + mi := &file_accountFiee_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5681,7 +5739,7 @@ func (x *Department) String() string { func (*Department) ProtoMessage() {} func (x *Department) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[75] + mi := &file_accountFiee_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5694,7 +5752,7 @@ func (x *Department) ProtoReflect() protoreflect.Message { // Deprecated: Use Department.ProtoReflect.Descriptor instead. func (*Department) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{75} + return file_accountFiee_proto_rawDescGZIP(), []int{75} } func (x *Department) GetID() uint64 { @@ -5765,7 +5823,7 @@ type AccountInfo struct { func (x *AccountInfo) Reset() { *x = AccountInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[76] + mi := &file_accountFiee_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5778,7 +5836,7 @@ func (x *AccountInfo) String() string { func (*AccountInfo) ProtoMessage() {} func (x *AccountInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[76] + mi := &file_accountFiee_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5791,7 +5849,7 @@ func (x *AccountInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountInfo.ProtoReflect.Descriptor instead. func (*AccountInfo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{76} + return file_accountFiee_proto_rawDescGZIP(), []int{76} } func (x *AccountInfo) GetID() uint64 { @@ -6121,7 +6179,7 @@ type UserInfoV2 struct { func (x *UserInfoV2) Reset() { *x = UserInfoV2{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[77] + mi := &file_accountFiee_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6134,7 +6192,7 @@ func (x *UserInfoV2) String() string { func (*UserInfoV2) ProtoMessage() {} func (x *UserInfoV2) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[77] + mi := &file_accountFiee_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6147,7 +6205,7 @@ func (x *UserInfoV2) ProtoReflect() protoreflect.Message { // Deprecated: Use UserInfoV2.ProtoReflect.Descriptor instead. func (*UserInfoV2) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{77} + return file_accountFiee_proto_rawDescGZIP(), []int{77} } func (x *UserInfoV2) GetID() uint64 { @@ -6275,7 +6333,7 @@ type RefreshTokenRequest struct { func (x *RefreshTokenRequest) Reset() { *x = RefreshTokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[78] + mi := &file_accountFiee_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6288,7 +6346,7 @@ func (x *RefreshTokenRequest) String() string { func (*RefreshTokenRequest) ProtoMessage() {} func (x *RefreshTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[78] + mi := &file_accountFiee_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6301,7 +6359,7 @@ func (x *RefreshTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshTokenRequest.ProtoReflect.Descriptor instead. func (*RefreshTokenRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{78} + return file_accountFiee_proto_rawDescGZIP(), []int{78} } func (x *RefreshTokenRequest) GetRefreshToken() string { @@ -6342,7 +6400,7 @@ type PositionUser struct { func (x *PositionUser) Reset() { *x = PositionUser{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[79] + mi := &file_accountFiee_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6355,7 +6413,7 @@ func (x *PositionUser) String() string { func (*PositionUser) ProtoMessage() {} func (x *PositionUser) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[79] + mi := &file_accountFiee_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6368,7 +6426,7 @@ func (x *PositionUser) ProtoReflect() protoreflect.Message { // Deprecated: Use PositionUser.ProtoReflect.Descriptor instead. func (*PositionUser) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{79} + return file_accountFiee_proto_rawDescGZIP(), []int{79} } func (x *PositionUser) GetPositionID() uint64 { @@ -6432,7 +6490,7 @@ type JobNumGetInfoRequest struct { func (x *JobNumGetInfoRequest) Reset() { *x = JobNumGetInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[80] + mi := &file_accountFiee_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6445,7 +6503,7 @@ func (x *JobNumGetInfoRequest) String() string { func (*JobNumGetInfoRequest) ProtoMessage() {} func (x *JobNumGetInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[80] + mi := &file_accountFiee_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6458,7 +6516,7 @@ func (x *JobNumGetInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use JobNumGetInfoRequest.ProtoReflect.Descriptor instead. func (*JobNumGetInfoRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{80} + return file_accountFiee_proto_rawDescGZIP(), []int{80} } func (x *JobNumGetInfoRequest) GetJobNum() string { @@ -6488,7 +6546,7 @@ type CreateClockDeviceRequest struct { func (x *CreateClockDeviceRequest) Reset() { *x = CreateClockDeviceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[81] + mi := &file_accountFiee_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6501,7 +6559,7 @@ func (x *CreateClockDeviceRequest) String() string { func (*CreateClockDeviceRequest) ProtoMessage() {} func (x *CreateClockDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[81] + mi := &file_accountFiee_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6514,7 +6572,7 @@ func (x *CreateClockDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateClockDeviceRequest.ProtoReflect.Descriptor instead. func (*CreateClockDeviceRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{81} + return file_accountFiee_proto_rawDescGZIP(), []int{81} } func (x *CreateClockDeviceRequest) GetDeviceNum() string { @@ -6552,7 +6610,7 @@ type UpdateClockDeviceRequest struct { func (x *UpdateClockDeviceRequest) Reset() { *x = UpdateClockDeviceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[82] + mi := &file_accountFiee_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6565,7 +6623,7 @@ func (x *UpdateClockDeviceRequest) String() string { func (*UpdateClockDeviceRequest) ProtoMessage() {} func (x *UpdateClockDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[82] + mi := &file_accountFiee_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6578,7 +6636,7 @@ func (x *UpdateClockDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateClockDeviceRequest.ProtoReflect.Descriptor instead. func (*UpdateClockDeviceRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{82} + return file_accountFiee_proto_rawDescGZIP(), []int{82} } func (x *UpdateClockDeviceRequest) GetId() uint64 { @@ -6620,7 +6678,7 @@ type ClockDeviceResponse struct { func (x *ClockDeviceResponse) Reset() { *x = ClockDeviceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[83] + mi := &file_accountFiee_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6633,7 +6691,7 @@ func (x *ClockDeviceResponse) String() string { func (*ClockDeviceResponse) ProtoMessage() {} func (x *ClockDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[83] + mi := &file_accountFiee_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6646,7 +6704,7 @@ func (x *ClockDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockDeviceResponse.ProtoReflect.Descriptor instead. func (*ClockDeviceResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{83} + return file_accountFiee_proto_rawDescGZIP(), []int{83} } func (x *ClockDeviceResponse) GetId() uint64 { @@ -6667,7 +6725,7 @@ type RemoveClockDeviceRequest struct { func (x *RemoveClockDeviceRequest) Reset() { *x = RemoveClockDeviceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[84] + mi := &file_accountFiee_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6680,7 +6738,7 @@ func (x *RemoveClockDeviceRequest) String() string { func (*RemoveClockDeviceRequest) ProtoMessage() {} func (x *RemoveClockDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[84] + mi := &file_accountFiee_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6693,7 +6751,7 @@ func (x *RemoveClockDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveClockDeviceRequest.ProtoReflect.Descriptor instead. func (*RemoveClockDeviceRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{84} + return file_accountFiee_proto_rawDescGZIP(), []int{84} } func (x *RemoveClockDeviceRequest) GetId() uint64 { @@ -6720,7 +6778,7 @@ type ClockDeviceListRequest struct { func (x *ClockDeviceListRequest) Reset() { *x = ClockDeviceListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[85] + mi := &file_accountFiee_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6733,7 +6791,7 @@ func (x *ClockDeviceListRequest) String() string { func (*ClockDeviceListRequest) ProtoMessage() {} func (x *ClockDeviceListRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[85] + mi := &file_accountFiee_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6746,7 +6804,7 @@ func (x *ClockDeviceListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockDeviceListRequest.ProtoReflect.Descriptor instead. func (*ClockDeviceListRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{85} + return file_accountFiee_proto_rawDescGZIP(), []int{85} } func (x *ClockDeviceListRequest) GetId() uint64 { @@ -6810,7 +6868,7 @@ type ClockDeviceListResponse struct { func (x *ClockDeviceListResponse) Reset() { *x = ClockDeviceListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[86] + mi := &file_accountFiee_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6823,7 +6881,7 @@ func (x *ClockDeviceListResponse) String() string { func (*ClockDeviceListResponse) ProtoMessage() {} func (x *ClockDeviceListResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[86] + mi := &file_accountFiee_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6836,7 +6894,7 @@ func (x *ClockDeviceListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockDeviceListResponse.ProtoReflect.Descriptor instead. func (*ClockDeviceListResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{86} + return file_accountFiee_proto_rawDescGZIP(), []int{86} } func (x *ClockDeviceListResponse) GetCount() uint64 { @@ -6871,7 +6929,7 @@ type ClockUser struct { func (x *ClockUser) Reset() { *x = ClockUser{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[87] + mi := &file_accountFiee_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6884,7 +6942,7 @@ func (x *ClockUser) String() string { func (*ClockUser) ProtoMessage() {} func (x *ClockUser) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[87] + mi := &file_accountFiee_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6897,7 +6955,7 @@ func (x *ClockUser) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockUser.ProtoReflect.Descriptor instead. func (*ClockUser) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{87} + return file_accountFiee_proto_rawDescGZIP(), []int{87} } func (x *ClockUser) GetId() uint64 { @@ -6974,7 +7032,7 @@ type ClockDeviceInfo struct { func (x *ClockDeviceInfo) Reset() { *x = ClockDeviceInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[88] + mi := &file_accountFiee_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6987,7 +7045,7 @@ func (x *ClockDeviceInfo) String() string { func (*ClockDeviceInfo) ProtoMessage() {} func (x *ClockDeviceInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[88] + mi := &file_accountFiee_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7000,7 +7058,7 @@ func (x *ClockDeviceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockDeviceInfo.ProtoReflect.Descriptor instead. func (*ClockDeviceInfo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{88} + return file_accountFiee_proto_rawDescGZIP(), []int{88} } func (x *ClockDeviceInfo) GetId() uint64 { @@ -7071,7 +7129,7 @@ type ClockDeviceInfoResponse struct { func (x *ClockDeviceInfoResponse) Reset() { *x = ClockDeviceInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[89] + mi := &file_accountFiee_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7084,7 +7142,7 @@ func (x *ClockDeviceInfoResponse) String() string { func (*ClockDeviceInfoResponse) ProtoMessage() {} func (x *ClockDeviceInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[89] + mi := &file_accountFiee_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7097,7 +7155,7 @@ func (x *ClockDeviceInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockDeviceInfoResponse.ProtoReflect.Descriptor instead. func (*ClockDeviceInfoResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{89} + return file_accountFiee_proto_rawDescGZIP(), []int{89} } func (x *ClockDeviceInfoResponse) GetCount() uint64 { @@ -7130,7 +7188,7 @@ type ClockUserRel struct { func (x *ClockUserRel) Reset() { *x = ClockUserRel{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[90] + mi := &file_accountFiee_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7143,7 +7201,7 @@ func (x *ClockUserRel) String() string { func (*ClockUserRel) ProtoMessage() {} func (x *ClockUserRel) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[90] + mi := &file_accountFiee_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7156,7 +7214,7 @@ func (x *ClockUserRel) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockUserRel.ProtoReflect.Descriptor instead. func (*ClockUserRel) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{90} + return file_accountFiee_proto_rawDescGZIP(), []int{90} } func (x *ClockUserRel) GetId() uint64 { @@ -7214,7 +7272,7 @@ type ClockDeviceInfoRequest struct { func (x *ClockDeviceInfoRequest) Reset() { *x = ClockDeviceInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[91] + mi := &file_accountFiee_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7227,7 +7285,7 @@ func (x *ClockDeviceInfoRequest) String() string { func (*ClockDeviceInfoRequest) ProtoMessage() {} func (x *ClockDeviceInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[91] + mi := &file_accountFiee_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7240,7 +7298,7 @@ func (x *ClockDeviceInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockDeviceInfoRequest.ProtoReflect.Descriptor instead. func (*ClockDeviceInfoRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{91} + return file_accountFiee_proto_rawDescGZIP(), []int{91} } func (x *ClockDeviceInfoRequest) GetId() uint64 { @@ -7277,7 +7335,7 @@ type ClockBatchBindRequest struct { func (x *ClockBatchBindRequest) Reset() { *x = ClockBatchBindRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[92] + mi := &file_accountFiee_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7290,7 +7348,7 @@ func (x *ClockBatchBindRequest) String() string { func (*ClockBatchBindRequest) ProtoMessage() {} func (x *ClockBatchBindRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[92] + mi := &file_accountFiee_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7303,7 +7361,7 @@ func (x *ClockBatchBindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockBatchBindRequest.ProtoReflect.Descriptor instead. func (*ClockBatchBindRequest) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{92} + return file_accountFiee_proto_rawDescGZIP(), []int{92} } func (x *ClockBatchBindRequest) GetId() uint64 { @@ -7338,7 +7396,7 @@ type ClockBatchListResponse struct { func (x *ClockBatchListResponse) Reset() { *x = ClockBatchListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[93] + mi := &file_accountFiee_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7351,7 +7409,7 @@ func (x *ClockBatchListResponse) String() string { func (*ClockBatchListResponse) ProtoMessage() {} func (x *ClockBatchListResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[93] + mi := &file_accountFiee_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7364,7 +7422,7 @@ func (x *ClockBatchListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockBatchListResponse.ProtoReflect.Descriptor instead. func (*ClockBatchListResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{93} + return file_accountFiee_proto_rawDescGZIP(), []int{93} } func (x *ClockBatchListResponse) GetData() []*ClockUserDeviceBatch { @@ -7390,7 +7448,7 @@ type ClockUserDeviceBatch struct { func (x *ClockUserDeviceBatch) Reset() { *x = ClockUserDeviceBatch{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[94] + mi := &file_accountFiee_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7403,7 +7461,7 @@ func (x *ClockUserDeviceBatch) String() string { func (*ClockUserDeviceBatch) ProtoMessage() {} func (x *ClockUserDeviceBatch) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[94] + mi := &file_accountFiee_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7416,7 +7474,7 @@ func (x *ClockUserDeviceBatch) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockUserDeviceBatch.ProtoReflect.Descriptor instead. func (*ClockUserDeviceBatch) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{94} + return file_accountFiee_proto_rawDescGZIP(), []int{94} } func (x *ClockUserDeviceBatch) GetUserId() uint64 { @@ -7490,7 +7548,7 @@ type ClockLogInfo struct { func (x *ClockLogInfo) Reset() { *x = ClockLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[95] + mi := &file_accountFiee_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7503,7 +7561,7 @@ func (x *ClockLogInfo) String() string { func (*ClockLogInfo) ProtoMessage() {} func (x *ClockLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[95] + mi := &file_accountFiee_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7516,7 +7574,7 @@ func (x *ClockLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockLogInfo.ProtoReflect.Descriptor instead. func (*ClockLogInfo) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{95} + return file_accountFiee_proto_rawDescGZIP(), []int{95} } func (x *ClockLogInfo) GetId() uint64 { @@ -7670,7 +7728,7 @@ type ClockLogReq struct { func (x *ClockLogReq) Reset() { *x = ClockLogReq{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[96] + mi := &file_accountFiee_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7683,7 +7741,7 @@ func (x *ClockLogReq) String() string { func (*ClockLogReq) ProtoMessage() {} func (x *ClockLogReq) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[96] + mi := &file_accountFiee_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7696,7 +7754,7 @@ func (x *ClockLogReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockLogReq.ProtoReflect.Descriptor instead. func (*ClockLogReq) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{96} + return file_accountFiee_proto_rawDescGZIP(), []int{96} } func (x *ClockLogReq) GetId() uint64 { @@ -7767,7 +7825,7 @@ type ClockLogListResponse struct { func (x *ClockLogListResponse) Reset() { *x = ClockLogListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[97] + mi := &file_accountFiee_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7780,7 +7838,7 @@ func (x *ClockLogListResponse) String() string { func (*ClockLogListResponse) ProtoMessage() {} func (x *ClockLogListResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_accountFiee_accountFiee_proto_msgTypes[97] + mi := &file_accountFiee_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7793,7 +7851,7 @@ func (x *ClockLogListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClockLogListResponse.ProtoReflect.Descriptor instead. func (*ClockLogListResponse) Descriptor() ([]byte, []int) { - return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{97} + return file_accountFiee_proto_rawDescGZIP(), []int{97} } func (x *ClockLogListResponse) GetData() []*ClockLogInfo { @@ -7810,1454 +7868,4187 @@ func (x *ClockLogListResponse) GetCount() uint64 { return 0 } -var File_api_accountFiee_accountFiee_proto protoreflect.FileDescriptor +type SubmitInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_api_accountFiee_accountFiee_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, - 0x65, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x70, 0x72, + FirstName string `protobuf:"bytes,1,opt,name=firstName,proto3" json:"firstName,omitempty"` + LastName string `protobuf:"bytes,2,opt,name=lastName,proto3" json:"lastName,omitempty"` + Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` + Company string `protobuf:"bytes,4,opt,name=company,proto3" json:"company,omitempty"` + Phone string `protobuf:"bytes,5,opt,name=phone,proto3" json:"phone,omitempty"` +} + +func (x *SubmitInfoRequest) Reset() { + *x = SubmitInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubmitInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitInfoRequest) ProtoMessage() {} + +func (x *SubmitInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[98] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubmitInfoRequest.ProtoReflect.Descriptor instead. +func (*SubmitInfoRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{98} +} + +func (x *SubmitInfoRequest) GetFirstName() string { + if x != nil { + return x.FirstName + } + return "" +} + +func (x *SubmitInfoRequest) GetLastName() string { + if x != nil { + return x.LastName + } + return "" +} + +func (x *SubmitInfoRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *SubmitInfoRequest) GetCompany() string { + if x != nil { + return x.Company + } + return "" +} + +func (x *SubmitInfoRequest) GetPhone() string { + if x != nil { + return x.Phone + } + return "" +} + +type CommonMsg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *CommonMsg) Reset() { + *x = CommonMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommonMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommonMsg) ProtoMessage() {} + +func (x *CommonMsg) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[99] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommonMsg.ProtoReflect.Descriptor instead. +func (*CommonMsg) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{99} +} + +func (x *CommonMsg) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ChatRecordData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + CreatedAt string `protobuf:"bytes,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + UpdatedAt string `protobuf:"bytes,3,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + DeletedAt int64 `protobuf:"varint,4,opt,name=deletedAt,proto3" json:"deletedAt,omitempty"` + SessionId string `protobuf:"bytes,5,opt,name=sessionId,proto3" json:"sessionId,omitempty"` //会话UID + UserId int64 `protobuf:"varint,6,opt,name=userId,proto3" json:"userId,omitempty"` //用户ID + Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` //名称 + Avatar string `protobuf:"bytes,8,opt,name=avatar,proto3" json:"avatar,omitempty"` //头像 + MsgType MsgType `protobuf:"varint,9,opt,name=msgType,proto3,enum=accountFiee.MsgType" json:"msgType,omitempty"` //消息类型 + Content string `protobuf:"bytes,10,opt,name=content,proto3" json:"content,omitempty"` //消息内容 + Medias []*ChatMediaData `protobuf:"bytes,11,rep,name=medias,proto3" json:"medias,omitempty"` //媒体 + WaiterRead int32 `protobuf:"varint,12,opt,name=waiterRead,proto3" json:"waiterRead,omitempty"` //客服是否已读 1=已读 2=未读 (被任意客服读取过均为已读) + LocalStamp int64 `protobuf:"varint,13,opt,name=localStamp,proto3" json:"localStamp,omitempty"` //本地时间戳 用户端的消息唯一值,用于用户本地的一些逻辑处理 + Domain string `protobuf:"bytes,14,opt,name=domain,proto3" json:"domain,omitempty"` //域 +} + +func (x *ChatRecordData) Reset() { + *x = ChatRecordData{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatRecordData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatRecordData) ProtoMessage() {} + +func (x *ChatRecordData) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[100] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatRecordData.ProtoReflect.Descriptor instead. +func (*ChatRecordData) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{100} +} + +func (x *ChatRecordData) GetID() int64 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *ChatRecordData) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *ChatRecordData) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +func (x *ChatRecordData) GetDeletedAt() int64 { + if x != nil { + return x.DeletedAt + } + return 0 +} + +func (x *ChatRecordData) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *ChatRecordData) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *ChatRecordData) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ChatRecordData) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +func (x *ChatRecordData) GetMsgType() MsgType { + if x != nil { + return x.MsgType + } + return MsgType_UnknownMsgType +} + +func (x *ChatRecordData) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *ChatRecordData) GetMedias() []*ChatMediaData { + if x != nil { + return x.Medias + } + return nil +} + +func (x *ChatRecordData) GetWaiterRead() int32 { + if x != nil { + return x.WaiterRead + } + return 0 +} + +func (x *ChatRecordData) GetLocalStamp() int64 { + if x != nil { + return x.LocalStamp + } + return 0 +} + +func (x *ChatRecordData) GetDomain() string { + if x != nil { + return x.Domain + } + return "" +} + +type CreateChatRecordResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *ChatRecordData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *CreateChatRecordResp) Reset() { + *x = CreateChatRecordResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateChatRecordResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateChatRecordResp) ProtoMessage() {} + +func (x *CreateChatRecordResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[101] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateChatRecordResp.ProtoReflect.Descriptor instead. +func (*CreateChatRecordResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{101} +} + +func (x *CreateChatRecordResp) GetData() *ChatRecordData { + if x != nil { + return x.Data + } + return nil +} + +func (x *CreateChatRecordResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type DeleteChatRecordRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //二选一,数据id + Ids []int64 `protobuf:"varint,2,rep,packed,name=ids,proto3" json:"ids,omitempty"` //二选一,数据id列表 +} + +func (x *DeleteChatRecordRequest) Reset() { + *x = DeleteChatRecordRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteChatRecordRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteChatRecordRequest) ProtoMessage() {} + +func (x *DeleteChatRecordRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[102] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteChatRecordRequest.ProtoReflect.Descriptor instead. +func (*DeleteChatRecordRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{102} +} + +func (x *DeleteChatRecordRequest) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DeleteChatRecordRequest) GetIds() []int64 { + if x != nil { + return x.Ids + } + return nil +} + +type GetChatRecordByIdRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //数据id +} + +func (x *GetChatRecordByIdRequest) Reset() { + *x = GetChatRecordByIdRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatRecordByIdRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatRecordByIdRequest) ProtoMessage() {} + +func (x *GetChatRecordByIdRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatRecordByIdRequest.ProtoReflect.Descriptor instead. +func (*GetChatRecordByIdRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{103} +} + +func (x *GetChatRecordByIdRequest) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +type GetChatRecordListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Query *ChatRecordData `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Where string `protobuf:"bytes,4,opt,name=where,proto3" json:"where,omitempty"` + Order string `protobuf:"bytes,5,opt,name=order,proto3" json:"order,omitempty"` +} + +func (x *GetChatRecordListRequest) Reset() { + *x = GetChatRecordListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatRecordListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatRecordListRequest) ProtoMessage() {} + +func (x *GetChatRecordListRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatRecordListRequest.ProtoReflect.Descriptor instead. +func (*GetChatRecordListRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{104} +} + +func (x *GetChatRecordListRequest) GetQuery() *ChatRecordData { + if x != nil { + return x.Query + } + return nil +} + +func (x *GetChatRecordListRequest) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatRecordListRequest) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatRecordListRequest) GetWhere() string { + if x != nil { + return x.Where + } + return "" +} + +func (x *GetChatRecordListRequest) GetOrder() string { + if x != nil { + return x.Order + } + return "" +} + +type GetChatRecordListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*ChatRecordData `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Total int64 `protobuf:"varint,4,opt,name=Total,proto3" json:"Total,omitempty"` +} + +func (x *GetChatRecordListResp) Reset() { + *x = GetChatRecordListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatRecordListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatRecordListResp) ProtoMessage() {} + +func (x *GetChatRecordListResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatRecordListResp.ProtoReflect.Descriptor instead. +func (*GetChatRecordListResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{105} +} + +func (x *GetChatRecordListResp) GetList() []*ChatRecordData { + if x != nil { + return x.List + } + return nil +} + +func (x *GetChatRecordListResp) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatRecordListResp) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatRecordListResp) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +type RegisterWaiterRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Origin string `protobuf:"bytes,1,opt,name=origin,proto3" json:"origin,omitempty"` //来源 + OriginId int64 `protobuf:"varint,2,opt,name=originId,proto3" json:"originId,omitempty"` //来源对应的用户ID + NickName string `protobuf:"bytes,3,opt,name=nickName,proto3" json:"nickName,omitempty"` //名称 + Avatar string `protobuf:"bytes,4,opt,name=avatar,proto3" json:"avatar,omitempty"` //头像 + TelNum string `protobuf:"bytes,5,opt,name=telNum,proto3" json:"telNum,omitempty"` //电话 + InvitationCode string `protobuf:"bytes,6,opt,name=invitationCode,proto3" json:"invitationCode,omitempty"` //邀请码 + Account string `protobuf:"bytes,7,opt,name=account,proto3" json:"account,omitempty"` +} + +func (x *RegisterWaiterRequest) Reset() { + *x = RegisterWaiterRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterWaiterRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterWaiterRequest) ProtoMessage() {} + +func (x *RegisterWaiterRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[106] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegisterWaiterRequest.ProtoReflect.Descriptor instead. +func (*RegisterWaiterRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{106} +} + +func (x *RegisterWaiterRequest) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *RegisterWaiterRequest) GetOriginId() int64 { + if x != nil { + return x.OriginId + } + return 0 +} + +func (x *RegisterWaiterRequest) GetNickName() string { + if x != nil { + return x.NickName + } + return "" +} + +func (x *RegisterWaiterRequest) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +func (x *RegisterWaiterRequest) GetTelNum() string { + if x != nil { + return x.TelNum + } + return "" +} + +func (x *RegisterWaiterRequest) GetInvitationCode() string { + if x != nil { + return x.InvitationCode + } + return "" +} + +func (x *RegisterWaiterRequest) GetAccount() string { + if x != nil { + return x.Account + } + return "" +} + +type RegisterWaiterResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` +} + +func (x *RegisterWaiterResp) Reset() { + *x = RegisterWaiterResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterWaiterResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterWaiterResp) ProtoMessage() {} + +func (x *RegisterWaiterResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[107] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegisterWaiterResp.ProtoReflect.Descriptor instead. +func (*RegisterWaiterResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{107} +} + +func (x *RegisterWaiterResp) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +type ChatMediaData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + CreatedAt string `protobuf:"bytes,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + UpdatedAt string `protobuf:"bytes,3,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + DeletedAt int64 `protobuf:"varint,4,opt,name=deletedAt,proto3" json:"deletedAt,omitempty"` + Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` //url + Md5 string `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5,omitempty"` //md5值 + Size string `protobuf:"bytes,7,opt,name=size,proto3" json:"size,omitempty"` //尺寸 + Ext string `protobuf:"bytes,8,opt,name=ext,proto3" json:"ext,omitempty"` //后缀格式 + ConvText string `protobuf:"bytes,9,opt,name=convText,proto3" json:"convText,omitempty"` //语音转文字内容 + Duration int64 `protobuf:"varint,10,opt,name=duration,proto3" json:"duration,omitempty"` //时长 +} + +func (x *ChatMediaData) Reset() { + *x = ChatMediaData{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatMediaData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatMediaData) ProtoMessage() {} + +func (x *ChatMediaData) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[108] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatMediaData.ProtoReflect.Descriptor instead. +func (*ChatMediaData) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{108} +} + +func (x *ChatMediaData) GetID() int64 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *ChatMediaData) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *ChatMediaData) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +func (x *ChatMediaData) GetDeletedAt() int64 { + if x != nil { + return x.DeletedAt + } + return 0 +} + +func (x *ChatMediaData) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ChatMediaData) GetMd5() string { + if x != nil { + return x.Md5 + } + return "" +} + +func (x *ChatMediaData) GetSize() string { + if x != nil { + return x.Size + } + return "" +} + +func (x *ChatMediaData) GetExt() string { + if x != nil { + return x.Ext + } + return "" +} + +func (x *ChatMediaData) GetConvText() string { + if x != nil { + return x.ConvText + } + return "" +} + +func (x *ChatMediaData) GetDuration() int64 { + if x != nil { + return x.Duration + } + return 0 +} + +type CreateChatMediaResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *ChatMediaData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *CreateChatMediaResp) Reset() { + *x = CreateChatMediaResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateChatMediaResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateChatMediaResp) ProtoMessage() {} + +func (x *CreateChatMediaResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[109] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateChatMediaResp.ProtoReflect.Descriptor instead. +func (*CreateChatMediaResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{109} +} + +func (x *CreateChatMediaResp) GetData() *ChatMediaData { + if x != nil { + return x.Data + } + return nil +} + +func (x *CreateChatMediaResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type DeleteChatMediaRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //二选一,数据id + Ids []int64 `protobuf:"varint,2,rep,packed,name=ids,proto3" json:"ids,omitempty"` //二选一,数据id列表 +} + +func (x *DeleteChatMediaRequest) Reset() { + *x = DeleteChatMediaRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteChatMediaRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteChatMediaRequest) ProtoMessage() {} + +func (x *DeleteChatMediaRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[110] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteChatMediaRequest.ProtoReflect.Descriptor instead. +func (*DeleteChatMediaRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{110} +} + +func (x *DeleteChatMediaRequest) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DeleteChatMediaRequest) GetIds() []int64 { + if x != nil { + return x.Ids + } + return nil +} + +type GetChatMediaByIdRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //数据id +} + +func (x *GetChatMediaByIdRequest) Reset() { + *x = GetChatMediaByIdRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatMediaByIdRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatMediaByIdRequest) ProtoMessage() {} + +func (x *GetChatMediaByIdRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[111] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatMediaByIdRequest.ProtoReflect.Descriptor instead. +func (*GetChatMediaByIdRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{111} +} + +func (x *GetChatMediaByIdRequest) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +type GetChatMediaListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Query *ChatMediaData `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Where string `protobuf:"bytes,4,opt,name=where,proto3" json:"where,omitempty"` + Order string `protobuf:"bytes,5,opt,name=order,proto3" json:"order,omitempty"` +} + +func (x *GetChatMediaListRequest) Reset() { + *x = GetChatMediaListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatMediaListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatMediaListRequest) ProtoMessage() {} + +func (x *GetChatMediaListRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[112] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatMediaListRequest.ProtoReflect.Descriptor instead. +func (*GetChatMediaListRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{112} +} + +func (x *GetChatMediaListRequest) GetQuery() *ChatMediaData { + if x != nil { + return x.Query + } + return nil +} + +func (x *GetChatMediaListRequest) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatMediaListRequest) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatMediaListRequest) GetWhere() string { + if x != nil { + return x.Where + } + return "" +} + +func (x *GetChatMediaListRequest) GetOrder() string { + if x != nil { + return x.Order + } + return "" +} + +type GetChatMediaListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*ChatMediaData `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Total int64 `protobuf:"varint,4,opt,name=Total,proto3" json:"Total,omitempty"` +} + +func (x *GetChatMediaListResp) Reset() { + *x = GetChatMediaListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatMediaListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatMediaListResp) ProtoMessage() {} + +func (x *GetChatMediaListResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[113] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatMediaListResp.ProtoReflect.Descriptor instead. +func (*GetChatMediaListResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{113} +} + +func (x *GetChatMediaListResp) GetList() []*ChatMediaData { + if x != nil { + return x.List + } + return nil +} + +func (x *GetChatMediaListResp) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatMediaListResp) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatMediaListResp) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +type GetChatUserListRequest2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page int64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Where string `protobuf:"bytes,3,opt,name=where,proto3" json:"where,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + UserIdIn []int64 `protobuf:"varint,5,rep,packed,name=userIdIn,proto3" json:"userIdIn,omitempty"` +} + +func (x *GetChatUserListRequest2) Reset() { + *x = GetChatUserListRequest2{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatUserListRequest2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatUserListRequest2) ProtoMessage() {} + +func (x *GetChatUserListRequest2) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatUserListRequest2.ProtoReflect.Descriptor instead. +func (*GetChatUserListRequest2) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{114} +} + +func (x *GetChatUserListRequest2) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatUserListRequest2) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatUserListRequest2) GetWhere() string { + if x != nil { + return x.Where + } + return "" +} + +func (x *GetChatUserListRequest2) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetChatUserListRequest2) GetUserIdIn() []int64 { + if x != nil { + return x.UserIdIn + } + return nil +} + +type ChatUser2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"` + Origin string `protobuf:"bytes,4,opt,name=origin,proto3" json:"origin,omitempty"` + OriginId string `protobuf:"bytes,5,opt,name=originId,proto3" json:"originId,omitempty"` +} + +func (x *ChatUser2) Reset() { + *x = ChatUser2{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatUser2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatUser2) ProtoMessage() {} + +func (x *ChatUser2) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[115] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatUser2.ProtoReflect.Descriptor instead. +func (*ChatUser2) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{115} +} + +func (x *ChatUser2) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *ChatUser2) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ChatUser2) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +func (x *ChatUser2) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *ChatUser2) GetOriginId() string { + if x != nil { + return x.OriginId + } + return "" +} + +type GetChatUserListResp2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*ChatUser2 `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Total int64 `protobuf:"varint,4,opt,name=Total,proto3" json:"Total,omitempty"` + Where string `protobuf:"bytes,5,opt,name=where,proto3" json:"where,omitempty"` +} + +func (x *GetChatUserListResp2) Reset() { + *x = GetChatUserListResp2{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatUserListResp2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatUserListResp2) ProtoMessage() {} + +func (x *GetChatUserListResp2) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[116] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatUserListResp2.ProtoReflect.Descriptor instead. +func (*GetChatUserListResp2) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{116} +} + +func (x *GetChatUserListResp2) GetList() []*ChatUser2 { + if x != nil { + return x.List + } + return nil +} + +func (x *GetChatUserListResp2) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatUserListResp2) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatUserListResp2) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *GetChatUserListResp2) GetWhere() string { + if x != nil { + return x.Where + } + return "" +} + +type ChatAutoReplyRulerData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // + CreatedAt string `protobuf:"bytes,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // + UpdatedAt string `protobuf:"bytes,3,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` // + DeletedAt int64 `protobuf:"varint,4,opt,name=deletedAt,proto3" json:"deletedAt,omitempty"` // + Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` //标题 + Ruler string `protobuf:"bytes,6,opt,name=ruler,proto3" json:"ruler,omitempty"` //规则内容 + RulerStatus int32 `protobuf:"varint,7,opt,name=rulerStatus,proto3" json:"rulerStatus,omitempty"` //规则状态: 1=启用 2=禁用 +} + +func (x *ChatAutoReplyRulerData) Reset() { + *x = ChatAutoReplyRulerData{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatAutoReplyRulerData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatAutoReplyRulerData) ProtoMessage() {} + +func (x *ChatAutoReplyRulerData) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[117] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatAutoReplyRulerData.ProtoReflect.Descriptor instead. +func (*ChatAutoReplyRulerData) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{117} +} + +func (x *ChatAutoReplyRulerData) GetID() int64 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *ChatAutoReplyRulerData) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *ChatAutoReplyRulerData) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +func (x *ChatAutoReplyRulerData) GetDeletedAt() int64 { + if x != nil { + return x.DeletedAt + } + return 0 +} + +func (x *ChatAutoReplyRulerData) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ChatAutoReplyRulerData) GetRuler() string { + if x != nil { + return x.Ruler + } + return "" +} + +func (x *ChatAutoReplyRulerData) GetRulerStatus() int32 { + if x != nil { + return x.RulerStatus + } + return 0 +} + +type CreateChatAutoReplyRulerResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *ChatAutoReplyRulerData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *CreateChatAutoReplyRulerResp) Reset() { + *x = CreateChatAutoReplyRulerResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateChatAutoReplyRulerResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateChatAutoReplyRulerResp) ProtoMessage() {} + +func (x *CreateChatAutoReplyRulerResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[118] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateChatAutoReplyRulerResp.ProtoReflect.Descriptor instead. +func (*CreateChatAutoReplyRulerResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{118} +} + +func (x *CreateChatAutoReplyRulerResp) GetData() *ChatAutoReplyRulerData { + if x != nil { + return x.Data + } + return nil +} + +func (x *CreateChatAutoReplyRulerResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type DeleteChatAutoReplyRulerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //二选一,数据id + Ids []int64 `protobuf:"varint,2,rep,packed,name=ids,proto3" json:"ids,omitempty"` //二选一,数据id列表 +} + +func (x *DeleteChatAutoReplyRulerRequest) Reset() { + *x = DeleteChatAutoReplyRulerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteChatAutoReplyRulerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteChatAutoReplyRulerRequest) ProtoMessage() {} + +func (x *DeleteChatAutoReplyRulerRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[119] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteChatAutoReplyRulerRequest.ProtoReflect.Descriptor instead. +func (*DeleteChatAutoReplyRulerRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{119} +} + +func (x *DeleteChatAutoReplyRulerRequest) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DeleteChatAutoReplyRulerRequest) GetIds() []int64 { + if x != nil { + return x.Ids + } + return nil +} + +type GetChatAutoReplyRulerByIdRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //数据id +} + +func (x *GetChatAutoReplyRulerByIdRequest) Reset() { + *x = GetChatAutoReplyRulerByIdRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatAutoReplyRulerByIdRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatAutoReplyRulerByIdRequest) ProtoMessage() {} + +func (x *GetChatAutoReplyRulerByIdRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[120] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatAutoReplyRulerByIdRequest.ProtoReflect.Descriptor instead. +func (*GetChatAutoReplyRulerByIdRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{120} +} + +func (x *GetChatAutoReplyRulerByIdRequest) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +type GetChatAutoReplyRulerListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Query *ChatAutoReplyRulerData `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Where string `protobuf:"bytes,4,opt,name=where,proto3" json:"where,omitempty"` + Order string `protobuf:"bytes,5,opt,name=order,proto3" json:"order,omitempty"` +} + +func (x *GetChatAutoReplyRulerListRequest) Reset() { + *x = GetChatAutoReplyRulerListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatAutoReplyRulerListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatAutoReplyRulerListRequest) ProtoMessage() {} + +func (x *GetChatAutoReplyRulerListRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[121] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatAutoReplyRulerListRequest.ProtoReflect.Descriptor instead. +func (*GetChatAutoReplyRulerListRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{121} +} + +func (x *GetChatAutoReplyRulerListRequest) GetQuery() *ChatAutoReplyRulerData { + if x != nil { + return x.Query + } + return nil +} + +func (x *GetChatAutoReplyRulerListRequest) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatAutoReplyRulerListRequest) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatAutoReplyRulerListRequest) GetWhere() string { + if x != nil { + return x.Where + } + return "" +} + +func (x *GetChatAutoReplyRulerListRequest) GetOrder() string { + if x != nil { + return x.Order + } + return "" +} + +type GetChatAutoReplyRulerListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*ChatAutoReplyRulerData `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Total int64 `protobuf:"varint,4,opt,name=Total,proto3" json:"Total,omitempty"` +} + +func (x *GetChatAutoReplyRulerListResp) Reset() { + *x = GetChatAutoReplyRulerListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatAutoReplyRulerListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatAutoReplyRulerListResp) ProtoMessage() {} + +func (x *GetChatAutoReplyRulerListResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[122] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatAutoReplyRulerListResp.ProtoReflect.Descriptor instead. +func (*GetChatAutoReplyRulerListResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{122} +} + +func (x *GetChatAutoReplyRulerListResp) GetList() []*ChatAutoReplyRulerData { + if x != nil { + return x.List + } + return nil +} + +func (x *GetChatAutoReplyRulerListResp) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatAutoReplyRulerListResp) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatAutoReplyRulerListResp) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +type ChatUserData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // + CreatedAt string `protobuf:"bytes,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // + UpdatedAt string `protobuf:"bytes,3,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` // + DeletedAt int64 `protobuf:"varint,4,opt,name=deletedAt,proto3" json:"deletedAt,omitempty"` // + NickName string `protobuf:"bytes,5,opt,name=nickName,proto3" json:"nickName,omitempty"` //昵称 + Account string `protobuf:"bytes,6,opt,name=account,proto3" json:"account,omitempty"` //账号 + Role int32 `protobuf:"varint,7,opt,name=role,proto3" json:"role,omitempty"` //聊天角色 1=用户 2=客服 + Origin string `protobuf:"bytes,8,opt,name=origin,proto3" json:"origin,omitempty"` //数据来源 + OriginId int64 `protobuf:"varint,9,opt,name=originId,proto3" json:"originId,omitempty"` //数据来源对应的用户ID + Avatar string `protobuf:"bytes,10,opt,name=avatar,proto3" json:"avatar,omitempty"` //头像 +} + +func (x *ChatUserData) Reset() { + *x = ChatUserData{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatUserData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatUserData) ProtoMessage() {} + +func (x *ChatUserData) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[123] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatUserData.ProtoReflect.Descriptor instead. +func (*ChatUserData) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{123} +} + +func (x *ChatUserData) GetID() int64 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *ChatUserData) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *ChatUserData) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +func (x *ChatUserData) GetDeletedAt() int64 { + if x != nil { + return x.DeletedAt + } + return 0 +} + +func (x *ChatUserData) GetNickName() string { + if x != nil { + return x.NickName + } + return "" +} + +func (x *ChatUserData) GetAccount() string { + if x != nil { + return x.Account + } + return "" +} + +func (x *ChatUserData) GetRole() int32 { + if x != nil { + return x.Role + } + return 0 +} + +func (x *ChatUserData) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *ChatUserData) GetOriginId() int64 { + if x != nil { + return x.OriginId + } + return 0 +} + +func (x *ChatUserData) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +type CreateChatUserResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *ChatUserData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *CreateChatUserResp) Reset() { + *x = CreateChatUserResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateChatUserResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateChatUserResp) ProtoMessage() {} + +func (x *CreateChatUserResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[124] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateChatUserResp.ProtoReflect.Descriptor instead. +func (*CreateChatUserResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{124} +} + +func (x *CreateChatUserResp) GetData() *ChatUserData { + if x != nil { + return x.Data + } + return nil +} + +func (x *CreateChatUserResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type DeleteChatUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //二选一,数据id + Ids []int64 `protobuf:"varint,2,rep,packed,name=ids,proto3" json:"ids,omitempty"` //二选一,数据id列表 +} + +func (x *DeleteChatUserRequest) Reset() { + *x = DeleteChatUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteChatUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteChatUserRequest) ProtoMessage() {} + +func (x *DeleteChatUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[125] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteChatUserRequest.ProtoReflect.Descriptor instead. +func (*DeleteChatUserRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{125} +} + +func (x *DeleteChatUserRequest) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DeleteChatUserRequest) GetIds() []int64 { + if x != nil { + return x.Ids + } + return nil +} + +type GetChatUserByIdRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //数据id +} + +func (x *GetChatUserByIdRequest) Reset() { + *x = GetChatUserByIdRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatUserByIdRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatUserByIdRequest) ProtoMessage() {} + +func (x *GetChatUserByIdRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[126] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatUserByIdRequest.ProtoReflect.Descriptor instead. +func (*GetChatUserByIdRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{126} +} + +func (x *GetChatUserByIdRequest) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +type GetChatUserListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Query *ChatUserData `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Where string `protobuf:"bytes,4,opt,name=where,proto3" json:"where,omitempty"` + Order string `protobuf:"bytes,5,opt,name=order,proto3" json:"order,omitempty"` +} + +func (x *GetChatUserListRequest) Reset() { + *x = GetChatUserListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatUserListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatUserListRequest) ProtoMessage() {} + +func (x *GetChatUserListRequest) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[127] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatUserListRequest.ProtoReflect.Descriptor instead. +func (*GetChatUserListRequest) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{127} +} + +func (x *GetChatUserListRequest) GetQuery() *ChatUserData { + if x != nil { + return x.Query + } + return nil +} + +func (x *GetChatUserListRequest) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatUserListRequest) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatUserListRequest) GetWhere() string { + if x != nil { + return x.Where + } + return "" +} + +func (x *GetChatUserListRequest) GetOrder() string { + if x != nil { + return x.Order + } + return "" +} + +type GetChatUserListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*ChatUserData `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Total int64 `protobuf:"varint,4,opt,name=Total,proto3" json:"Total,omitempty"` +} + +func (x *GetChatUserListResp) Reset() { + *x = GetChatUserListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_accountFiee_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetChatUserListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetChatUserListResp) ProtoMessage() {} + +func (x *GetChatUserListResp) ProtoReflect() protoreflect.Message { + mi := &file_accountFiee_proto_msgTypes[128] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetChatUserListResp.ProtoReflect.Descriptor instead. +func (*GetChatUserListResp) Descriptor() ([]byte, []int) { + return file_accountFiee_proto_rawDescGZIP(), []int{128} +} + +func (x *GetChatUserListResp) GetList() []*ChatUserData { + if x != nil { + return x.List + } + return nil +} + +func (x *GetChatUserListResp) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetChatUserListResp) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetChatUserListResp) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +var File_accountFiee_proto protoreflect.FileDescriptor + +var file_accountFiee_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x1a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x77, 0x69, + 0x1a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x40, 0x76, 0x30, 0x2e, 0x33, 0x2e, 0x32, 0x2f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x37, 0x0a, 0x19, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x22, 0x50, 0x0a, 0x1a, 0x56, 0x65, 0x72, 0x69, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x37, 0x0a, 0x19, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, - 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, - 0x74, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x14, 0x53, - 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x72, 0x22, 0x50, 0x0a, 0x1a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, + 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, - 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x54, 0x65, - 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, - 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, - 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x69, 0x67, - 0x6e, 0x4e, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x03, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x39, 0x0a, 0x1b, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, - 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, - 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, - 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x22, 0x50, 0x0a, 0x1a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x58, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x58, 0x22, 0xbb, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, - 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, - 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, - 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, - 0x53, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x76, 0x61, - 0x73, 0x53, 0x72, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x72, 0x63, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x72, 0x63, - 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x59, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x59, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x61, 0x63, 0x65, - 0x59, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x66, 0x61, 0x63, 0x65, 0x59, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x58, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x58, 0x22, 0xde, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x76, 0x61, - 0x73, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x61, - 0x6e, 0x76, 0x61, 0x73, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x6e, - 0x76, 0x61, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0c, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x20, 0x0a, - 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x61, 0x64, 0x69, 0x75, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x15, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x62, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, - 0x70, 0x61, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, - 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x8f, 0x01, 0x0a, - 0x10, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x82, - 0x05, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x20, 0x0a, - 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x58, 0x01, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x22, 0x39, 0x0a, 0x1b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, + 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x22, + 0x50, 0x0a, 0x1a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, + 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x58, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x58, 0x22, 0xbb, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, + 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x53, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x53, 0x72, 0x63, 0x12, 0x1a, 0x0a, + 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x72, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x72, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x59, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x59, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x61, 0x63, 0x65, 0x59, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x66, 0x61, 0x63, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x58, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x58, 0x22, + 0xde, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, + 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x57, 0x69, 0x64, + 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x57, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x22, 0x3f, 0x0a, 0x15, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x22, 0x62, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x73, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x70, 0x61, 0x73, 0x73, 0x12, 0x26, 0x0a, + 0x0e, 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, + 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x35, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x82, 0x05, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x12, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, + 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, + 0x74, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, + 0x68, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, + 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6c, 0x41, 0x72, 0x65, + 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6c, + 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x83, 0x02, 0x0a, + 0x0f, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, + 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4f, 0x72, 0x4e, 0x6f, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x4f, 0x72, 0x4e, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, + 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0c, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x22, 0xb2, 0x04, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x63, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, + 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, + 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x6e, + 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, + 0x72, 0x6b, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x22, 0x3a, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0xc5, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x20, 0x0a, + 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, - 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, - 0x0e, 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, - 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, - 0x0b, 0x74, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x4f, 0x72, 0x4e, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, - 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4f, 0x72, 0x4e, 0x6f, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x73, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x75, - 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xb2, 0x04, 0x0a, 0x10, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, - 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, - 0x0a, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x2a, - 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, - 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, - 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, - 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, - 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x50, 0x61, 0x73, 0x73, 0x52, 0x65, 0x6d, - 0x61, 0x72, 0x6b, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x50, - 0x61, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x2a, - 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, - 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, - 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x22, 0x3a, - 0x0a, 0x10, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc5, 0x02, 0x0a, 0x0f, 0x52, - 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x73, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, - 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, - 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x22, 0x50, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x46, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4a, - 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x6c, 0x0a, 0x24, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, - 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x53, 0x0a, 0x25, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, - 0x54, 0x68, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0xcc, 0x04, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, - 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, - 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x6f, - 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x4e, - 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x6e, 0x74, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x65, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, - 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, - 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, - 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x61, - 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0xe4, - 0x01, 0x0a, 0x18, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x57, 0x65, - 0x63, 0x68, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x68, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x67, 0x68, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x22, 0x82, 0x01, 0x0a, 0x1c, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, - 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2b, 0x0a, - 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0f, 0xe2, 0xdf, 0x1f, 0x0b, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x35, 0x58, 0x01, 0x78, 0x14, - 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x22, 0x5d, 0x0a, 0x17, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x58, 0x0a, 0x12, 0x4d, 0x61, 0x69, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xac, 0x01, 0x0a, 0x14, 0x46, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, - 0x65, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x77, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x24, 0x0a, 0x0d, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x6f, 0x22, 0x42, 0x0a, 0x14, 0x57, 0x78, 0x42, 0x6f, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, - 0x65, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x67, 0x68, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x18, 0x57, 0x78, 0x47, 0x65, 0x74, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x64, 0x42, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x67, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x68, 0x49, 0x64, - 0x22, 0x33, 0x0a, 0x19, 0x57, 0x78, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x42, - 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, - 0x70, 0x65, 0x6e, 0x49, 0x64, 0x22, 0x33, 0x0a, 0x19, 0x57, 0x78, 0x42, 0x6f, 0x78, 0x54, 0x65, - 0x6c, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x22, 0xc0, 0x01, 0x0a, 0x0d, 0x57, - 0x78, 0x42, 0x6f, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, - 0x65, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x67, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x4e, 0x65, - 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x29, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x78, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x77, 0x78, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x03, 0x66, 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x46, 0x64, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x66, 0x64, 0x64, 0x22, 0x7b, 0x0a, - 0x07, 0x46, 0x64, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x22, 0xea, 0x02, 0x0a, 0x08, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, - 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, - 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x44, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x44, 0x4e, 0x75, - 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61, - 0x6c, 0x49, 0x44, 0x49, 0x6d, 0x67, 0x41, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, - 0x65, 0x61, 0x6c, 0x49, 0x44, 0x49, 0x6d, 0x67, 0x41, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61, - 0x6c, 0x49, 0x44, 0x49, 0x6d, 0x67, 0x42, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, - 0x65, 0x61, 0x6c, 0x49, 0x44, 0x49, 0x6d, 0x67, 0x42, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x61, - 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x22, 0x1f, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x22, 0x20, 0x0a, 0x0c, 0x57, 0x78, 0x41, 0x70, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x04, 0x47, 0x68, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x22, 0x43, 0x0a, 0x0d, 0x57, 0x78, - 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, - 0x70, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, - 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, - 0x5b, 0x0a, 0x13, 0x57, 0x78, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x77, 0x78, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x18, 0xe2, 0xdf, 0x1f, 0x14, 0x2a, 0x10, 0xe7, 0xbc, 0xba, 0xe5, - 0xb0, 0x91, 0xe5, 0x8f, 0x82, 0xe6, 0x95, 0xb0, 0x77, 0x78, 0x49, 0x44, 0x58, 0x01, 0x52, 0x04, - 0x77, 0x78, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x73, 0x0a, 0x15, - 0x57, 0x78, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x14, 0xe2, 0xdf, 0x1f, 0x10, 0x2a, 0x0c, 0xe7, 0xbc, 0xba, - 0xe5, 0xb0, 0x91, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x58, 0x01, 0x52, 0x06, 0x6f, 0x70, 0x65, - 0x6e, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x04, 0x47, 0x68, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x18, 0xe2, 0xdf, 0x1f, 0x14, 0x2a, 0x10, 0xe7, 0xbc, 0xba, 0xe5, 0xb0, 0x91, 0xe5, - 0x8f, 0x82, 0xe6, 0x95, 0xb0, 0x67, 0x68, 0x69, 0x64, 0x58, 0x01, 0x52, 0x04, 0x67, 0x68, 0x49, - 0x44, 0x22, 0x80, 0x01, 0x0a, 0x0e, 0x57, 0x78, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x68, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x67, 0x68, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, - 0x41, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, - 0x41, 0x75, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x02, 0x49, 0x44, 0x22, 0x3e, 0x0a, 0x11, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x9c, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, - 0x67, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x70, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, - 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x22, 0x3e, 0x0a, 0x14, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, - 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x02, 0x49, 0x44, 0x22, 0x4b, 0x0a, 0x19, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x22, 0xca, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, - 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, - 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x14, 0xe2, 0xdf, 0x1f, 0x10, 0x2a, 0x0c, 0xe7, 0xbc, 0xba, 0xe5, 0xb0, 0x91, 0xe5, 0x8f, 0x82, - 0xe6, 0x95, 0xb0, 0x58, 0x01, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x77, - 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, - 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x22, 0x4b, 0x0a, - 0x10, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x65, 0x6c, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x11, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x65, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x6c, 0x73, 0x22, 0xdd, 0x01, 0x0a, - 0x10, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x44, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, 0x49, 0x44, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xd9, 0x01, 0x0a, - 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x18, - 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, - 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, - 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, - 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x22, 0xed, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x6e, - 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, - 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x0a, 0x09, - 0x5e, 0x31, 0x5c, 0x64, 0x7b, 0x31, 0x30, 0x7d, 0x24, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x32, - 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x55, 0x72, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x02, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x69, 0x67, 0x4e, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x73, 0x69, 0x67, 0x4e, 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, - 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x04, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, - 0x05, 0x37, 0x30, 0x30, 0x30, 0x33, 0x58, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x65, 0x6e, 0x64, - 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x69, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, - 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1d, 0x0a, 0x02, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x10, 0x00, 0x2a, 0x05, 0x37, - 0x30, 0x30, 0x30, 0x34, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x93, 0x03, 0x0a, - 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x74, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, - 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x74, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x74, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, - 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x65, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x44, 0x61, - 0x74, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x74, 0x65, 0x49, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x40, 0x0a, 0x16, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6e, 0x0a, 0x14, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x0c, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0c, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x10, 0x0a, 0x0e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, - 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x50, 0x0a, 0x10, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, - 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0x2e, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0x82, 0x01, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x55, 0x55, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x6f, 0x64, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, - 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x25, 0x0a, 0x06, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, - 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, - 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, - 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, - 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, - 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, - 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x65, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x22, 0x86, 0x01, 0x0a, - 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x6c, 0x6c, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x61, 0x6c, 0x6c, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, - 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x63, 0x65, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, - 0x65, 0x22, 0x75, 0x0a, 0x0c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, - 0x0a, 0x07, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x49, 0x73, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x09, 0x69, 0x73, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, - 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x43, - 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x77, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x22, 0x67, 0x0a, 0x15, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x24, 0x0a, 0x05, 0x49, 0x44, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0e, 0xe2, 0xdf, 0x1f, 0x0a, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x36, 0x80, 0x01, 0x12, 0x52, - 0x05, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x51, 0x0a, 0x0d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x22, - 0xc7, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, - 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, - 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x0c, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x46, 0x0a, + 0x14, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6a, + 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x6c, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, + 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, 0x61, + 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0x53, 0x0a, 0x25, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, 0x61, 0x6d, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xcc, 0x04, 0x0a, 0x0d, 0x4c, 0x69, 0x73, + 0x74, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x73, - 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x70, 0x61, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x74, - 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x74, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xc6, 0x01, - 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0b, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x6d, + 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, + 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x6e, 0x74, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x64, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, + 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, + 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, + 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x11, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x6e, 0x64, + 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x57, 0x65, 0x63, 0x68, 0x61, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x68, + 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x68, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x49, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x22, 0x82, + 0x01, 0x0a, 0x1c, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, + 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0xe2, 0xdf, 0x1f, 0x0b, 0x2a, 0x05, + 0x37, 0x30, 0x30, 0x30, 0x35, 0x58, 0x01, 0x78, 0x14, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x49, 0x44, 0x22, 0x5d, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x69, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, + 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x22, 0x58, 0x0a, 0x12, 0x4d, 0x61, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x67, 0x6c, + 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, + 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, + 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xac, 0x01, 0x0a, + 0x14, 0x46, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x77, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x08, 0x77, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x22, 0x42, 0x0a, 0x14, 0x57, + 0x78, 0x42, 0x6f, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, + 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x68, 0x49, 0x64, 0x22, + 0x58, 0x0a, 0x18, 0x57, 0x78, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x42, 0x79, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x68, 0x49, 0x64, 0x22, 0x33, 0x0a, 0x19, 0x57, 0x78, 0x47, + 0x65, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x42, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x22, 0x33, + 0x0a, 0x19, 0x57, 0x78, 0x42, 0x6f, 0x78, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, + 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, + 0x4e, 0x75, 0x6d, 0x22, 0xc0, 0x01, 0x0a, 0x0d, 0x57, 0x78, 0x42, 0x6f, 0x78, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x67, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x68, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x29, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x77, 0x78, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, + 0x0a, 0x03, 0x66, 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x46, 0x64, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x03, 0x66, 0x64, 0x64, 0x22, 0x7b, 0x0a, 0x07, 0x46, 0x64, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, + 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x24, 0x0a, + 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x6f, 0x22, 0xea, 0x02, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, + 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, + 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x61, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x44, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x44, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x6c, 0x49, 0x44, 0x49, 0x6d, 0x67, 0x41, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x6c, 0x49, 0x44, 0x49, 0x6d, + 0x67, 0x41, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x6c, 0x49, 0x44, 0x49, 0x6d, 0x67, 0x42, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x6c, 0x49, 0x44, 0x49, 0x6d, + 0x67, 0x42, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x22, 0x1f, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, + 0x44, 0x22, 0x20, 0x0a, 0x0c, 0x57, 0x78, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x04, 0x47, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x49, 0x44, 0x22, 0x43, 0x0a, 0x0d, 0x57, 0x78, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x70, + 0x70, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x70, 0x70, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x5b, 0x0a, 0x13, 0x57, 0x78, 0x55, 0x73, + 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2c, 0x0a, 0x04, 0x77, 0x78, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x18, 0xe2, + 0xdf, 0x1f, 0x14, 0x2a, 0x10, 0xe7, 0xbc, 0xba, 0xe5, 0xb0, 0x91, 0xe5, 0x8f, 0x82, 0xe6, 0x95, + 0xb0, 0x77, 0x78, 0x49, 0x44, 0x58, 0x01, 0x52, 0x04, 0x77, 0x78, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x73, 0x0a, 0x15, 0x57, 0x78, 0x55, 0x73, 0x65, 0x72, 0x4f, + 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, + 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x14, + 0xe2, 0xdf, 0x1f, 0x10, 0x2a, 0x0c, 0xe7, 0xbc, 0xba, 0xe5, 0xb0, 0x91, 0x6f, 0x70, 0x65, 0x6e, + 0x69, 0x64, 0x58, 0x01, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x04, + 0x47, 0x68, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xe2, 0xdf, 0x1f, 0x14, + 0x2a, 0x10, 0xe7, 0xbc, 0xba, 0xe5, 0xb0, 0x91, 0xe5, 0x8f, 0x82, 0xe6, 0x95, 0xb0, 0x67, 0x68, + 0x69, 0x64, 0x58, 0x01, 0x52, 0x04, 0x67, 0x68, 0x49, 0x44, 0x22, 0x80, 0x01, 0x0a, 0x0e, 0x57, + 0x78, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, + 0x70, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, + 0x04, 0x47, 0x68, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x68, 0x49, + 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x22, 0x3e, 0x0a, + 0x11, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9c, 0x02, + 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, + 0x44, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x44, 0x61, + 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3e, 0x0a, 0x14, + 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x22, 0x4b, 0x0a, 0x19, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xca, 0x01, 0x0a, 0x17, 0x53, 0x65, + 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, + 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x02, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xe2, 0xdf, 0x1f, 0x10, 0x2a, 0x0c, + 0xe7, 0xbc, 0xba, 0xe5, 0xb0, 0x91, 0xe5, 0x8f, 0x82, 0xe6, 0x95, 0xb0, 0x58, 0x01, 0x52, 0x02, + 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, + 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, + 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x22, 0x4b, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, + 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, + 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x74, 0x65, 0x6c, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, + 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, + 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x65, 0x6c, 0x73, 0x22, 0xdd, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, + 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, + 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, + 0x49, 0x44, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, + 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, + 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x4e, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x49, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x72, 0x22, 0xed, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, + 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x0a, 0x09, 0x5e, 0x31, 0x5c, 0x64, 0x7b, 0x31, 0x30, + 0x7d, 0x24, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x32, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, + 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x55, + 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x10, 0x0a, + 0x03, 0x4d, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6d, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x69, 0x67, 0x4e, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x69, 0x67, 0x4e, + 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, + 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x33, 0x58, + 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, + 0x65, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x0d, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, + 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x1d, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0d, + 0xe2, 0xdf, 0x1f, 0x09, 0x10, 0x00, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x34, 0x52, 0x02, 0x49, + 0x44, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x93, 0x03, 0x0a, 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, + 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x65, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6a, + 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x6e, + 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, + 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, + 0x75, 0x62, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x13, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x73, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0x40, 0x0a, 0x16, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x41, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6e, 0x0a, 0x14, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, + 0x66, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, 0x66, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x66, + 0x66, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2e, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0a, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x69, + 0x6e, 0x55, 0x55, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x44, 0x65, + 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x44, + 0x65, 0x73, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x10, 0x0a, + 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x6f, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, + 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, + 0x22, 0xf2, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, + 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5a, + 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, + 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, + 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x22, 0x75, 0x0a, 0x0c, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, - 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x0f, - 0x49, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x77, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x77, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x78, 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6a, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, - 0x43, 0x61, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, - 0x61, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, - 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0xb9, 0x0a, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, - 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, + 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x22, 0x90, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, + 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, + 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x4f, 0x66, 0x66, 0x6c, + 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x4f, 0x66, 0x66, + 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, + 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x43, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x50, 0x77, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x67, 0x0a, 0x15, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x49, 0x44, 0x4e, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe2, 0xdf, 0x1f, 0x0a, 0x2a, 0x05, + 0x37, 0x30, 0x30, 0x30, 0x36, 0x80, 0x01, 0x12, 0x52, 0x05, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x12, + 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x51, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, + 0x0a, 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x22, 0xc7, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6c, 0x41, + 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, + 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x0c, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe2, 0xdf, 0x1f, 0x09, 0x2a, 0x05, 0x37, 0x30, 0x30, 0x30, 0x31, + 0x58, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, + 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, + 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x49, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6c, 0x41, 0x72, + 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x69, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, + 0x78, 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x75, 0x6d, + 0x70, 0x54, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x75, 0x6d, 0x70, 0x54, + 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x61, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x12, + 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, + 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x65, 0x70, + 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb9, 0x0a, 0x0a, 0x0b, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, + 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x61, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, + 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x61, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x44, 0x4e, 0x75, 0x6d, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x44, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d, + 0x6e, 0x65, 0x6d, 0x6f, 0x6e, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x6e, 0x65, 0x6d, 0x6f, 0x6e, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x64, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x59, 0x65, 0x61, 0x72, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x59, 0x65, 0x61, 0x72, 0x12, + 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x06, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, + 0x42, 0x69, 0x72, 0x74, 0x68, 0x44, 0x61, 0x74, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x62, 0x69, 0x72, 0x74, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x41, + 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x53, 0x65, 0x78, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, + 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, + 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, 0x26, + 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x77, 0x4c, 0x6f, 0x67, + 0x49, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e, 0x6f, 0x77, 0x4c, 0x6f, 0x67, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x18, 0x1c, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x4c, 0x65, 0x66, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6c, 0x65, 0x66, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x1f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, + 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, + 0x63, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x06, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, + 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x43, 0x4e, + 0x75, 0x6d, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x12, + 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x24, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x56, 0x69, + 0x64, 0x65, 0x6f, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x22, 0xdc, 0x03, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x54, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x44, - 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x49, 0x44, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x44, 0x4e, - 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x6e, 0x65, 0x6d, 0x6f, 0x6e, 0x69, 0x63, 0x57, 0x6f, - 0x72, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x6e, 0x65, 0x6d, 0x6f, - 0x6e, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x4e, 0x65, - 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, - 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x6f, - 0x72, 0x6b, 0x59, 0x65, 0x61, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x77, 0x6f, - 0x72, 0x6b, 0x59, 0x65, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2b, - 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x52, 0x06, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4a, - 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, - 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x42, 0x69, 0x72, 0x74, 0x68, 0x44, 0x61, 0x74, 0x65, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x69, 0x72, 0x74, 0x68, 0x5f, 0x64, 0x61, - 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x15, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0b, - 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x61, - 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x18, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x44, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x69, - 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x4e, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x6e, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x61, 0x6e, - 0x53, 0x63, 0x61, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x53, - 0x63, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x65, 0x66, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, - 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, - 0x37, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x09, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, - 0x72, 0x6b, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, - 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x18, 0x20, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x2e, - 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x20, - 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x22, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x49, 0x43, 0x4e, 0x75, 0x6d, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x67, - 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x69, - 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x20, - 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x26, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x12, 0x39, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, - 0x27, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x0b, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, - 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x2a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x18, 0x2b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x22, 0xdc, - 0x03, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x32, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, - 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x44, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x49, 0x44, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x74, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x06, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, - 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, - 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x08, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x61, 0x0a, - 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, - 0x22, 0xfa, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, - 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x44, 0x65, 0x70, - 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a, - 0x14, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x78, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, - 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x22, - 0x88, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x22, 0x25, 0x0a, 0x13, 0x43, 0x6c, - 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x2a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc8, 0x01, - 0x0a, 0x16, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x04, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x61, 0x0a, 0x17, 0x43, 0x6c, 0x6f, 0x63, - 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf7, 0x01, 0x0a, 0x09, - 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x34, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, - 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x0f, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, - 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5e, 0x0a, 0x17, 0x43, 0x6c, 0x6f, 0x63, - 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa0, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, - 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x22, 0x58, 0x0a, 0x16, 0x43, - 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x49, 0x44, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, 0x44, 0x4e, + 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x2b, 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x06, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4a, + 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x49, + 0x6d, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, + 0x49, 0x6d, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x61, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0xfa, 0x01, 0x0a, 0x0c, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, + 0x0a, 0x0c, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x61, + 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x44, 0x65, + 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a, 0x14, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x78, + 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x5b, 0x0a, 0x15, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x16, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xc0, 0x01, 0x0a, 0x14, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, - 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x98, 0x04, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x63, 0x6b, - 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x73, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x73, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x67, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x73, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, - 0x61, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x72, 0x64, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x57, 0x6f, 0x72, - 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x57, 0x6f, 0x72, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x65, 0x6c, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x56, 0x69, 0x73, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x56, 0x69, 0x73, 0x69, 0x74, 0x12, 0x20, 0x0a, - 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, - 0x20, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x50, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x50, 0x65, 0x6f, 0x70, 0x6c, - 0x65, 0x22, 0xdb, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x65, - 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, + 0x69, 0x74, 0x65, 0x22, 0x25, 0x0a, 0x13, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x18, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc8, 0x01, 0x0a, 0x16, 0x43, 0x6c, 0x6f, 0x63, 0x6b, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, + 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, 0x69, 0x64, + 0x73, 0x22, 0x61, 0x0a, 0x17, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0xf7, 0x01, 0x0a, 0x09, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x80, + 0x02, 0x0a, 0x0f, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x5e, 0x0a, 0x17, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0xa0, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, + 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, + 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, + 0x63, 0x4e, 0x75, 0x6d, 0x22, 0x58, 0x0a, 0x16, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x5b, + 0x0a, 0x15, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x42, 0x69, 0x6e, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x04, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x16, 0x43, + 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc0, 0x01, 0x0a, + 0x14, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x6f, 0x62, + 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4a, 0x6f, 0x62, 0x4e, 0x75, + 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, + 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x98, 0x04, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x0e, 0x0a, 0x02, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x73, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, + 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, + 0x74, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, + 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0c, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x57, 0x6f, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x71, 0x72, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x71, 0x72, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x74, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x56, 0x69, + 0x73, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x56, 0x69, 0x73, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x4f, + 0x66, 0x50, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, + 0x75, 0x6d, 0x4f, 0x66, 0x50, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x22, 0xdb, 0x01, 0x0a, 0x0b, 0x43, + 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, + 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x14, 0x43, 0x6c, 0x6f, 0x63, + 0x6b, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, + 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x22, 0x1d, 0x0a, 0x09, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xb2, 0x03, 0x0a, 0x0e, 0x43, + 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x2e, 0x0a, 0x07, 0x6d, 0x73, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x73, 0x18, 0x0b, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x61, 0x69, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x61, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x77, 0x61, 0x69, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, + 0x59, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x3b, 0x0a, 0x17, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x2a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x68, + 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x02, 0x69, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x31, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, + 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, + 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x04, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x22, 0xd9, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, + 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2c, 0x0a, 0x12, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xfb, 0x01, 0x0a, 0x0d, 0x43, + 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x65, 0x78, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x78, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x76, 0x54, 0x65, 0x78, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x76, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x57, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x22, 0x3a, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x29, 0x0a, + 0x17, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x79, 0x49, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa7, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x04, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x22, 0x8f, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x32, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, + 0x65, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x49, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x49, 0x6e, 0x22, 0x83, 0x01, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x32, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x9e, 0x01, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x32, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x32, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x16, 0x43, + 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x72, + 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x69, 0x0a, + 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, + 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x43, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, + 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x32, 0x0a, + 0x20, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, + 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, - 0x6f, 0x67, 0x44, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, - 0x63, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, - 0x5b, 0x0a, 0x14, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xa5, 0x19, 0x0a, - 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x12, 0x3c, 0x0a, 0x05, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0c, 0x52, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, - 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, - 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x44, 0x0a, 0x07, 0x4f, 0x66, 0x66, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x09, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, - 0x6f, 0x67, 0x12, 0x26, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, - 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0d, - 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x42, 0x79, 0x49, 0x64, 0x12, 0x21, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x15, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x08, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x50, 0x77, 0x64, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x77, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, - 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x07, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x58, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, - 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, - 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x65, - 0x6e, 0x64, 0x45, 0x78, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, - 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, - 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x08, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x10, - 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, - 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, - 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x2e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, - 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x9e, 0x01, + 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x37, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x8e, + 0x02, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x44, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, + 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, + 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, + 0x55, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, + 0x73, 0x22, 0x28, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa5, 0x01, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x2a, 0x72, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x55, + 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x00, 0x12, + 0x0f, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x01, + 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, + 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x73, 0x67, 0x54, 0x79, + 0x70, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x73, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x10, 0x05, 0x32, 0xeb, 0x2b, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x19, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x47, + 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x07, 0x4f, 0x66, 0x66, 0x4c, 0x69, + 0x6e, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, + 0x09, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x26, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0d, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, + 0x67, 0x42, 0x79, 0x49, 0x64, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x42, 0x79, 0x49, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x22, + 0x00, 0x12, 0x47, 0x0a, 0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x77, 0x64, 0x12, 0x1c, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x50, 0x77, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x07, 0x53, 0x65, + 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, - 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0a, - 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x4a, 0x77, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, - 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4f, 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, - 0x65, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x3d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, - 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x41, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, - 0x12, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x43, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, - 0x79, 0x54, 0x65, 0x6c, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, - 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, - 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x4b, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x12, 0x1d, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, - 0x0a, 0x0b, 0x4f, 0x6e, 0x6c, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x52, 0x0a, 0x0c, 0x4f, 0x6e, 0x6c, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, + 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x45, 0x78, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, + 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, + 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x15, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x79, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4d, 0x61, 0x69, 0x6c, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4d, 0x61, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x06, 0x4c, - 0x69, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, - 0x01, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, - 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x31, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, - 0x68, 0x54, 0x68, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, - 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, - 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0d, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x42, 0x79, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, - 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, + 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, + 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x52, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, + 0x77, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x4e, + 0x75, 0x6d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x09, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x1a, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, + 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x12, 0x1e, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x09, 0x55, 0x73, 0x65, + 0x72, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x12, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0b, 0x4f, 0x6e, 0x6c, 0x79, 0x53, 0x65, + 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0c, 0x4f, 0x6e, 0x6c, 0x79, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x15, + 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x4e, 0x69, 0x63, + 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x79, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4d, + 0x61, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x52, 0x65, - 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, - 0x65, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, - 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, - 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, - 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x12, 0x29, 0x2e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, - 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x13, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, - 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x12, 0x27, 0x2e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, - 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, + 0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, 0x61, 0x6d, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, + 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x4f, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4a, 0x6f, 0x62, 0x4e, + 0x75, 0x6d, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x61, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, + 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x12, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x26, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x15, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, + 0x74, 0x63, 0x68, 0x61, 0x12, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, + 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, + 0x63, 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, + 0x13, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, + 0x74, 0x63, 0x68, 0x61, 0x12, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, + 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x53, 0x65, 0x6e, + 0x64, 0x4e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, + 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, + 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, - 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x2f, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0e, + 0x53, 0x61, 0x76, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, + 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, + 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, + 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, + 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x5a, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x12, 0x24, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x32, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x32, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x54, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, + 0x67, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0e, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x10, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, + 0x12, 0x5b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x60, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x51, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, + 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x20, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, + 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0d, 0x53, + 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, + 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, + 0x73, 0x67, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x5d, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6c, 0x0a, + 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x29, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x18, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x16, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, + 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, + 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, + 0x62, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, + 0x67, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, + 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, + 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x2f, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_api_accountFiee_accountFiee_proto_rawDescOnce sync.Once - file_api_accountFiee_accountFiee_proto_rawDescData = file_api_accountFiee_accountFiee_proto_rawDesc + file_accountFiee_proto_rawDescOnce sync.Once + file_accountFiee_proto_rawDescData = file_accountFiee_proto_rawDesc ) -func file_api_accountFiee_accountFiee_proto_rawDescGZIP() []byte { - file_api_accountFiee_accountFiee_proto_rawDescOnce.Do(func() { - file_api_accountFiee_accountFiee_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_accountFiee_accountFiee_proto_rawDescData) +func file_accountFiee_proto_rawDescGZIP() []byte { + file_accountFiee_proto_rawDescOnce.Do(func() { + file_accountFiee_proto_rawDescData = protoimpl.X.CompressGZIP(file_accountFiee_proto_rawDescData) }) - return file_api_accountFiee_accountFiee_proto_rawDescData + return file_accountFiee_proto_rawDescData } -var file_api_accountFiee_accountFiee_proto_msgTypes = make([]protoimpl.MessageInfo, 98) -var file_api_accountFiee_accountFiee_proto_goTypes = []interface{}{ - (*VerifySliderStatusRequest)(nil), // 0: accountFiee.VerifySliderStatusRequest - (*VerifySliderStatusResponse)(nil), // 1: accountFiee.VerifySliderStatusResponse - (*SendNationMsgRequest)(nil), // 2: accountFiee.SendNationMsgRequest - (*VerifySliderCaptchaResponse)(nil), // 3: accountFiee.VerifySliderCaptchaResponse - (*VerifySliderCaptchaRequest)(nil), // 4: accountFiee.VerifySliderCaptchaRequest - (*GenerateSliderCaptchaResponse)(nil), // 5: accountFiee.GenerateSliderCaptchaResponse - (*GenerateSliderCaptchaRequest)(nil), // 6: accountFiee.GenerateSliderCaptchaRequest - (*CheckRealNameResponse)(nil), // 7: accountFiee.CheckRealNameResponse - (*CheckRealNameRequest)(nil), // 8: accountFiee.CheckRealNameRequest - (*UserListResponse)(nil), // 9: accountFiee.UserListResponse - (*UserListInfo)(nil), // 10: accountFiee.UserListInfo - (*UserListRequest)(nil), // 11: accountFiee.UserListRequest - (*UserInfoResponse)(nil), // 12: accountFiee.UserInfoResponse - (*RealNameResponse)(nil), // 13: accountFiee.RealNameResponse - (*RealNameRequest)(nil), // 14: accountFiee.RealNameRequest - (*RegisterResponse)(nil), // 15: accountFiee.RegisterResponse - (*UsersByJobNumRequest)(nil), // 16: accountFiee.UsersByJobNumRequest - (*QueryPersonnelWithTheSameNameRequest)(nil), // 17: accountFiee.QueryPersonnelWithTheSameNameRequest - (*QueryPersonnelWithTheSameNameResponse)(nil), // 18: accountFiee.QueryPersonnelWithTheSameNameResponse - (*ListV2Request)(nil), // 19: accountFiee.ListV2Request - (*SendClockInWechatRequest)(nil), // 20: accountFiee.SendClockInWechatRequest - (*MailAccountByNickNameRequest)(nil), // 21: accountFiee.MailAccountByNickNameRequest - (*CreateMaiAccountRequest)(nil), // 22: accountFiee.CreateMaiAccountRequest - (*MaiAccountResponse)(nil), // 23: accountFiee.MaiAccountResponse - (*FddCreateUserRequest)(nil), // 24: accountFiee.FddCreateUserRequest - (*WxBoxUserInfoRequest)(nil), // 25: accountFiee.WxBoxUserInfoRequest - (*WxGetOpenIdByCodeRequest)(nil), // 26: accountFiee.WxGetOpenIdByCodeRequest - (*WxGetOpenIdByCodeResponse)(nil), // 27: accountFiee.WxGetOpenIdByCodeResponse - (*WxBoxTelNumByCodeResponse)(nil), // 28: accountFiee.WxBoxTelNumByCodeResponse - (*WxBoxUserInfo)(nil), // 29: accountFiee.WxBoxUserInfo - (*FddInfo)(nil), // 30: accountFiee.FddInfo - (*UserInfo)(nil), // 31: accountFiee.UserInfo - (*CommonRequest)(nil), // 32: accountFiee.CommonRequest - (*WxAppRequest)(nil), // 33: accountFiee.WxAppRequest - (*WxAppResponse)(nil), // 34: accountFiee.WxAppResponse - (*WxUserUpdateRequest)(nil), // 35: accountFiee.WxUserUpdateRequest - (*WxUserOrCreateRequest)(nil), // 36: accountFiee.WxUserOrCreateRequest - (*WxUserResponse)(nil), // 37: accountFiee.WxUserResponse - (*LoginLogsResponse)(nil), // 38: accountFiee.LoginLogsResponse - (*LoginLog)(nil), // 39: accountFiee.LoginLog - (*OnlineLogByIdRequest)(nil), // 40: accountFiee.OnlineLogByIdRequest - (*LoginInfosByUserIdRequest)(nil), // 41: accountFiee.LoginInfosByUserIdRequest - (*SendNewTelNumMsgRequest)(nil), // 42: accountFiee.SendNewTelNumMsgRequest - (*UserByTelRequest)(nil), // 43: accountFiee.UserByTelRequest - (*CommonResponse)(nil), // 44: accountFiee.CommonResponse - (*UsersByTelRequest)(nil), // 45: accountFiee.UsersByTelRequest - (*ListByIDsRequest)(nil), // 46: accountFiee.ListByIDsRequest - (*SendMsgRequest)(nil), // 47: accountFiee.SendMsgRequest - (*SendCustomMsgRequest)(nil), // 48: accountFiee.SendCustomMsgRequest - (*CheckMsgRequest)(nil), // 49: accountFiee.CheckMsgRequest - (*SendMsgStatusResponse)(nil), // 50: accountFiee.SendMsgStatusResponse - (*RemoveRequest)(nil), // 51: accountFiee.RemoveRequest - (*WriteOffRequest)(nil), // 52: accountFiee.WriteOffRequest - (*WriteOffListRequest)(nil), // 53: accountFiee.WriteOffListRequest - (*WriteOffApproveRequest)(nil), // 54: accountFiee.WriteOffApproveRequest - (*WriteOffListResponse)(nil), // 55: accountFiee.WriteOffListResponse - (*RemoveResponse)(nil), // 56: accountFiee.RemoveResponse - (*UpdateRequest)(nil), // 57: accountFiee.UpdateRequest - (*Operator)(nil), // 58: accountFiee.Operator - (*TrainVideo)(nil), // 59: accountFiee.trainVideo - (*UpdateResponse)(nil), // 60: accountFiee.UpdateResponse - (*PrivacyInfoRequest)(nil), // 61: accountFiee.PrivacyInfoRequest - (*ListRequest)(nil), // 62: accountFiee.ListRequest - (*ListResponse)(nil), // 63: accountFiee.ListResponse - (*InfoRequest)(nil), // 64: accountFiee.InfoRequest - (*InfoResponse)(nil), // 65: accountFiee.InfoResponse - (*DecryptJwtResponse)(nil), // 66: accountFiee.DecryptJwtResponse - (*DecryptJwtRequest)(nil), // 67: accountFiee.DecryptJwtRequest - (*CheckPwdRequest)(nil), // 68: accountFiee.CheckPwdRequest - (*AuthenticationRequest)(nil), // 69: accountFiee.AuthenticationRequest - (*RequestStatus)(nil), // 70: accountFiee.RequestStatus - (*RegistRequest)(nil), // 71: accountFiee.RegistRequest - (*LoginRequest)(nil), // 72: accountFiee.LoginRequest - (*TokenInfo)(nil), // 73: accountFiee.TokenInfo - (*Extend)(nil), // 74: accountFiee.Extend - (*Department)(nil), // 75: accountFiee.Department - (*AccountInfo)(nil), // 76: accountFiee.AccountInfo - (*UserInfoV2)(nil), // 77: accountFiee.UserInfoV2 - (*RefreshTokenRequest)(nil), // 78: accountFiee.RefreshTokenRequest - (*PositionUser)(nil), // 79: accountFiee.PositionUser - (*JobNumGetInfoRequest)(nil), // 80: accountFiee.JobNumGetInfoRequest - (*CreateClockDeviceRequest)(nil), // 81: accountFiee.CreateClockDeviceRequest - (*UpdateClockDeviceRequest)(nil), // 82: accountFiee.UpdateClockDeviceRequest - (*ClockDeviceResponse)(nil), // 83: accountFiee.ClockDeviceResponse - (*RemoveClockDeviceRequest)(nil), // 84: accountFiee.RemoveClockDeviceRequest - (*ClockDeviceListRequest)(nil), // 85: accountFiee.ClockDeviceListRequest - (*ClockDeviceListResponse)(nil), // 86: accountFiee.ClockDeviceListResponse - (*ClockUser)(nil), // 87: accountFiee.ClockUser - (*ClockDeviceInfo)(nil), // 88: accountFiee.ClockDeviceInfo - (*ClockDeviceInfoResponse)(nil), // 89: accountFiee.ClockDeviceInfoResponse - (*ClockUserRel)(nil), // 90: accountFiee.ClockUserRel - (*ClockDeviceInfoRequest)(nil), // 91: accountFiee.ClockDeviceInfoRequest - (*ClockBatchBindRequest)(nil), // 92: accountFiee.ClockBatchBindRequest - (*ClockBatchListResponse)(nil), // 93: accountFiee.ClockBatchListResponse - (*ClockUserDeviceBatch)(nil), // 94: accountFiee.ClockUserDeviceBatch - (*ClockLogInfo)(nil), // 95: accountFiee.ClockLogInfo - (*ClockLogReq)(nil), // 96: accountFiee.ClockLogReq - (*ClockLogListResponse)(nil), // 97: accountFiee.ClockLogListResponse +var file_accountFiee_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_accountFiee_proto_msgTypes = make([]protoimpl.MessageInfo, 129) +var file_accountFiee_proto_goTypes = []interface{}{ + (MsgType)(0), // 0: accountFiee.MsgType + (*VerifySliderStatusRequest)(nil), // 1: accountFiee.VerifySliderStatusRequest + (*VerifySliderStatusResponse)(nil), // 2: accountFiee.VerifySliderStatusResponse + (*SendNationMsgRequest)(nil), // 3: accountFiee.SendNationMsgRequest + (*VerifySliderCaptchaResponse)(nil), // 4: accountFiee.VerifySliderCaptchaResponse + (*VerifySliderCaptchaRequest)(nil), // 5: accountFiee.VerifySliderCaptchaRequest + (*GenerateSliderCaptchaResponse)(nil), // 6: accountFiee.GenerateSliderCaptchaResponse + (*GenerateSliderCaptchaRequest)(nil), // 7: accountFiee.GenerateSliderCaptchaRequest + (*CheckRealNameResponse)(nil), // 8: accountFiee.CheckRealNameResponse + (*CheckRealNameRequest)(nil), // 9: accountFiee.CheckRealNameRequest + (*UserListResponse)(nil), // 10: accountFiee.UserListResponse + (*UserListInfo)(nil), // 11: accountFiee.UserListInfo + (*UserListRequest)(nil), // 12: accountFiee.UserListRequest + (*UserInfoResponse)(nil), // 13: accountFiee.UserInfoResponse + (*RealNameResponse)(nil), // 14: accountFiee.RealNameResponse + (*RealNameRequest)(nil), // 15: accountFiee.RealNameRequest + (*RegisterResponse)(nil), // 16: accountFiee.RegisterResponse + (*UsersByJobNumRequest)(nil), // 17: accountFiee.UsersByJobNumRequest + (*QueryPersonnelWithTheSameNameRequest)(nil), // 18: accountFiee.QueryPersonnelWithTheSameNameRequest + (*QueryPersonnelWithTheSameNameResponse)(nil), // 19: accountFiee.QueryPersonnelWithTheSameNameResponse + (*ListV2Request)(nil), // 20: accountFiee.ListV2Request + (*SendClockInWechatRequest)(nil), // 21: accountFiee.SendClockInWechatRequest + (*MailAccountByNickNameRequest)(nil), // 22: accountFiee.MailAccountByNickNameRequest + (*CreateMaiAccountRequest)(nil), // 23: accountFiee.CreateMaiAccountRequest + (*MaiAccountResponse)(nil), // 24: accountFiee.MaiAccountResponse + (*FddCreateUserRequest)(nil), // 25: accountFiee.FddCreateUserRequest + (*WxBoxUserInfoRequest)(nil), // 26: accountFiee.WxBoxUserInfoRequest + (*WxGetOpenIdByCodeRequest)(nil), // 27: accountFiee.WxGetOpenIdByCodeRequest + (*WxGetOpenIdByCodeResponse)(nil), // 28: accountFiee.WxGetOpenIdByCodeResponse + (*WxBoxTelNumByCodeResponse)(nil), // 29: accountFiee.WxBoxTelNumByCodeResponse + (*WxBoxUserInfo)(nil), // 30: accountFiee.WxBoxUserInfo + (*FddInfo)(nil), // 31: accountFiee.FddInfo + (*UserInfo)(nil), // 32: accountFiee.UserInfo + (*CommonRequest)(nil), // 33: accountFiee.CommonRequest + (*WxAppRequest)(nil), // 34: accountFiee.WxAppRequest + (*WxAppResponse)(nil), // 35: accountFiee.WxAppResponse + (*WxUserUpdateRequest)(nil), // 36: accountFiee.WxUserUpdateRequest + (*WxUserOrCreateRequest)(nil), // 37: accountFiee.WxUserOrCreateRequest + (*WxUserResponse)(nil), // 38: accountFiee.WxUserResponse + (*LoginLogsResponse)(nil), // 39: accountFiee.LoginLogsResponse + (*LoginLog)(nil), // 40: accountFiee.LoginLog + (*OnlineLogByIdRequest)(nil), // 41: accountFiee.OnlineLogByIdRequest + (*LoginInfosByUserIdRequest)(nil), // 42: accountFiee.LoginInfosByUserIdRequest + (*SendNewTelNumMsgRequest)(nil), // 43: accountFiee.SendNewTelNumMsgRequest + (*UserByTelRequest)(nil), // 44: accountFiee.UserByTelRequest + (*CommonResponse)(nil), // 45: accountFiee.CommonResponse + (*UsersByTelRequest)(nil), // 46: accountFiee.UsersByTelRequest + (*ListByIDsRequest)(nil), // 47: accountFiee.ListByIDsRequest + (*SendMsgRequest)(nil), // 48: accountFiee.SendMsgRequest + (*SendCustomMsgRequest)(nil), // 49: accountFiee.SendCustomMsgRequest + (*CheckMsgRequest)(nil), // 50: accountFiee.CheckMsgRequest + (*SendMsgStatusResponse)(nil), // 51: accountFiee.SendMsgStatusResponse + (*RemoveRequest)(nil), // 52: accountFiee.RemoveRequest + (*WriteOffRequest)(nil), // 53: accountFiee.WriteOffRequest + (*WriteOffListRequest)(nil), // 54: accountFiee.WriteOffListRequest + (*WriteOffApproveRequest)(nil), // 55: accountFiee.WriteOffApproveRequest + (*WriteOffListResponse)(nil), // 56: accountFiee.WriteOffListResponse + (*RemoveResponse)(nil), // 57: accountFiee.RemoveResponse + (*UpdateRequest)(nil), // 58: accountFiee.UpdateRequest + (*Operator)(nil), // 59: accountFiee.Operator + (*TrainVideo)(nil), // 60: accountFiee.trainVideo + (*UpdateResponse)(nil), // 61: accountFiee.UpdateResponse + (*PrivacyInfoRequest)(nil), // 62: accountFiee.PrivacyInfoRequest + (*ListRequest)(nil), // 63: accountFiee.ListRequest + (*ListResponse)(nil), // 64: accountFiee.ListResponse + (*InfoRequest)(nil), // 65: accountFiee.InfoRequest + (*InfoResponse)(nil), // 66: accountFiee.InfoResponse + (*DecryptJwtResponse)(nil), // 67: accountFiee.DecryptJwtResponse + (*DecryptJwtRequest)(nil), // 68: accountFiee.DecryptJwtRequest + (*CheckPwdRequest)(nil), // 69: accountFiee.CheckPwdRequest + (*AuthenticationRequest)(nil), // 70: accountFiee.AuthenticationRequest + (*RequestStatus)(nil), // 71: accountFiee.RequestStatus + (*RegistRequest)(nil), // 72: accountFiee.RegistRequest + (*LoginRequest)(nil), // 73: accountFiee.LoginRequest + (*TokenInfo)(nil), // 74: accountFiee.TokenInfo + (*Extend)(nil), // 75: accountFiee.Extend + (*Department)(nil), // 76: accountFiee.Department + (*AccountInfo)(nil), // 77: accountFiee.AccountInfo + (*UserInfoV2)(nil), // 78: accountFiee.UserInfoV2 + (*RefreshTokenRequest)(nil), // 79: accountFiee.RefreshTokenRequest + (*PositionUser)(nil), // 80: accountFiee.PositionUser + (*JobNumGetInfoRequest)(nil), // 81: accountFiee.JobNumGetInfoRequest + (*CreateClockDeviceRequest)(nil), // 82: accountFiee.CreateClockDeviceRequest + (*UpdateClockDeviceRequest)(nil), // 83: accountFiee.UpdateClockDeviceRequest + (*ClockDeviceResponse)(nil), // 84: accountFiee.ClockDeviceResponse + (*RemoveClockDeviceRequest)(nil), // 85: accountFiee.RemoveClockDeviceRequest + (*ClockDeviceListRequest)(nil), // 86: accountFiee.ClockDeviceListRequest + (*ClockDeviceListResponse)(nil), // 87: accountFiee.ClockDeviceListResponse + (*ClockUser)(nil), // 88: accountFiee.ClockUser + (*ClockDeviceInfo)(nil), // 89: accountFiee.ClockDeviceInfo + (*ClockDeviceInfoResponse)(nil), // 90: accountFiee.ClockDeviceInfoResponse + (*ClockUserRel)(nil), // 91: accountFiee.ClockUserRel + (*ClockDeviceInfoRequest)(nil), // 92: accountFiee.ClockDeviceInfoRequest + (*ClockBatchBindRequest)(nil), // 93: accountFiee.ClockBatchBindRequest + (*ClockBatchListResponse)(nil), // 94: accountFiee.ClockBatchListResponse + (*ClockUserDeviceBatch)(nil), // 95: accountFiee.ClockUserDeviceBatch + (*ClockLogInfo)(nil), // 96: accountFiee.ClockLogInfo + (*ClockLogReq)(nil), // 97: accountFiee.ClockLogReq + (*ClockLogListResponse)(nil), // 98: accountFiee.ClockLogListResponse + (*SubmitInfoRequest)(nil), // 99: accountFiee.SubmitInfoRequest + (*CommonMsg)(nil), // 100: accountFiee.CommonMsg + (*ChatRecordData)(nil), // 101: accountFiee.ChatRecordData + (*CreateChatRecordResp)(nil), // 102: accountFiee.CreateChatRecordResp + (*DeleteChatRecordRequest)(nil), // 103: accountFiee.DeleteChatRecordRequest + (*GetChatRecordByIdRequest)(nil), // 104: accountFiee.GetChatRecordByIdRequest + (*GetChatRecordListRequest)(nil), // 105: accountFiee.GetChatRecordListRequest + (*GetChatRecordListResp)(nil), // 106: accountFiee.GetChatRecordListResp + (*RegisterWaiterRequest)(nil), // 107: accountFiee.RegisterWaiterRequest + (*RegisterWaiterResp)(nil), // 108: accountFiee.RegisterWaiterResp + (*ChatMediaData)(nil), // 109: accountFiee.ChatMediaData + (*CreateChatMediaResp)(nil), // 110: accountFiee.CreateChatMediaResp + (*DeleteChatMediaRequest)(nil), // 111: accountFiee.DeleteChatMediaRequest + (*GetChatMediaByIdRequest)(nil), // 112: accountFiee.GetChatMediaByIdRequest + (*GetChatMediaListRequest)(nil), // 113: accountFiee.GetChatMediaListRequest + (*GetChatMediaListResp)(nil), // 114: accountFiee.GetChatMediaListResp + (*GetChatUserListRequest2)(nil), // 115: accountFiee.GetChatUserListRequest2 + (*ChatUser2)(nil), // 116: accountFiee.ChatUser2 + (*GetChatUserListResp2)(nil), // 117: accountFiee.GetChatUserListResp2 + (*ChatAutoReplyRulerData)(nil), // 118: accountFiee.ChatAutoReplyRulerData + (*CreateChatAutoReplyRulerResp)(nil), // 119: accountFiee.CreateChatAutoReplyRulerResp + (*DeleteChatAutoReplyRulerRequest)(nil), // 120: accountFiee.DeleteChatAutoReplyRulerRequest + (*GetChatAutoReplyRulerByIdRequest)(nil), // 121: accountFiee.GetChatAutoReplyRulerByIdRequest + (*GetChatAutoReplyRulerListRequest)(nil), // 122: accountFiee.GetChatAutoReplyRulerListRequest + (*GetChatAutoReplyRulerListResp)(nil), // 123: accountFiee.GetChatAutoReplyRulerListResp + (*ChatUserData)(nil), // 124: accountFiee.ChatUserData + (*CreateChatUserResp)(nil), // 125: accountFiee.CreateChatUserResp + (*DeleteChatUserRequest)(nil), // 126: accountFiee.DeleteChatUserRequest + (*GetChatUserByIdRequest)(nil), // 127: accountFiee.GetChatUserByIdRequest + (*GetChatUserListRequest)(nil), // 128: accountFiee.GetChatUserListRequest + (*GetChatUserListResp)(nil), // 129: accountFiee.GetChatUserListResp } -var file_api_accountFiee_accountFiee_proto_depIdxs = []int32{ - 10, // 0: accountFiee.UserListResponse.userList:type_name -> accountFiee.UserListInfo - 31, // 1: accountFiee.WxBoxUserInfo.user:type_name -> accountFiee.UserInfo - 30, // 2: accountFiee.WxBoxUserInfo.fdd:type_name -> accountFiee.FddInfo - 39, // 3: accountFiee.LoginLogsResponse.Data:type_name -> accountFiee.LoginLog - 52, // 4: accountFiee.WriteOffListResponse.writeOffList:type_name -> accountFiee.WriteOffRequest - 76, // 5: accountFiee.ListResponse.Data:type_name -> accountFiee.AccountInfo - 76, // 6: accountFiee.InfoResponse.Info:type_name -> accountFiee.AccountInfo - 76, // 7: accountFiee.TokenInfo.AccountInfo:type_name -> accountFiee.AccountInfo - 74, // 8: accountFiee.AccountInfo.Extend:type_name -> accountFiee.Extend - 75, // 9: accountFiee.AccountInfo.Departments:type_name -> accountFiee.Department - 79, // 10: accountFiee.AccountInfo.Positions:type_name -> accountFiee.PositionUser - 87, // 11: accountFiee.AccountInfo.clocks:type_name -> accountFiee.ClockUser - 59, // 12: accountFiee.AccountInfo.TrainVideos:type_name -> accountFiee.trainVideo - 58, // 13: accountFiee.AccountInfo.operator:type_name -> accountFiee.Operator - 74, // 14: accountFiee.UserInfoV2.Extend:type_name -> accountFiee.Extend - 58, // 15: accountFiee.UserInfoV2.operator:type_name -> accountFiee.Operator - 88, // 16: accountFiee.ClockDeviceListResponse.data:type_name -> accountFiee.ClockDeviceInfo - 88, // 17: accountFiee.ClockUser.device:type_name -> accountFiee.ClockDeviceInfo - 90, // 18: accountFiee.ClockDeviceInfo.data:type_name -> accountFiee.ClockUserRel - 90, // 19: accountFiee.ClockDeviceInfoResponse.data:type_name -> accountFiee.ClockUserRel - 94, // 20: accountFiee.ClockBatchListResponse.data:type_name -> accountFiee.ClockUserDeviceBatch - 95, // 21: accountFiee.ClockLogListResponse.data:type_name -> accountFiee.ClockLogInfo - 72, // 22: accountFiee.AccountFiee.Login:input_type -> accountFiee.LoginRequest - 78, // 23: accountFiee.AccountFiee.RefreshToken:input_type -> accountFiee.RefreshTokenRequest - 67, // 24: accountFiee.AccountFiee.Logout:input_type -> accountFiee.DecryptJwtRequest - 32, // 25: accountFiee.AccountFiee.OffLine:input_type -> accountFiee.CommonRequest - 41, // 26: accountFiee.AccountFiee.OnlineLog:input_type -> accountFiee.LoginInfosByUserIdRequest - 40, // 27: accountFiee.AccountFiee.OnlineLogById:input_type -> accountFiee.OnlineLogByIdRequest - 68, // 28: accountFiee.AccountFiee.CheckPwd:input_type -> accountFiee.CheckPwdRequest - 47, // 29: accountFiee.AccountFiee.SendMsg:input_type -> accountFiee.SendMsgRequest - 48, // 30: accountFiee.AccountFiee.SendCustomMsg:input_type -> accountFiee.SendCustomMsgRequest - 48, // 31: accountFiee.AccountFiee.SendExCustomMsg:input_type -> accountFiee.SendCustomMsgRequest - 47, // 32: accountFiee.AccountFiee.SendMsgRegister:input_type -> accountFiee.SendMsgRequest - 49, // 33: accountFiee.AccountFiee.CheckMsg:input_type -> accountFiee.CheckMsgRequest - 42, // 34: accountFiee.AccountFiee.SendNewTelNumMsg:input_type -> accountFiee.SendNewTelNumMsgRequest - 42, // 35: accountFiee.AccountFiee.UpdateTelNum:input_type -> accountFiee.SendNewTelNumMsgRequest - 69, // 36: accountFiee.AccountFiee.Authentication:input_type -> accountFiee.AuthenticationRequest - 67, // 37: accountFiee.AccountFiee.DecryptJwt:input_type -> accountFiee.DecryptJwtRequest - 64, // 38: accountFiee.AccountFiee.Info:input_type -> accountFiee.InfoRequest - 80, // 39: accountFiee.AccountFiee.JobNumGetInfo:input_type -> accountFiee.JobNumGetInfoRequest - 62, // 40: accountFiee.AccountFiee.List:input_type -> accountFiee.ListRequest - 62, // 41: accountFiee.AccountFiee.RandList:input_type -> accountFiee.ListRequest - 46, // 42: accountFiee.AccountFiee.ListByIDs:input_type -> accountFiee.ListByIDsRequest - 51, // 43: accountFiee.AccountFiee.Remove:input_type -> accountFiee.RemoveRequest - 57, // 44: accountFiee.AccountFiee.Update:input_type -> accountFiee.UpdateRequest - 45, // 45: accountFiee.AccountFiee.UsersByTel:input_type -> accountFiee.UsersByTelRequest - 43, // 46: accountFiee.AccountFiee.UserByTel:input_type -> accountFiee.UserByTelRequest - 47, // 47: accountFiee.AccountFiee.OnlySendMsg:input_type -> accountFiee.SendMsgRequest - 49, // 48: accountFiee.AccountFiee.OnlyCheckMsg:input_type -> accountFiee.CheckMsgRequest - 21, // 49: accountFiee.AccountFiee.MailAccountByNickName:input_type -> accountFiee.MailAccountByNickNameRequest - 19, // 50: accountFiee.AccountFiee.ListV2:input_type -> accountFiee.ListV2Request - 17, // 51: accountFiee.AccountFiee.QueryPersonnelWithTheSameName:input_type -> accountFiee.QueryPersonnelWithTheSameNameRequest - 16, // 52: accountFiee.AccountFiee.UsersByJobNum:input_type -> accountFiee.UsersByJobNumRequest - 14, // 53: accountFiee.AccountFiee.RealName:input_type -> accountFiee.RealNameRequest - 71, // 54: accountFiee.AccountFiee.Register:input_type -> accountFiee.RegistRequest - 11, // 55: accountFiee.AccountFiee.UserList:input_type -> accountFiee.UserListRequest - 8, // 56: accountFiee.AccountFiee.CheckRealName:input_type -> accountFiee.CheckRealNameRequest - 6, // 57: accountFiee.AccountFiee.GenerateSliderCaptcha:input_type -> accountFiee.GenerateSliderCaptchaRequest - 4, // 58: accountFiee.AccountFiee.VerifySliderCaptcha:input_type -> accountFiee.VerifySliderCaptchaRequest - 2, // 59: accountFiee.AccountFiee.SendNationMsg:input_type -> accountFiee.SendNationMsgRequest - 0, // 60: accountFiee.AccountFiee.VerifySliderStatus:input_type -> accountFiee.VerifySliderStatusRequest - 73, // 61: accountFiee.AccountFiee.Login:output_type -> accountFiee.TokenInfo - 73, // 62: accountFiee.AccountFiee.RefreshToken:output_type -> accountFiee.TokenInfo - 44, // 63: accountFiee.AccountFiee.Logout:output_type -> accountFiee.CommonResponse - 44, // 64: accountFiee.AccountFiee.OffLine:output_type -> accountFiee.CommonResponse - 38, // 65: accountFiee.AccountFiee.OnlineLog:output_type -> accountFiee.LoginLogsResponse - 39, // 66: accountFiee.AccountFiee.OnlineLogById:output_type -> accountFiee.LoginLog - 60, // 67: accountFiee.AccountFiee.CheckPwd:output_type -> accountFiee.UpdateResponse - 50, // 68: accountFiee.AccountFiee.SendMsg:output_type -> accountFiee.SendMsgStatusResponse - 50, // 69: accountFiee.AccountFiee.SendCustomMsg:output_type -> accountFiee.SendMsgStatusResponse - 50, // 70: accountFiee.AccountFiee.SendExCustomMsg:output_type -> accountFiee.SendMsgStatusResponse - 50, // 71: accountFiee.AccountFiee.SendMsgRegister:output_type -> accountFiee.SendMsgStatusResponse - 50, // 72: accountFiee.AccountFiee.CheckMsg:output_type -> accountFiee.SendMsgStatusResponse - 50, // 73: accountFiee.AccountFiee.SendNewTelNumMsg:output_type -> accountFiee.SendMsgStatusResponse - 50, // 74: accountFiee.AccountFiee.UpdateTelNum:output_type -> accountFiee.SendMsgStatusResponse - 70, // 75: accountFiee.AccountFiee.Authentication:output_type -> accountFiee.RequestStatus - 66, // 76: accountFiee.AccountFiee.DecryptJwt:output_type -> accountFiee.DecryptJwtResponse - 12, // 77: accountFiee.AccountFiee.Info:output_type -> accountFiee.UserInfoResponse - 65, // 78: accountFiee.AccountFiee.JobNumGetInfo:output_type -> accountFiee.InfoResponse - 63, // 79: accountFiee.AccountFiee.List:output_type -> accountFiee.ListResponse - 63, // 80: accountFiee.AccountFiee.RandList:output_type -> accountFiee.ListResponse - 63, // 81: accountFiee.AccountFiee.ListByIDs:output_type -> accountFiee.ListResponse - 56, // 82: accountFiee.AccountFiee.Remove:output_type -> accountFiee.RemoveResponse - 60, // 83: accountFiee.AccountFiee.Update:output_type -> accountFiee.UpdateResponse - 63, // 84: accountFiee.AccountFiee.UsersByTel:output_type -> accountFiee.ListResponse - 12, // 85: accountFiee.AccountFiee.UserByTel:output_type -> accountFiee.UserInfoResponse - 50, // 86: accountFiee.AccountFiee.OnlySendMsg:output_type -> accountFiee.SendMsgStatusResponse - 50, // 87: accountFiee.AccountFiee.OnlyCheckMsg:output_type -> accountFiee.SendMsgStatusResponse - 23, // 88: accountFiee.AccountFiee.MailAccountByNickName:output_type -> accountFiee.MaiAccountResponse - 63, // 89: accountFiee.AccountFiee.ListV2:output_type -> accountFiee.ListResponse - 18, // 90: accountFiee.AccountFiee.QueryPersonnelWithTheSameName:output_type -> accountFiee.QueryPersonnelWithTheSameNameResponse - 63, // 91: accountFiee.AccountFiee.UsersByJobNum:output_type -> accountFiee.ListResponse - 13, // 92: accountFiee.AccountFiee.RealName:output_type -> accountFiee.RealNameResponse - 15, // 93: accountFiee.AccountFiee.Register:output_type -> accountFiee.RegisterResponse - 9, // 94: accountFiee.AccountFiee.UserList:output_type -> accountFiee.UserListResponse - 7, // 95: accountFiee.AccountFiee.CheckRealName:output_type -> accountFiee.CheckRealNameResponse - 5, // 96: accountFiee.AccountFiee.GenerateSliderCaptcha:output_type -> accountFiee.GenerateSliderCaptchaResponse - 3, // 97: accountFiee.AccountFiee.VerifySliderCaptcha:output_type -> accountFiee.VerifySliderCaptchaResponse - 50, // 98: accountFiee.AccountFiee.SendNationMsg:output_type -> accountFiee.SendMsgStatusResponse - 1, // 99: accountFiee.AccountFiee.VerifySliderStatus:output_type -> accountFiee.VerifySliderStatusResponse - 61, // [61:100] is the sub-list for method output_type - 22, // [22:61] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name +var file_accountFiee_proto_depIdxs = []int32{ + 11, // 0: accountFiee.UserListResponse.userList:type_name -> accountFiee.UserListInfo + 32, // 1: accountFiee.WxBoxUserInfo.user:type_name -> accountFiee.UserInfo + 31, // 2: accountFiee.WxBoxUserInfo.fdd:type_name -> accountFiee.FddInfo + 40, // 3: accountFiee.LoginLogsResponse.Data:type_name -> accountFiee.LoginLog + 53, // 4: accountFiee.WriteOffListResponse.writeOffList:type_name -> accountFiee.WriteOffRequest + 77, // 5: accountFiee.ListResponse.Data:type_name -> accountFiee.AccountInfo + 77, // 6: accountFiee.InfoResponse.Info:type_name -> accountFiee.AccountInfo + 77, // 7: accountFiee.TokenInfo.AccountInfo:type_name -> accountFiee.AccountInfo + 75, // 8: accountFiee.AccountInfo.Extend:type_name -> accountFiee.Extend + 76, // 9: accountFiee.AccountInfo.Departments:type_name -> accountFiee.Department + 80, // 10: accountFiee.AccountInfo.Positions:type_name -> accountFiee.PositionUser + 88, // 11: accountFiee.AccountInfo.clocks:type_name -> accountFiee.ClockUser + 60, // 12: accountFiee.AccountInfo.TrainVideos:type_name -> accountFiee.trainVideo + 59, // 13: accountFiee.AccountInfo.operator:type_name -> accountFiee.Operator + 75, // 14: accountFiee.UserInfoV2.Extend:type_name -> accountFiee.Extend + 59, // 15: accountFiee.UserInfoV2.operator:type_name -> accountFiee.Operator + 89, // 16: accountFiee.ClockDeviceListResponse.data:type_name -> accountFiee.ClockDeviceInfo + 89, // 17: accountFiee.ClockUser.device:type_name -> accountFiee.ClockDeviceInfo + 91, // 18: accountFiee.ClockDeviceInfo.data:type_name -> accountFiee.ClockUserRel + 91, // 19: accountFiee.ClockDeviceInfoResponse.data:type_name -> accountFiee.ClockUserRel + 95, // 20: accountFiee.ClockBatchListResponse.data:type_name -> accountFiee.ClockUserDeviceBatch + 96, // 21: accountFiee.ClockLogListResponse.data:type_name -> accountFiee.ClockLogInfo + 0, // 22: accountFiee.ChatRecordData.msgType:type_name -> accountFiee.MsgType + 109, // 23: accountFiee.ChatRecordData.medias:type_name -> accountFiee.ChatMediaData + 101, // 24: accountFiee.CreateChatRecordResp.data:type_name -> accountFiee.ChatRecordData + 101, // 25: accountFiee.GetChatRecordListRequest.query:type_name -> accountFiee.ChatRecordData + 101, // 26: accountFiee.GetChatRecordListResp.list:type_name -> accountFiee.ChatRecordData + 109, // 27: accountFiee.CreateChatMediaResp.data:type_name -> accountFiee.ChatMediaData + 109, // 28: accountFiee.GetChatMediaListRequest.query:type_name -> accountFiee.ChatMediaData + 109, // 29: accountFiee.GetChatMediaListResp.list:type_name -> accountFiee.ChatMediaData + 116, // 30: accountFiee.GetChatUserListResp2.list:type_name -> accountFiee.ChatUser2 + 118, // 31: accountFiee.CreateChatAutoReplyRulerResp.data:type_name -> accountFiee.ChatAutoReplyRulerData + 118, // 32: accountFiee.GetChatAutoReplyRulerListRequest.query:type_name -> accountFiee.ChatAutoReplyRulerData + 118, // 33: accountFiee.GetChatAutoReplyRulerListResp.list:type_name -> accountFiee.ChatAutoReplyRulerData + 124, // 34: accountFiee.CreateChatUserResp.data:type_name -> accountFiee.ChatUserData + 124, // 35: accountFiee.GetChatUserListRequest.query:type_name -> accountFiee.ChatUserData + 124, // 36: accountFiee.GetChatUserListResp.list:type_name -> accountFiee.ChatUserData + 73, // 37: accountFiee.AccountFiee.Login:input_type -> accountFiee.LoginRequest + 79, // 38: accountFiee.AccountFiee.RefreshToken:input_type -> accountFiee.RefreshTokenRequest + 68, // 39: accountFiee.AccountFiee.Logout:input_type -> accountFiee.DecryptJwtRequest + 33, // 40: accountFiee.AccountFiee.OffLine:input_type -> accountFiee.CommonRequest + 42, // 41: accountFiee.AccountFiee.OnlineLog:input_type -> accountFiee.LoginInfosByUserIdRequest + 41, // 42: accountFiee.AccountFiee.OnlineLogById:input_type -> accountFiee.OnlineLogByIdRequest + 69, // 43: accountFiee.AccountFiee.CheckPwd:input_type -> accountFiee.CheckPwdRequest + 48, // 44: accountFiee.AccountFiee.SendMsg:input_type -> accountFiee.SendMsgRequest + 49, // 45: accountFiee.AccountFiee.SendCustomMsg:input_type -> accountFiee.SendCustomMsgRequest + 49, // 46: accountFiee.AccountFiee.SendExCustomMsg:input_type -> accountFiee.SendCustomMsgRequest + 48, // 47: accountFiee.AccountFiee.SendMsgRegister:input_type -> accountFiee.SendMsgRequest + 50, // 48: accountFiee.AccountFiee.CheckMsg:input_type -> accountFiee.CheckMsgRequest + 43, // 49: accountFiee.AccountFiee.SendNewTelNumMsg:input_type -> accountFiee.SendNewTelNumMsgRequest + 43, // 50: accountFiee.AccountFiee.UpdateTelNum:input_type -> accountFiee.SendNewTelNumMsgRequest + 70, // 51: accountFiee.AccountFiee.Authentication:input_type -> accountFiee.AuthenticationRequest + 68, // 52: accountFiee.AccountFiee.DecryptJwt:input_type -> accountFiee.DecryptJwtRequest + 65, // 53: accountFiee.AccountFiee.Info:input_type -> accountFiee.InfoRequest + 81, // 54: accountFiee.AccountFiee.JobNumGetInfo:input_type -> accountFiee.JobNumGetInfoRequest + 63, // 55: accountFiee.AccountFiee.List:input_type -> accountFiee.ListRequest + 63, // 56: accountFiee.AccountFiee.RandList:input_type -> accountFiee.ListRequest + 47, // 57: accountFiee.AccountFiee.ListByIDs:input_type -> accountFiee.ListByIDsRequest + 52, // 58: accountFiee.AccountFiee.Remove:input_type -> accountFiee.RemoveRequest + 58, // 59: accountFiee.AccountFiee.Update:input_type -> accountFiee.UpdateRequest + 46, // 60: accountFiee.AccountFiee.UsersByTel:input_type -> accountFiee.UsersByTelRequest + 44, // 61: accountFiee.AccountFiee.UserByTel:input_type -> accountFiee.UserByTelRequest + 48, // 62: accountFiee.AccountFiee.OnlySendMsg:input_type -> accountFiee.SendMsgRequest + 50, // 63: accountFiee.AccountFiee.OnlyCheckMsg:input_type -> accountFiee.CheckMsgRequest + 22, // 64: accountFiee.AccountFiee.MailAccountByNickName:input_type -> accountFiee.MailAccountByNickNameRequest + 20, // 65: accountFiee.AccountFiee.ListV2:input_type -> accountFiee.ListV2Request + 18, // 66: accountFiee.AccountFiee.QueryPersonnelWithTheSameName:input_type -> accountFiee.QueryPersonnelWithTheSameNameRequest + 17, // 67: accountFiee.AccountFiee.UsersByJobNum:input_type -> accountFiee.UsersByJobNumRequest + 15, // 68: accountFiee.AccountFiee.RealName:input_type -> accountFiee.RealNameRequest + 72, // 69: accountFiee.AccountFiee.Register:input_type -> accountFiee.RegistRequest + 12, // 70: accountFiee.AccountFiee.UserList:input_type -> accountFiee.UserListRequest + 9, // 71: accountFiee.AccountFiee.CheckRealName:input_type -> accountFiee.CheckRealNameRequest + 7, // 72: accountFiee.AccountFiee.GenerateSliderCaptcha:input_type -> accountFiee.GenerateSliderCaptchaRequest + 5, // 73: accountFiee.AccountFiee.VerifySliderCaptcha:input_type -> accountFiee.VerifySliderCaptchaRequest + 3, // 74: accountFiee.AccountFiee.SendNationMsg:input_type -> accountFiee.SendNationMsgRequest + 1, // 75: accountFiee.AccountFiee.VerifySliderStatus:input_type -> accountFiee.VerifySliderStatusRequest + 99, // 76: accountFiee.AccountFiee.SaveSubmitInfo:input_type -> accountFiee.SubmitInfoRequest + 124, // 77: accountFiee.AccountFiee.CreateChatUser:input_type -> accountFiee.ChatUserData + 124, // 78: accountFiee.AccountFiee.UpdateChatUser:input_type -> accountFiee.ChatUserData + 124, // 79: accountFiee.AccountFiee.SaveChatUser:input_type -> accountFiee.ChatUserData + 126, // 80: accountFiee.AccountFiee.DeleteChatUser:input_type -> accountFiee.DeleteChatUserRequest + 127, // 81: accountFiee.AccountFiee.GetChatUserDetail:input_type -> accountFiee.GetChatUserByIdRequest + 128, // 82: accountFiee.AccountFiee.GetChatUserList:input_type -> accountFiee.GetChatUserListRequest + 115, // 83: accountFiee.AccountFiee.GetChatUserList2:input_type -> accountFiee.GetChatUserListRequest2 + 107, // 84: accountFiee.AccountFiee.RegisterWaiter:input_type -> accountFiee.RegisterWaiterRequest + 101, // 85: accountFiee.AccountFiee.CreateChatRecord:input_type -> accountFiee.ChatRecordData + 101, // 86: accountFiee.AccountFiee.UpdateChatRecord:input_type -> accountFiee.ChatRecordData + 101, // 87: accountFiee.AccountFiee.SaveChatRecord:input_type -> accountFiee.ChatRecordData + 103, // 88: accountFiee.AccountFiee.DeleteChatRecord:input_type -> accountFiee.DeleteChatRecordRequest + 104, // 89: accountFiee.AccountFiee.GetChatRecordDetail:input_type -> accountFiee.GetChatRecordByIdRequest + 105, // 90: accountFiee.AccountFiee.GetChatRecordList:input_type -> accountFiee.GetChatRecordListRequest + 109, // 91: accountFiee.AccountFiee.CreateChatMedia:input_type -> accountFiee.ChatMediaData + 109, // 92: accountFiee.AccountFiee.UpdateChatMedia:input_type -> accountFiee.ChatMediaData + 109, // 93: accountFiee.AccountFiee.SaveChatMedia:input_type -> accountFiee.ChatMediaData + 111, // 94: accountFiee.AccountFiee.DeleteChatMedia:input_type -> accountFiee.DeleteChatMediaRequest + 112, // 95: accountFiee.AccountFiee.GetChatMediaDetail:input_type -> accountFiee.GetChatMediaByIdRequest + 113, // 96: accountFiee.AccountFiee.GetChatMediaList:input_type -> accountFiee.GetChatMediaListRequest + 118, // 97: accountFiee.AccountFiee.CreateChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData + 118, // 98: accountFiee.AccountFiee.UpdateChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData + 118, // 99: accountFiee.AccountFiee.SaveChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData + 120, // 100: accountFiee.AccountFiee.DeleteChatAutoReplyRuler:input_type -> accountFiee.DeleteChatAutoReplyRulerRequest + 121, // 101: accountFiee.AccountFiee.GetChatAutoReplyRulerDetail:input_type -> accountFiee.GetChatAutoReplyRulerByIdRequest + 122, // 102: accountFiee.AccountFiee.GetChatAutoReplyRulerList:input_type -> accountFiee.GetChatAutoReplyRulerListRequest + 74, // 103: accountFiee.AccountFiee.Login:output_type -> accountFiee.TokenInfo + 74, // 104: accountFiee.AccountFiee.RefreshToken:output_type -> accountFiee.TokenInfo + 45, // 105: accountFiee.AccountFiee.Logout:output_type -> accountFiee.CommonResponse + 45, // 106: accountFiee.AccountFiee.OffLine:output_type -> accountFiee.CommonResponse + 39, // 107: accountFiee.AccountFiee.OnlineLog:output_type -> accountFiee.LoginLogsResponse + 40, // 108: accountFiee.AccountFiee.OnlineLogById:output_type -> accountFiee.LoginLog + 61, // 109: accountFiee.AccountFiee.CheckPwd:output_type -> accountFiee.UpdateResponse + 51, // 110: accountFiee.AccountFiee.SendMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 111: accountFiee.AccountFiee.SendCustomMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 112: accountFiee.AccountFiee.SendExCustomMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 113: accountFiee.AccountFiee.SendMsgRegister:output_type -> accountFiee.SendMsgStatusResponse + 51, // 114: accountFiee.AccountFiee.CheckMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 115: accountFiee.AccountFiee.SendNewTelNumMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 116: accountFiee.AccountFiee.UpdateTelNum:output_type -> accountFiee.SendMsgStatusResponse + 71, // 117: accountFiee.AccountFiee.Authentication:output_type -> accountFiee.RequestStatus + 67, // 118: accountFiee.AccountFiee.DecryptJwt:output_type -> accountFiee.DecryptJwtResponse + 13, // 119: accountFiee.AccountFiee.Info:output_type -> accountFiee.UserInfoResponse + 66, // 120: accountFiee.AccountFiee.JobNumGetInfo:output_type -> accountFiee.InfoResponse + 64, // 121: accountFiee.AccountFiee.List:output_type -> accountFiee.ListResponse + 64, // 122: accountFiee.AccountFiee.RandList:output_type -> accountFiee.ListResponse + 64, // 123: accountFiee.AccountFiee.ListByIDs:output_type -> accountFiee.ListResponse + 57, // 124: accountFiee.AccountFiee.Remove:output_type -> accountFiee.RemoveResponse + 61, // 125: accountFiee.AccountFiee.Update:output_type -> accountFiee.UpdateResponse + 64, // 126: accountFiee.AccountFiee.UsersByTel:output_type -> accountFiee.ListResponse + 13, // 127: accountFiee.AccountFiee.UserByTel:output_type -> accountFiee.UserInfoResponse + 51, // 128: accountFiee.AccountFiee.OnlySendMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 129: accountFiee.AccountFiee.OnlyCheckMsg:output_type -> accountFiee.SendMsgStatusResponse + 24, // 130: accountFiee.AccountFiee.MailAccountByNickName:output_type -> accountFiee.MaiAccountResponse + 64, // 131: accountFiee.AccountFiee.ListV2:output_type -> accountFiee.ListResponse + 19, // 132: accountFiee.AccountFiee.QueryPersonnelWithTheSameName:output_type -> accountFiee.QueryPersonnelWithTheSameNameResponse + 64, // 133: accountFiee.AccountFiee.UsersByJobNum:output_type -> accountFiee.ListResponse + 14, // 134: accountFiee.AccountFiee.RealName:output_type -> accountFiee.RealNameResponse + 16, // 135: accountFiee.AccountFiee.Register:output_type -> accountFiee.RegisterResponse + 10, // 136: accountFiee.AccountFiee.UserList:output_type -> accountFiee.UserListResponse + 8, // 137: accountFiee.AccountFiee.CheckRealName:output_type -> accountFiee.CheckRealNameResponse + 6, // 138: accountFiee.AccountFiee.GenerateSliderCaptcha:output_type -> accountFiee.GenerateSliderCaptchaResponse + 4, // 139: accountFiee.AccountFiee.VerifySliderCaptcha:output_type -> accountFiee.VerifySliderCaptchaResponse + 51, // 140: accountFiee.AccountFiee.SendNationMsg:output_type -> accountFiee.SendMsgStatusResponse + 2, // 141: accountFiee.AccountFiee.VerifySliderStatus:output_type -> accountFiee.VerifySliderStatusResponse + 45, // 142: accountFiee.AccountFiee.SaveSubmitInfo:output_type -> accountFiee.CommonResponse + 125, // 143: accountFiee.AccountFiee.CreateChatUser:output_type -> accountFiee.CreateChatUserResp + 100, // 144: accountFiee.AccountFiee.UpdateChatUser:output_type -> accountFiee.CommonMsg + 100, // 145: accountFiee.AccountFiee.SaveChatUser:output_type -> accountFiee.CommonMsg + 100, // 146: accountFiee.AccountFiee.DeleteChatUser:output_type -> accountFiee.CommonMsg + 124, // 147: accountFiee.AccountFiee.GetChatUserDetail:output_type -> accountFiee.ChatUserData + 129, // 148: accountFiee.AccountFiee.GetChatUserList:output_type -> accountFiee.GetChatUserListResp + 117, // 149: accountFiee.AccountFiee.GetChatUserList2:output_type -> accountFiee.GetChatUserListResp2 + 108, // 150: accountFiee.AccountFiee.RegisterWaiter:output_type -> accountFiee.RegisterWaiterResp + 102, // 151: accountFiee.AccountFiee.CreateChatRecord:output_type -> accountFiee.CreateChatRecordResp + 100, // 152: accountFiee.AccountFiee.UpdateChatRecord:output_type -> accountFiee.CommonMsg + 100, // 153: accountFiee.AccountFiee.SaveChatRecord:output_type -> accountFiee.CommonMsg + 100, // 154: accountFiee.AccountFiee.DeleteChatRecord:output_type -> accountFiee.CommonMsg + 101, // 155: accountFiee.AccountFiee.GetChatRecordDetail:output_type -> accountFiee.ChatRecordData + 106, // 156: accountFiee.AccountFiee.GetChatRecordList:output_type -> accountFiee.GetChatRecordListResp + 110, // 157: accountFiee.AccountFiee.CreateChatMedia:output_type -> accountFiee.CreateChatMediaResp + 100, // 158: accountFiee.AccountFiee.UpdateChatMedia:output_type -> accountFiee.CommonMsg + 100, // 159: accountFiee.AccountFiee.SaveChatMedia:output_type -> accountFiee.CommonMsg + 100, // 160: accountFiee.AccountFiee.DeleteChatMedia:output_type -> accountFiee.CommonMsg + 109, // 161: accountFiee.AccountFiee.GetChatMediaDetail:output_type -> accountFiee.ChatMediaData + 114, // 162: accountFiee.AccountFiee.GetChatMediaList:output_type -> accountFiee.GetChatMediaListResp + 119, // 163: accountFiee.AccountFiee.CreateChatAutoReplyRuler:output_type -> accountFiee.CreateChatAutoReplyRulerResp + 100, // 164: accountFiee.AccountFiee.UpdateChatAutoReplyRuler:output_type -> accountFiee.CommonMsg + 100, // 165: accountFiee.AccountFiee.SaveChatAutoReplyRuler:output_type -> accountFiee.CommonMsg + 100, // 166: accountFiee.AccountFiee.DeleteChatAutoReplyRuler:output_type -> accountFiee.CommonMsg + 118, // 167: accountFiee.AccountFiee.GetChatAutoReplyRulerDetail:output_type -> accountFiee.ChatAutoReplyRulerData + 123, // 168: accountFiee.AccountFiee.GetChatAutoReplyRulerList:output_type -> accountFiee.GetChatAutoReplyRulerListResp + 103, // [103:169] is the sub-list for method output_type + 37, // [37:103] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name } -func init() { file_api_accountFiee_accountFiee_proto_init() } -func file_api_accountFiee_accountFiee_proto_init() { - if File_api_accountFiee_accountFiee_proto != nil { +func init() { file_accountFiee_proto_init() } +func file_accountFiee_proto_init() { + if File_accountFiee_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_api_accountFiee_accountFiee_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerifySliderStatusRequest); i { case 0: return &v.state @@ -9269,7 +12060,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerifySliderStatusResponse); i { case 0: return &v.state @@ -9281,7 +12072,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendNationMsgRequest); i { case 0: return &v.state @@ -9293,7 +12084,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerifySliderCaptchaResponse); i { case 0: return &v.state @@ -9305,7 +12096,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerifySliderCaptchaRequest); i { case 0: return &v.state @@ -9317,7 +12108,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateSliderCaptchaResponse); i { case 0: return &v.state @@ -9329,7 +12120,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateSliderCaptchaRequest); i { case 0: return &v.state @@ -9341,7 +12132,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckRealNameResponse); i { case 0: return &v.state @@ -9353,7 +12144,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckRealNameRequest); i { case 0: return &v.state @@ -9365,7 +12156,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserListResponse); i { case 0: return &v.state @@ -9377,7 +12168,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserListInfo); i { case 0: return &v.state @@ -9389,7 +12180,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserListRequest); i { case 0: return &v.state @@ -9401,7 +12192,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserInfoResponse); i { case 0: return &v.state @@ -9413,7 +12204,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RealNameResponse); i { case 0: return &v.state @@ -9425,7 +12216,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RealNameRequest); i { case 0: return &v.state @@ -9437,7 +12228,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegisterResponse); i { case 0: return &v.state @@ -9449,7 +12240,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UsersByJobNumRequest); i { case 0: return &v.state @@ -9461,7 +12252,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryPersonnelWithTheSameNameRequest); i { case 0: return &v.state @@ -9473,7 +12264,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryPersonnelWithTheSameNameResponse); i { case 0: return &v.state @@ -9485,7 +12276,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListV2Request); i { case 0: return &v.state @@ -9497,7 +12288,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendClockInWechatRequest); i { case 0: return &v.state @@ -9509,7 +12300,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MailAccountByNickNameRequest); i { case 0: return &v.state @@ -9521,7 +12312,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateMaiAccountRequest); i { case 0: return &v.state @@ -9533,7 +12324,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MaiAccountResponse); i { case 0: return &v.state @@ -9545,7 +12336,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FddCreateUserRequest); i { case 0: return &v.state @@ -9557,7 +12348,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxBoxUserInfoRequest); i { case 0: return &v.state @@ -9569,7 +12360,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxGetOpenIdByCodeRequest); i { case 0: return &v.state @@ -9581,7 +12372,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxGetOpenIdByCodeResponse); i { case 0: return &v.state @@ -9593,7 +12384,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxBoxTelNumByCodeResponse); i { case 0: return &v.state @@ -9605,7 +12396,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxBoxUserInfo); i { case 0: return &v.state @@ -9617,7 +12408,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FddInfo); i { case 0: return &v.state @@ -9629,7 +12420,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserInfo); i { case 0: return &v.state @@ -9641,7 +12432,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonRequest); i { case 0: return &v.state @@ -9653,7 +12444,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxAppRequest); i { case 0: return &v.state @@ -9665,7 +12456,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxAppResponse); i { case 0: return &v.state @@ -9677,7 +12468,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxUserUpdateRequest); i { case 0: return &v.state @@ -9689,7 +12480,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxUserOrCreateRequest); i { case 0: return &v.state @@ -9701,7 +12492,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WxUserResponse); i { case 0: return &v.state @@ -9713,7 +12504,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginLogsResponse); i { case 0: return &v.state @@ -9725,7 +12516,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginLog); i { case 0: return &v.state @@ -9737,7 +12528,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OnlineLogByIdRequest); i { case 0: return &v.state @@ -9749,7 +12540,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginInfosByUserIdRequest); i { case 0: return &v.state @@ -9761,7 +12552,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendNewTelNumMsgRequest); i { case 0: return &v.state @@ -9773,7 +12564,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserByTelRequest); i { case 0: return &v.state @@ -9785,7 +12576,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonResponse); i { case 0: return &v.state @@ -9797,7 +12588,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UsersByTelRequest); i { case 0: return &v.state @@ -9809,7 +12600,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListByIDsRequest); i { case 0: return &v.state @@ -9821,7 +12612,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMsgRequest); i { case 0: return &v.state @@ -9833,7 +12624,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendCustomMsgRequest); i { case 0: return &v.state @@ -9845,7 +12636,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckMsgRequest); i { case 0: return &v.state @@ -9857,7 +12648,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMsgStatusResponse); i { case 0: return &v.state @@ -9869,7 +12660,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveRequest); i { case 0: return &v.state @@ -9881,7 +12672,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WriteOffRequest); i { case 0: return &v.state @@ -9893,7 +12684,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WriteOffListRequest); i { case 0: return &v.state @@ -9905,7 +12696,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WriteOffApproveRequest); i { case 0: return &v.state @@ -9917,7 +12708,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WriteOffListResponse); i { case 0: return &v.state @@ -9929,7 +12720,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveResponse); i { case 0: return &v.state @@ -9941,7 +12732,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRequest); i { case 0: return &v.state @@ -9953,7 +12744,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Operator); i { case 0: return &v.state @@ -9965,7 +12756,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrainVideo); i { case 0: return &v.state @@ -9977,7 +12768,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateResponse); i { case 0: return &v.state @@ -9989,7 +12780,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivacyInfoRequest); i { case 0: return &v.state @@ -10001,7 +12792,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRequest); i { case 0: return &v.state @@ -10013,7 +12804,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListResponse); i { case 0: return &v.state @@ -10025,7 +12816,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InfoRequest); i { case 0: return &v.state @@ -10037,7 +12828,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InfoResponse); i { case 0: return &v.state @@ -10049,7 +12840,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DecryptJwtResponse); i { case 0: return &v.state @@ -10061,7 +12852,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DecryptJwtRequest); i { case 0: return &v.state @@ -10073,7 +12864,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckPwdRequest); i { case 0: return &v.state @@ -10085,7 +12876,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AuthenticationRequest); i { case 0: return &v.state @@ -10097,7 +12888,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestStatus); i { case 0: return &v.state @@ -10109,7 +12900,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegistRequest); i { case 0: return &v.state @@ -10121,7 +12912,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginRequest); i { case 0: return &v.state @@ -10133,7 +12924,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TokenInfo); i { case 0: return &v.state @@ -10145,7 +12936,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Extend); i { case 0: return &v.state @@ -10157,7 +12948,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Department); i { case 0: return &v.state @@ -10169,7 +12960,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AccountInfo); i { case 0: return &v.state @@ -10181,7 +12972,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserInfoV2); i { case 0: return &v.state @@ -10193,7 +12984,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshTokenRequest); i { case 0: return &v.state @@ -10205,7 +12996,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PositionUser); i { case 0: return &v.state @@ -10217,7 +13008,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobNumGetInfoRequest); i { case 0: return &v.state @@ -10229,7 +13020,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateClockDeviceRequest); i { case 0: return &v.state @@ -10241,7 +13032,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateClockDeviceRequest); i { case 0: return &v.state @@ -10253,7 +13044,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockDeviceResponse); i { case 0: return &v.state @@ -10265,7 +13056,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveClockDeviceRequest); i { case 0: return &v.state @@ -10277,7 +13068,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockDeviceListRequest); i { case 0: return &v.state @@ -10289,7 +13080,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockDeviceListResponse); i { case 0: return &v.state @@ -10301,7 +13092,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockUser); i { case 0: return &v.state @@ -10313,7 +13104,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockDeviceInfo); i { case 0: return &v.state @@ -10325,7 +13116,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockDeviceInfoResponse); i { case 0: return &v.state @@ -10337,7 +13128,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockUserRel); i { case 0: return &v.state @@ -10349,7 +13140,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockDeviceInfoRequest); i { case 0: return &v.state @@ -10361,7 +13152,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockBatchBindRequest); i { case 0: return &v.state @@ -10373,7 +13164,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockBatchListResponse); i { case 0: return &v.state @@ -10385,7 +13176,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockUserDeviceBatch); i { case 0: return &v.state @@ -10397,7 +13188,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockLogInfo); i { case 0: return &v.state @@ -10409,7 +13200,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockLogReq); i { case 0: return &v.state @@ -10421,7 +13212,7 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } - file_api_accountFiee_accountFiee_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_accountFiee_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClockLogListResponse); i { case 0: return &v.state @@ -10433,23 +13224,396 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } + file_accountFiee_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommonMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatRecordData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateChatRecordResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteChatRecordRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatRecordByIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatRecordListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatRecordListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegisterWaiterRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegisterWaiterResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatMediaData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateChatMediaResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteChatMediaRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatMediaByIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatMediaListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatMediaListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatUserListRequest2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatUser2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatUserListResp2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatAutoReplyRulerData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateChatAutoReplyRulerResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteChatAutoReplyRulerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatAutoReplyRulerByIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatAutoReplyRulerListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatAutoReplyRulerListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatUserData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateChatUserResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteChatUserRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatUserByIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatUserListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accountFiee_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetChatUserListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_api_accountFiee_accountFiee_proto_rawDesc, - NumEnums: 0, - NumMessages: 98, + RawDescriptor: file_accountFiee_proto_rawDesc, + NumEnums: 1, + NumMessages: 129, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_api_accountFiee_accountFiee_proto_goTypes, - DependencyIndexes: file_api_accountFiee_accountFiee_proto_depIdxs, - MessageInfos: file_api_accountFiee_accountFiee_proto_msgTypes, + GoTypes: file_accountFiee_proto_goTypes, + DependencyIndexes: file_accountFiee_proto_depIdxs, + EnumInfos: file_accountFiee_proto_enumTypes, + MessageInfos: file_accountFiee_proto_msgTypes, }.Build() - File_api_accountFiee_accountFiee_proto = out.File - file_api_accountFiee_accountFiee_proto_rawDesc = nil - file_api_accountFiee_accountFiee_proto_goTypes = nil - file_api_accountFiee_accountFiee_proto_depIdxs = nil + File_accountFiee_proto = out.File + file_accountFiee_proto_rawDesc = nil + file_accountFiee_proto_goTypes = nil + file_accountFiee_proto_depIdxs = nil } diff --git a/api/accountFiee/accountFiee.proto b/api/accountFiee/accountFiee.proto index bbbeb94..c95e091 100644 --- a/api/accountFiee/accountFiee.proto +++ b/api/accountFiee/accountFiee.proto @@ -18,9 +18,9 @@ syntax = "proto3"; package accountFiee; import "github.com/mwitkow/go-proto-validators@v0.3.2/validator.proto"; - option go_package = "./;accountFiee"; +//protoc -I . -I C:\Users\lenovo\go\src --go_out=. --go-triple_out=. ./accountFiee.proto service AccountFiee { rpc Login (LoginRequest) returns (TokenInfo) {} rpc RefreshToken (RefreshTokenRequest) returns (TokenInfo) {} //刷新token @@ -62,6 +62,37 @@ service AccountFiee { rpc VerifySliderCaptcha(VerifySliderCaptchaRequest) returns (VerifySliderCaptchaResponse) {}// 验证滑块验证码位置 rpc SendNationMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} //发送境外国际短信验证码 --艺术商城 rpc VerifySliderStatus(VerifySliderStatusRequest) returns (VerifySliderStatusResponse) {}// 验证滑块验证码状态 + + // submit info + rpc SaveSubmitInfo(SubmitInfoRequest) returns (CommonResponse); + + //-----------------------------客服聊天系统-------------------------------- + rpc CreateChatUser ( ChatUserData )returns( CreateChatUserResp ){} //创建聊天用户 + rpc UpdateChatUser ( ChatUserData )returns( CommonMsg ){} //更新聊天用户 + rpc SaveChatUser ( ChatUserData )returns( CommonMsg ){} //覆盖聊天用户 + rpc DeleteChatUser ( DeleteChatUserRequest )returns( CommonMsg ){} //删除聊天用户 + rpc GetChatUserDetail ( GetChatUserByIdRequest )returns( ChatUserData ){} //查询聊天用户详情 + rpc GetChatUserList ( GetChatUserListRequest )returns( GetChatUserListResp ){} //查询聊天用户列表 + rpc GetChatUserList2 ( GetChatUserListRequest2 )returns( GetChatUserListResp2 ){} //查询聊天用户列表2 + rpc RegisterWaiter ( RegisterWaiterRequest )returns( RegisterWaiterResp ){} //注册客服账号 + rpc CreateChatRecord ( ChatRecordData )returns( CreateChatRecordResp ){} //创建ChatRecord + rpc UpdateChatRecord ( ChatRecordData )returns( CommonMsg ){} //更新ChatRecord + rpc SaveChatRecord ( ChatRecordData )returns( CommonMsg ){} //覆盖ChatRecord + rpc DeleteChatRecord ( DeleteChatRecordRequest )returns( CommonMsg ){} //删除ChatRecord + rpc GetChatRecordDetail ( GetChatRecordByIdRequest )returns( ChatRecordData ){} //查询ChatRecord详情 + rpc GetChatRecordList ( GetChatRecordListRequest )returns( GetChatRecordListResp ){} //查询ChatRecord列表 + rpc CreateChatMedia ( ChatMediaData )returns( CreateChatMediaResp ){} //创建ChatMedia + rpc UpdateChatMedia ( ChatMediaData )returns( CommonMsg ){} //更新ChatMedia + rpc SaveChatMedia ( ChatMediaData )returns( CommonMsg ){} //覆盖ChatMedia + rpc DeleteChatMedia ( DeleteChatMediaRequest )returns( CommonMsg ){} //删除ChatMedia + rpc GetChatMediaDetail ( GetChatMediaByIdRequest )returns( ChatMediaData ){} //查询ChatMedia详情 + rpc GetChatMediaList ( GetChatMediaListRequest )returns( GetChatMediaListResp ){} //查询ChatMedia列表 + rpc CreateChatAutoReplyRuler ( ChatAutoReplyRulerData )returns( CreateChatAutoReplyRulerResp ){} //创建自动回复规则 + rpc UpdateChatAutoReplyRuler ( ChatAutoReplyRulerData )returns( CommonMsg ){} //更新自动回复规则 + rpc SaveChatAutoReplyRuler ( ChatAutoReplyRulerData )returns( CommonMsg ){} //覆盖自动回复规则 + rpc DeleteChatAutoReplyRuler ( DeleteChatAutoReplyRulerRequest )returns( CommonMsg ){} //删除自动回复规则 + rpc GetChatAutoReplyRulerDetail ( GetChatAutoReplyRulerByIdRequest )returns( ChatAutoReplyRulerData ){} //查询自动回复规则详情 + rpc GetChatAutoReplyRulerList ( GetChatAutoReplyRulerListRequest )returns( GetChatAutoReplyRulerListResp ){} //查询自动回复规则列表 } message VerifySliderStatusRequest { @@ -817,4 +848,207 @@ message ClockLogReq{ message ClockLogListResponse{ repeated ClockLogInfo data =1; uint64 count = 2; +} +message SubmitInfoRequest{ + string firstName = 1; + string lastName = 2; + string email = 3; + string company = 4; + string phone = 5; +} + +message CommonMsg{ + string msg = 1; +} +enum MsgType{ + UnknownMsgType = 0 ;//未知类型 + TextMsgType = 1 ;//文本 + ImageMsgType = 2 ;//图片 + AudioMsgType = 3 ;//音频 + VideoMsgType = 4 ;//视频 + FileType = 5 ;//文件 +} +message ChatRecordData{ + int64 ID=1; + string createdAt=2; + string updatedAt=3; + int64 deletedAt=4; + string sessionId = 5; //会话UID + int64 userId = 6; //用户ID + string name = 7; //名称 + string avatar = 8; //头像 + MsgType msgType = 9; //消息类型 + string content = 10; //消息内容 + repeated ChatMediaData medias = 11; //媒体 + int32 waiterRead=12;//客服是否已读 1=已读 2=未读 (被任意客服读取过均为已读) + int64 localStamp = 13; //本地时间戳 用户端的消息唯一值,用于用户本地的一些逻辑处理 + string domain =14;//域 +} +message CreateChatRecordResp{ + ChatRecordData data=1; + string msg=2; +} +message DeleteChatRecordRequest{ + int64 id=1; //二选一,数据id + repeated int64 ids=2;//二选一,数据id列表 +} +message GetChatRecordByIdRequest{ + int64 id=1; //数据id +} +message GetChatRecordListRequest{ + ChatRecordData query =1; + int64 page=2; + int64 pageSize=3; + string where=4; + string order=5; +} +message GetChatRecordListResp{ + repeated ChatRecordData list=1; + int64 page=2; + int64 pageSize=3; + int64 Total=4; +} + +message RegisterWaiterRequest{ + string origin=1; //来源 + int64 originId=2; //来源对应的用户ID + string nickName=3; //名称 + string avatar=4; //头像 + string telNum=5; //电话 + string invitationCode=6; //邀请码 + string account=7; +} +message RegisterWaiterResp{ + int64 userId=1; +} + +message ChatMediaData{ + int64 ID=1; + string createdAt=2; + string updatedAt=3; + int64 deletedAt=4; + string url = 5; //url + string md5 = 6; //md5值 + string size = 7; //尺寸 + string ext = 8; //后缀格式 + string convText=9; //语音转文字内容 + int64 duration=10;//时长 +} +message CreateChatMediaResp{ + ChatMediaData data=1; + string msg=2; +} +message DeleteChatMediaRequest{ + int64 id=1; //二选一,数据id + repeated int64 ids=2;//二选一,数据id列表 +} +message GetChatMediaByIdRequest{ + int64 id=1; //数据id +} +message GetChatMediaListRequest{ + ChatMediaData query =1; + int64 page=2; + int64 pageSize=3; + string where=4; + string order=5; +} +message GetChatMediaListResp{ + repeated ChatMediaData list=1; + int64 page=2; + int64 pageSize=3; + int64 Total=4; +} +message GetChatUserListRequest2{ + int64 page=1; + int64 pageSize=2; + string where=3; + string name=4; + repeated int64 userIdIn=5; +} +message ChatUser2{ + int64 userId=1; + string name=2; + string avatar=3; + string origin=4; + string originId=5; +} +message GetChatUserListResp2{ + repeated ChatUser2 list=1; + int64 page=2; + int64 pageSize=3; + int64 Total=4; + string where=5; +} +message ChatAutoReplyRulerData{ + int64 ID = 1; // + string createdAt = 2; // + string updatedAt = 3; // + int64 deletedAt = 4; // + string title = 5; //标题 + string ruler = 6; //规则内容 + int32 rulerStatus = 7; //规则状态: 1=启用 2=禁用 + +} + +message CreateChatAutoReplyRulerResp{ + ChatAutoReplyRulerData data=1; + string msg=2; +} +message DeleteChatAutoReplyRulerRequest{ + int64 id=1; //二选一,数据id + repeated int64 ids=2;//二选一,数据id列表 +} +message GetChatAutoReplyRulerByIdRequest{ + int64 id=1; //数据id +} +message GetChatAutoReplyRulerListRequest{ + ChatAutoReplyRulerData query =1; + int64 page=2; + int64 pageSize=3; + string where=4; + string order=5; +} +message GetChatAutoReplyRulerListResp{ + repeated ChatAutoReplyRulerData list=1; + int64 page=2; + int64 pageSize=3; + int64 Total=4; +} +message ChatUserData{ + int64 ID = 1; // + string createdAt = 2; // + string updatedAt = 3; // + int64 deletedAt = 4; // + string nickName = 5; //昵称 + string account = 6; //账号 + int32 role = 7; //聊天角色 1=用户 2=客服 + string origin = 8; //数据来源 + int64 originId = 9; //数据来源对应的用户ID + string avatar = 10; //头像 + +} + +message CreateChatUserResp{ + ChatUserData data=1; + string msg=2; +} +message DeleteChatUserRequest{ + int64 id=1; //二选一,数据id + repeated int64 ids=2;//二选一,数据id列表 +} +message GetChatUserByIdRequest{ + int64 id=1; //数据id +} +message GetChatUserListRequest{ + ChatUserData query =1; + int64 page=2; + int64 pageSize=3; + string where=4; + string order=5; +} +message GetChatUserListResp{ + repeated ChatUserData list=1; + int64 page=2; + int64 pageSize=3; + int64 Total=4; } \ No newline at end of file diff --git a/api/accountFiee/accountFiee.validator.pb.go b/api/accountFiee/accountFiee.validator.pb.go index 412caa8..f0a7cd9 100644 --- a/api/accountFiee/accountFiee.validator.pb.go +++ b/api/accountFiee/accountFiee.validator.pb.go @@ -522,3 +522,6 @@ func (this *ClockLogListResponse) Validate() error { } return nil } +func (this *SubmitInfoRequest) Validate() error { + return nil +} diff --git a/api/accountFiee/accountFiee_triple.pb.go b/api/accountFiee/accountFiee_triple.pb.go index 183a3f2..4174a35 100644 --- a/api/accountFiee/accountFiee_triple.pb.go +++ b/api/accountFiee/accountFiee_triple.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go-triple. DO NOT EDIT. // versions: // - protoc-gen-go-triple v1.0.8 -// - protoc v4.24.0--rc1 -// source: api/accountFiee/accountFiee.proto +// - protoc v4.22.0--rc2 +// source: accountFiee.proto package accountFiee @@ -35,7 +35,7 @@ type AccountFieeClient interface { OnlineLog(ctx context.Context, in *LoginInfosByUserIdRequest, opts ...grpc_go.CallOption) (*LoginLogsResponse, common.ErrorWithAttachment) OnlineLogById(ctx context.Context, in *OnlineLogByIdRequest, opts ...grpc_go.CallOption) (*LoginLog, common.ErrorWithAttachment) CheckPwd(ctx context.Context, in *CheckPwdRequest, opts ...grpc_go.CallOption) (*UpdateResponse, common.ErrorWithAttachment) - // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} + // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} SendMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) SendCustomMsg(ctx context.Context, in *SendCustomMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) SendExCustomMsg(ctx context.Context, in *SendCustomMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) @@ -68,6 +68,35 @@ type AccountFieeClient interface { VerifySliderCaptcha(ctx context.Context, in *VerifySliderCaptchaRequest, opts ...grpc_go.CallOption) (*VerifySliderCaptchaResponse, common.ErrorWithAttachment) SendNationMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) VerifySliderStatus(ctx context.Context, in *VerifySliderStatusRequest, opts ...grpc_go.CallOption) (*VerifySliderStatusResponse, common.ErrorWithAttachment) + // submit info + SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + // -----------------------------客服聊天系统-------------------------------- + CreateChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CreateChatUserResp, common.ErrorWithAttachment) + UpdateChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + SaveChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + DeleteChatUser(ctx context.Context, in *DeleteChatUserRequest, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + GetChatUserDetail(ctx context.Context, in *GetChatUserByIdRequest, opts ...grpc_go.CallOption) (*ChatUserData, common.ErrorWithAttachment) + GetChatUserList(ctx context.Context, in *GetChatUserListRequest, opts ...grpc_go.CallOption) (*GetChatUserListResp, common.ErrorWithAttachment) + GetChatUserList2(ctx context.Context, in *GetChatUserListRequest2, opts ...grpc_go.CallOption) (*GetChatUserListResp2, common.ErrorWithAttachment) + RegisterWaiter(ctx context.Context, in *RegisterWaiterRequest, opts ...grpc_go.CallOption) (*RegisterWaiterResp, common.ErrorWithAttachment) + CreateChatRecord(ctx context.Context, in *ChatRecordData, opts ...grpc_go.CallOption) (*CreateChatRecordResp, common.ErrorWithAttachment) + UpdateChatRecord(ctx context.Context, in *ChatRecordData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + SaveChatRecord(ctx context.Context, in *ChatRecordData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + DeleteChatRecord(ctx context.Context, in *DeleteChatRecordRequest, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + GetChatRecordDetail(ctx context.Context, in *GetChatRecordByIdRequest, opts ...grpc_go.CallOption) (*ChatRecordData, common.ErrorWithAttachment) + GetChatRecordList(ctx context.Context, in *GetChatRecordListRequest, opts ...grpc_go.CallOption) (*GetChatRecordListResp, common.ErrorWithAttachment) + CreateChatMedia(ctx context.Context, in *ChatMediaData, opts ...grpc_go.CallOption) (*CreateChatMediaResp, common.ErrorWithAttachment) + UpdateChatMedia(ctx context.Context, in *ChatMediaData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + SaveChatMedia(ctx context.Context, in *ChatMediaData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + DeleteChatMedia(ctx context.Context, in *DeleteChatMediaRequest, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + GetChatMediaDetail(ctx context.Context, in *GetChatMediaByIdRequest, opts ...grpc_go.CallOption) (*ChatMediaData, common.ErrorWithAttachment) + GetChatMediaList(ctx context.Context, in *GetChatMediaListRequest, opts ...grpc_go.CallOption) (*GetChatMediaListResp, common.ErrorWithAttachment) + CreateChatAutoReplyRuler(ctx context.Context, in *ChatAutoReplyRulerData, opts ...grpc_go.CallOption) (*CreateChatAutoReplyRulerResp, common.ErrorWithAttachment) + UpdateChatAutoReplyRuler(ctx context.Context, in *ChatAutoReplyRulerData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + SaveChatAutoReplyRuler(ctx context.Context, in *ChatAutoReplyRulerData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + DeleteChatAutoReplyRuler(ctx context.Context, in *DeleteChatAutoReplyRulerRequest, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) + GetChatAutoReplyRulerDetail(ctx context.Context, in *GetChatAutoReplyRulerByIdRequest, opts ...grpc_go.CallOption) (*ChatAutoReplyRulerData, common.ErrorWithAttachment) + GetChatAutoReplyRulerList(ctx context.Context, in *GetChatAutoReplyRulerListRequest, opts ...grpc_go.CallOption) (*GetChatAutoReplyRulerListResp, common.ErrorWithAttachment) } type accountFieeClient struct { @@ -114,6 +143,33 @@ type AccountFieeClientImpl struct { VerifySliderCaptcha func(ctx context.Context, in *VerifySliderCaptchaRequest) (*VerifySliderCaptchaResponse, error) SendNationMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error) VerifySliderStatus func(ctx context.Context, in *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) + SaveSubmitInfo func(ctx context.Context, in *SubmitInfoRequest) (*CommonResponse, error) + CreateChatUser func(ctx context.Context, in *ChatUserData) (*CreateChatUserResp, error) + UpdateChatUser func(ctx context.Context, in *ChatUserData) (*CommonMsg, error) + SaveChatUser func(ctx context.Context, in *ChatUserData) (*CommonMsg, error) + DeleteChatUser func(ctx context.Context, in *DeleteChatUserRequest) (*CommonMsg, error) + GetChatUserDetail func(ctx context.Context, in *GetChatUserByIdRequest) (*ChatUserData, error) + GetChatUserList func(ctx context.Context, in *GetChatUserListRequest) (*GetChatUserListResp, error) + GetChatUserList2 func(ctx context.Context, in *GetChatUserListRequest2) (*GetChatUserListResp2, error) + RegisterWaiter func(ctx context.Context, in *RegisterWaiterRequest) (*RegisterWaiterResp, error) + CreateChatRecord func(ctx context.Context, in *ChatRecordData) (*CreateChatRecordResp, error) + UpdateChatRecord func(ctx context.Context, in *ChatRecordData) (*CommonMsg, error) + SaveChatRecord func(ctx context.Context, in *ChatRecordData) (*CommonMsg, error) + DeleteChatRecord func(ctx context.Context, in *DeleteChatRecordRequest) (*CommonMsg, error) + GetChatRecordDetail func(ctx context.Context, in *GetChatRecordByIdRequest) (*ChatRecordData, error) + GetChatRecordList func(ctx context.Context, in *GetChatRecordListRequest) (*GetChatRecordListResp, error) + CreateChatMedia func(ctx context.Context, in *ChatMediaData) (*CreateChatMediaResp, error) + UpdateChatMedia func(ctx context.Context, in *ChatMediaData) (*CommonMsg, error) + SaveChatMedia func(ctx context.Context, in *ChatMediaData) (*CommonMsg, error) + DeleteChatMedia func(ctx context.Context, in *DeleteChatMediaRequest) (*CommonMsg, error) + GetChatMediaDetail func(ctx context.Context, in *GetChatMediaByIdRequest) (*ChatMediaData, error) + GetChatMediaList func(ctx context.Context, in *GetChatMediaListRequest) (*GetChatMediaListResp, error) + CreateChatAutoReplyRuler func(ctx context.Context, in *ChatAutoReplyRulerData) (*CreateChatAutoReplyRulerResp, error) + UpdateChatAutoReplyRuler func(ctx context.Context, in *ChatAutoReplyRulerData) (*CommonMsg, error) + SaveChatAutoReplyRuler func(ctx context.Context, in *ChatAutoReplyRulerData) (*CommonMsg, error) + DeleteChatAutoReplyRuler func(ctx context.Context, in *DeleteChatAutoReplyRulerRequest) (*CommonMsg, error) + GetChatAutoReplyRulerDetail func(ctx context.Context, in *GetChatAutoReplyRulerByIdRequest) (*ChatAutoReplyRulerData, error) + GetChatAutoReplyRulerList func(ctx context.Context, in *GetChatAutoReplyRulerListRequest) (*GetChatAutoReplyRulerListResp, error) } func (c *AccountFieeClientImpl) GetDubboStub(cc *triple.TripleConn) AccountFieeClient { @@ -362,6 +418,168 @@ func (c *accountFieeClient) VerifySliderStatus(ctx context.Context, in *VerifySl return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/VerifySliderStatus", in, out) } +func (c *accountFieeClient) SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SaveSubmitInfo", in, out) +} + +func (c *accountFieeClient) CreateChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CreateChatUserResp, common.ErrorWithAttachment) { + out := new(CreateChatUserResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateChatUser", in, out) +} + +func (c *accountFieeClient) UpdateChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateChatUser", in, out) +} + +func (c *accountFieeClient) SaveChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SaveChatUser", in, out) +} + +func (c *accountFieeClient) DeleteChatUser(ctx context.Context, in *DeleteChatUserRequest, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteChatUser", in, out) +} + +func (c *accountFieeClient) GetChatUserDetail(ctx context.Context, in *GetChatUserByIdRequest, opts ...grpc_go.CallOption) (*ChatUserData, common.ErrorWithAttachment) { + out := new(ChatUserData) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatUserDetail", in, out) +} + +func (c *accountFieeClient) GetChatUserList(ctx context.Context, in *GetChatUserListRequest, opts ...grpc_go.CallOption) (*GetChatUserListResp, common.ErrorWithAttachment) { + out := new(GetChatUserListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatUserList", in, out) +} + +func (c *accountFieeClient) GetChatUserList2(ctx context.Context, in *GetChatUserListRequest2, opts ...grpc_go.CallOption) (*GetChatUserListResp2, common.ErrorWithAttachment) { + out := new(GetChatUserListResp2) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatUserList2", in, out) +} + +func (c *accountFieeClient) RegisterWaiter(ctx context.Context, in *RegisterWaiterRequest, opts ...grpc_go.CallOption) (*RegisterWaiterResp, common.ErrorWithAttachment) { + out := new(RegisterWaiterResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/RegisterWaiter", in, out) +} + +func (c *accountFieeClient) CreateChatRecord(ctx context.Context, in *ChatRecordData, opts ...grpc_go.CallOption) (*CreateChatRecordResp, common.ErrorWithAttachment) { + out := new(CreateChatRecordResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateChatRecord", in, out) +} + +func (c *accountFieeClient) UpdateChatRecord(ctx context.Context, in *ChatRecordData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateChatRecord", in, out) +} + +func (c *accountFieeClient) SaveChatRecord(ctx context.Context, in *ChatRecordData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SaveChatRecord", in, out) +} + +func (c *accountFieeClient) DeleteChatRecord(ctx context.Context, in *DeleteChatRecordRequest, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteChatRecord", in, out) +} + +func (c *accountFieeClient) GetChatRecordDetail(ctx context.Context, in *GetChatRecordByIdRequest, opts ...grpc_go.CallOption) (*ChatRecordData, common.ErrorWithAttachment) { + out := new(ChatRecordData) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatRecordDetail", in, out) +} + +func (c *accountFieeClient) GetChatRecordList(ctx context.Context, in *GetChatRecordListRequest, opts ...grpc_go.CallOption) (*GetChatRecordListResp, common.ErrorWithAttachment) { + out := new(GetChatRecordListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatRecordList", in, out) +} + +func (c *accountFieeClient) CreateChatMedia(ctx context.Context, in *ChatMediaData, opts ...grpc_go.CallOption) (*CreateChatMediaResp, common.ErrorWithAttachment) { + out := new(CreateChatMediaResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateChatMedia", in, out) +} + +func (c *accountFieeClient) UpdateChatMedia(ctx context.Context, in *ChatMediaData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateChatMedia", in, out) +} + +func (c *accountFieeClient) SaveChatMedia(ctx context.Context, in *ChatMediaData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SaveChatMedia", in, out) +} + +func (c *accountFieeClient) DeleteChatMedia(ctx context.Context, in *DeleteChatMediaRequest, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteChatMedia", in, out) +} + +func (c *accountFieeClient) GetChatMediaDetail(ctx context.Context, in *GetChatMediaByIdRequest, opts ...grpc_go.CallOption) (*ChatMediaData, common.ErrorWithAttachment) { + out := new(ChatMediaData) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatMediaDetail", in, out) +} + +func (c *accountFieeClient) GetChatMediaList(ctx context.Context, in *GetChatMediaListRequest, opts ...grpc_go.CallOption) (*GetChatMediaListResp, common.ErrorWithAttachment) { + out := new(GetChatMediaListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatMediaList", in, out) +} + +func (c *accountFieeClient) CreateChatAutoReplyRuler(ctx context.Context, in *ChatAutoReplyRulerData, opts ...grpc_go.CallOption) (*CreateChatAutoReplyRulerResp, common.ErrorWithAttachment) { + out := new(CreateChatAutoReplyRulerResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateChatAutoReplyRuler", in, out) +} + +func (c *accountFieeClient) UpdateChatAutoReplyRuler(ctx context.Context, in *ChatAutoReplyRulerData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateChatAutoReplyRuler", in, out) +} + +func (c *accountFieeClient) SaveChatAutoReplyRuler(ctx context.Context, in *ChatAutoReplyRulerData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SaveChatAutoReplyRuler", in, out) +} + +func (c *accountFieeClient) DeleteChatAutoReplyRuler(ctx context.Context, in *DeleteChatAutoReplyRulerRequest, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) { + out := new(CommonMsg) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteChatAutoReplyRuler", in, out) +} + +func (c *accountFieeClient) GetChatAutoReplyRulerDetail(ctx context.Context, in *GetChatAutoReplyRulerByIdRequest, opts ...grpc_go.CallOption) (*ChatAutoReplyRulerData, common.ErrorWithAttachment) { + out := new(ChatAutoReplyRulerData) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatAutoReplyRulerDetail", in, out) +} + +func (c *accountFieeClient) GetChatAutoReplyRulerList(ctx context.Context, in *GetChatAutoReplyRulerListRequest, opts ...grpc_go.CallOption) (*GetChatAutoReplyRulerListResp, common.ErrorWithAttachment) { + out := new(GetChatAutoReplyRulerListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetChatAutoReplyRulerList", in, out) +} + // AccountFieeServer is the server API for AccountFiee service. // All implementations must embed UnimplementedAccountFieeServer // for forward compatibility @@ -373,7 +591,7 @@ type AccountFieeServer interface { OnlineLog(context.Context, *LoginInfosByUserIdRequest) (*LoginLogsResponse, error) OnlineLogById(context.Context, *OnlineLogByIdRequest) (*LoginLog, error) CheckPwd(context.Context, *CheckPwdRequest) (*UpdateResponse, error) - // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} + // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} SendMsg(context.Context, *SendMsgRequest) (*SendMsgStatusResponse, error) SendCustomMsg(context.Context, *SendCustomMsgRequest) (*SendMsgStatusResponse, error) SendExCustomMsg(context.Context, *SendCustomMsgRequest) (*SendMsgStatusResponse, error) @@ -406,6 +624,35 @@ type AccountFieeServer interface { VerifySliderCaptcha(context.Context, *VerifySliderCaptchaRequest) (*VerifySliderCaptchaResponse, error) SendNationMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) VerifySliderStatus(context.Context, *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) + // submit info + SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error) + // -----------------------------客服聊天系统-------------------------------- + CreateChatUser(context.Context, *ChatUserData) (*CreateChatUserResp, error) + UpdateChatUser(context.Context, *ChatUserData) (*CommonMsg, error) + SaveChatUser(context.Context, *ChatUserData) (*CommonMsg, error) + DeleteChatUser(context.Context, *DeleteChatUserRequest) (*CommonMsg, error) + GetChatUserDetail(context.Context, *GetChatUserByIdRequest) (*ChatUserData, error) + GetChatUserList(context.Context, *GetChatUserListRequest) (*GetChatUserListResp, error) + GetChatUserList2(context.Context, *GetChatUserListRequest2) (*GetChatUserListResp2, error) + RegisterWaiter(context.Context, *RegisterWaiterRequest) (*RegisterWaiterResp, error) + CreateChatRecord(context.Context, *ChatRecordData) (*CreateChatRecordResp, error) + UpdateChatRecord(context.Context, *ChatRecordData) (*CommonMsg, error) + SaveChatRecord(context.Context, *ChatRecordData) (*CommonMsg, error) + DeleteChatRecord(context.Context, *DeleteChatRecordRequest) (*CommonMsg, error) + GetChatRecordDetail(context.Context, *GetChatRecordByIdRequest) (*ChatRecordData, error) + GetChatRecordList(context.Context, *GetChatRecordListRequest) (*GetChatRecordListResp, error) + CreateChatMedia(context.Context, *ChatMediaData) (*CreateChatMediaResp, error) + UpdateChatMedia(context.Context, *ChatMediaData) (*CommonMsg, error) + SaveChatMedia(context.Context, *ChatMediaData) (*CommonMsg, error) + DeleteChatMedia(context.Context, *DeleteChatMediaRequest) (*CommonMsg, error) + GetChatMediaDetail(context.Context, *GetChatMediaByIdRequest) (*ChatMediaData, error) + GetChatMediaList(context.Context, *GetChatMediaListRequest) (*GetChatMediaListResp, error) + CreateChatAutoReplyRuler(context.Context, *ChatAutoReplyRulerData) (*CreateChatAutoReplyRulerResp, error) + UpdateChatAutoReplyRuler(context.Context, *ChatAutoReplyRulerData) (*CommonMsg, error) + SaveChatAutoReplyRuler(context.Context, *ChatAutoReplyRulerData) (*CommonMsg, error) + DeleteChatAutoReplyRuler(context.Context, *DeleteChatAutoReplyRulerRequest) (*CommonMsg, error) + GetChatAutoReplyRulerDetail(context.Context, *GetChatAutoReplyRulerByIdRequest) (*ChatAutoReplyRulerData, error) + GetChatAutoReplyRulerList(context.Context, *GetChatAutoReplyRulerListRequest) (*GetChatAutoReplyRulerListResp, error) mustEmbedUnimplementedAccountFieeServer() } @@ -531,6 +778,87 @@ func (UnimplementedAccountFieeServer) SendNationMsg(context.Context, *SendNation func (UnimplementedAccountFieeServer) VerifySliderStatus(context.Context, *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method VerifySliderStatus not implemented") } +func (UnimplementedAccountFieeServer) SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveSubmitInfo not implemented") +} +func (UnimplementedAccountFieeServer) CreateChatUser(context.Context, *ChatUserData) (*CreateChatUserResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateChatUser not implemented") +} +func (UnimplementedAccountFieeServer) UpdateChatUser(context.Context, *ChatUserData) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateChatUser not implemented") +} +func (UnimplementedAccountFieeServer) SaveChatUser(context.Context, *ChatUserData) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveChatUser not implemented") +} +func (UnimplementedAccountFieeServer) DeleteChatUser(context.Context, *DeleteChatUserRequest) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteChatUser not implemented") +} +func (UnimplementedAccountFieeServer) GetChatUserDetail(context.Context, *GetChatUserByIdRequest) (*ChatUserData, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatUserDetail not implemented") +} +func (UnimplementedAccountFieeServer) GetChatUserList(context.Context, *GetChatUserListRequest) (*GetChatUserListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatUserList not implemented") +} +func (UnimplementedAccountFieeServer) GetChatUserList2(context.Context, *GetChatUserListRequest2) (*GetChatUserListResp2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatUserList2 not implemented") +} +func (UnimplementedAccountFieeServer) RegisterWaiter(context.Context, *RegisterWaiterRequest) (*RegisterWaiterResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterWaiter not implemented") +} +func (UnimplementedAccountFieeServer) CreateChatRecord(context.Context, *ChatRecordData) (*CreateChatRecordResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateChatRecord not implemented") +} +func (UnimplementedAccountFieeServer) UpdateChatRecord(context.Context, *ChatRecordData) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateChatRecord not implemented") +} +func (UnimplementedAccountFieeServer) SaveChatRecord(context.Context, *ChatRecordData) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveChatRecord not implemented") +} +func (UnimplementedAccountFieeServer) DeleteChatRecord(context.Context, *DeleteChatRecordRequest) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteChatRecord not implemented") +} +func (UnimplementedAccountFieeServer) GetChatRecordDetail(context.Context, *GetChatRecordByIdRequest) (*ChatRecordData, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatRecordDetail not implemented") +} +func (UnimplementedAccountFieeServer) GetChatRecordList(context.Context, *GetChatRecordListRequest) (*GetChatRecordListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatRecordList not implemented") +} +func (UnimplementedAccountFieeServer) CreateChatMedia(context.Context, *ChatMediaData) (*CreateChatMediaResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateChatMedia not implemented") +} +func (UnimplementedAccountFieeServer) UpdateChatMedia(context.Context, *ChatMediaData) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateChatMedia not implemented") +} +func (UnimplementedAccountFieeServer) SaveChatMedia(context.Context, *ChatMediaData) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveChatMedia not implemented") +} +func (UnimplementedAccountFieeServer) DeleteChatMedia(context.Context, *DeleteChatMediaRequest) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteChatMedia not implemented") +} +func (UnimplementedAccountFieeServer) GetChatMediaDetail(context.Context, *GetChatMediaByIdRequest) (*ChatMediaData, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatMediaDetail not implemented") +} +func (UnimplementedAccountFieeServer) GetChatMediaList(context.Context, *GetChatMediaListRequest) (*GetChatMediaListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatMediaList not implemented") +} +func (UnimplementedAccountFieeServer) CreateChatAutoReplyRuler(context.Context, *ChatAutoReplyRulerData) (*CreateChatAutoReplyRulerResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateChatAutoReplyRuler not implemented") +} +func (UnimplementedAccountFieeServer) UpdateChatAutoReplyRuler(context.Context, *ChatAutoReplyRulerData) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateChatAutoReplyRuler not implemented") +} +func (UnimplementedAccountFieeServer) SaveChatAutoReplyRuler(context.Context, *ChatAutoReplyRulerData) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveChatAutoReplyRuler not implemented") +} +func (UnimplementedAccountFieeServer) DeleteChatAutoReplyRuler(context.Context, *DeleteChatAutoReplyRulerRequest) (*CommonMsg, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteChatAutoReplyRuler not implemented") +} +func (UnimplementedAccountFieeServer) GetChatAutoReplyRulerDetail(context.Context, *GetChatAutoReplyRulerByIdRequest) (*ChatAutoReplyRulerData, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatAutoReplyRulerDetail not implemented") +} +func (UnimplementedAccountFieeServer) GetChatAutoReplyRulerList(context.Context, *GetChatAutoReplyRulerListRequest) (*GetChatAutoReplyRulerListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChatAutoReplyRulerList not implemented") +} func (s *UnimplementedAccountFieeServer) XXX_SetProxyImpl(impl protocol.Invoker) { s.proxyImpl = impl } @@ -1690,6 +2018,789 @@ func _AccountFiee_VerifySliderStatus_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _AccountFiee_SaveSubmitInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(SubmitInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SaveSubmitInfo", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_CreateChatUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatUserData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateChatUser", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_UpdateChatUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatUserData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateChatUser", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_SaveChatUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatUserData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SaveChatUser", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_DeleteChatUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteChatUserRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeleteChatUser", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatUserDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatUserByIdRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatUserDetail", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatUserList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatUserListRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatUserList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatUserList2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatUserListRequest2) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatUserList2", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_RegisterWaiter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(RegisterWaiterRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("RegisterWaiter", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_CreateChatRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatRecordData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateChatRecord", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_UpdateChatRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatRecordData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateChatRecord", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_SaveChatRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatRecordData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SaveChatRecord", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_DeleteChatRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteChatRecordRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeleteChatRecord", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatRecordDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatRecordByIdRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatRecordDetail", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatRecordList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatRecordListRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatRecordList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_CreateChatMedia_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatMediaData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateChatMedia", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_UpdateChatMedia_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatMediaData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateChatMedia", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_SaveChatMedia_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatMediaData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SaveChatMedia", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_DeleteChatMedia_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteChatMediaRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeleteChatMedia", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatMediaDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatMediaByIdRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatMediaDetail", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatMediaList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatMediaListRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatMediaList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_CreateChatAutoReplyRuler_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatAutoReplyRulerData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateChatAutoReplyRuler", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_UpdateChatAutoReplyRuler_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatAutoReplyRulerData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateChatAutoReplyRuler", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_SaveChatAutoReplyRuler_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ChatAutoReplyRulerData) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SaveChatAutoReplyRuler", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_DeleteChatAutoReplyRuler_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteChatAutoReplyRulerRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeleteChatAutoReplyRuler", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatAutoReplyRulerDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatAutoReplyRulerByIdRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatAutoReplyRulerDetail", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _AccountFiee_GetChatAutoReplyRulerList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChatAutoReplyRulerListRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetChatAutoReplyRulerList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + // AccountFiee_ServiceDesc is the grpc_go.ServiceDesc for AccountFiee service. // It's only intended for direct use with grpc_go.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1853,7 +2964,115 @@ var AccountFiee_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "VerifySliderStatus", Handler: _AccountFiee_VerifySliderStatus_Handler, }, + { + MethodName: "SaveSubmitInfo", + Handler: _AccountFiee_SaveSubmitInfo_Handler, + }, + { + MethodName: "CreateChatUser", + Handler: _AccountFiee_CreateChatUser_Handler, + }, + { + MethodName: "UpdateChatUser", + Handler: _AccountFiee_UpdateChatUser_Handler, + }, + { + MethodName: "SaveChatUser", + Handler: _AccountFiee_SaveChatUser_Handler, + }, + { + MethodName: "DeleteChatUser", + Handler: _AccountFiee_DeleteChatUser_Handler, + }, + { + MethodName: "GetChatUserDetail", + Handler: _AccountFiee_GetChatUserDetail_Handler, + }, + { + MethodName: "GetChatUserList", + Handler: _AccountFiee_GetChatUserList_Handler, + }, + { + MethodName: "GetChatUserList2", + Handler: _AccountFiee_GetChatUserList2_Handler, + }, + { + MethodName: "RegisterWaiter", + Handler: _AccountFiee_RegisterWaiter_Handler, + }, + { + MethodName: "CreateChatRecord", + Handler: _AccountFiee_CreateChatRecord_Handler, + }, + { + MethodName: "UpdateChatRecord", + Handler: _AccountFiee_UpdateChatRecord_Handler, + }, + { + MethodName: "SaveChatRecord", + Handler: _AccountFiee_SaveChatRecord_Handler, + }, + { + MethodName: "DeleteChatRecord", + Handler: _AccountFiee_DeleteChatRecord_Handler, + }, + { + MethodName: "GetChatRecordDetail", + Handler: _AccountFiee_GetChatRecordDetail_Handler, + }, + { + MethodName: "GetChatRecordList", + Handler: _AccountFiee_GetChatRecordList_Handler, + }, + { + MethodName: "CreateChatMedia", + Handler: _AccountFiee_CreateChatMedia_Handler, + }, + { + MethodName: "UpdateChatMedia", + Handler: _AccountFiee_UpdateChatMedia_Handler, + }, + { + MethodName: "SaveChatMedia", + Handler: _AccountFiee_SaveChatMedia_Handler, + }, + { + MethodName: "DeleteChatMedia", + Handler: _AccountFiee_DeleteChatMedia_Handler, + }, + { + MethodName: "GetChatMediaDetail", + Handler: _AccountFiee_GetChatMediaDetail_Handler, + }, + { + MethodName: "GetChatMediaList", + Handler: _AccountFiee_GetChatMediaList_Handler, + }, + { + MethodName: "CreateChatAutoReplyRuler", + Handler: _AccountFiee_CreateChatAutoReplyRuler_Handler, + }, + { + MethodName: "UpdateChatAutoReplyRuler", + Handler: _AccountFiee_UpdateChatAutoReplyRuler_Handler, + }, + { + MethodName: "SaveChatAutoReplyRuler", + Handler: _AccountFiee_SaveChatAutoReplyRuler_Handler, + }, + { + MethodName: "DeleteChatAutoReplyRuler", + Handler: _AccountFiee_DeleteChatAutoReplyRuler_Handler, + }, + { + MethodName: "GetChatAutoReplyRulerDetail", + Handler: _AccountFiee_GetChatAutoReplyRulerDetail_Handler, + }, + { + MethodName: "GetChatAutoReplyRulerList", + Handler: _AccountFiee_GetChatAutoReplyRulerList_Handler, + }, }, Streams: []grpc_go.StreamDesc{}, - Metadata: "api/accountFiee/accountFiee.proto", + Metadata: "accountFiee.proto", } diff --git a/go.mod b/go.mod index 9f1a0e8..98af807 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ replace ( github.com/fonchain_enterprise/utils/aes => ../utils/aes github.com/fonchain_enterprise/utils/objstorage => ../utils/objstorage //github.com/fonchain_enterprise/utils/objstorage => ../../tyfon-新/utils/objstorage + github.com/fonchain/utils/voice => ../utils/voice ) // diff --git a/pkg/cache/common.go b/pkg/cache/common.go index f20e90f..8a3299e 100644 --- a/pkg/cache/common.go +++ b/pkg/cache/common.go @@ -17,7 +17,7 @@ type RedisConfig struct { RedisDbName string } -//LoadRedis 在中间件中初始化redis链接 +// LoadRedis 在中间件中初始化redis链接 func LoadRedis(configEnv RedisConfig) { db, _ := strconv.ParseUint(configEnv.RedisDbName, 10, 64) client := redis.NewClient(&redis.Options{ diff --git a/pkg/common/ws/base.go b/pkg/common/ws/base.go new file mode 100644 index 0000000..f440521 --- /dev/null +++ b/pkg/common/ws/base.go @@ -0,0 +1,178 @@ +// Package ws ----------------------------- +// @file : hertzWSUpgrade.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/6/28 14:14 +// ------------------------------------------- +package ws + +import ( + "encoding/json" + "fonchain-fiee/pkg/e" + "fonchain-fiee/pkg/serializer" + "strings" +) + +type WsType int + +const ( + RegisterType WsType = iota + ErrorType + TestType + ChatType + NewChatMsgType //新消息通知 + AuthorizationType //token校验通知 +) + +// 消息结构 +type WSMessage struct { + Type string `json:"type"` + Data string `json:"data"` +} + +// websocket消息内容 +type WsInfo struct { + Type WsType `json:"type"` //消息类型 + Content interface{} `json:"content"` //消息内容 + From string `json:"from"` //发送者 0为服务端,客户端填写clientId + To string `json:"to"` //接收者 接收消息的用户id + Mark string `json:"mark"` + //Conn *websocket.Conn `json:"-"` //客户端发送消息使用 +} +type WsSessionInfo struct { + Type WsType `json:"type"` //消息类型 + //SessionId string `json:"sessionId"` //会话Id + Content interface{} `json:"content"` //消息内容 +} + +// 身份认证消息 +type AuthorizationInfo struct { + Type WsType `json:"type"` //消息类型 + Content AuthInfo `json:"content"` +} + +type AuthInfo struct { + Auth string `json:"auth"` + Domain string `json:"domain"` +} + +// 注册消息 +type WsRegisterInfo struct { + Type WsType `json:"type"` //消息类型 + Content UserInfo `json:"content"` //消息内容 + From string `json:"from"` //发送者 0为服务端,客户端填写clientId + To string `json:"to"` //接收者 接收消息的用户id + //Conn *websocket.Conn `json:"-"` //客户端发送消息使用 +} +type UserInfo struct { + Uuid string `json:"uuid"` //画家uid + UserId int64 `json:"userId"` //用户id + ClientId string `json:"clientId,omitempty"` //服务端临时签发的客户端uid +} + +type TempClientInfo struct { + ClientId string `json:"clientId"` +} + +func WsMessageRegisterCallback(clientId string) []byte { + var errMsg = WsInfo{ + Type: RegisterType, + Content: map[string]string{ + "clientId": clientId, + }, + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsErrorMessage(wsType WsType, clientId string, code e.ErrorCodeType, err error) []byte { + var ers string + if err != nil { + ers = err.Error() + } + var content = serializer.Response{ + Code: code, + Err: ers, + Msg: code.String(), + } + var errMsg = WsInfo{ + Type: wsType, + Content: content, + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} +func WsErrorPermissionDenied(wsType WsType, clientId string) []byte { + var content = serializer.Response{ + Code: e.PermissionDenied, + Err: "Permission Denied", + Msg: "拒绝访问", + } + var errMsg = WsInfo{ + Type: wsType, + Content: content, + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsErrorInvalidDataFormat(clientId string) []byte { + var content = serializer.Response{ + Status: e.Failed, + Code: e.Failed, + Err: "Invalid Data Format", + Msg: "发送失败", + } + var errMsg = WsInfo{ + Type: ErrorType, + Content: content, + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsErrorUnknownMessageType(clientId string) []byte { + var errMsg = WsInfo{ + Type: ErrorType, + Content: "Unknown notice type", + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsErrorConnection(clientId string, err string, marks ...string) []byte { + mark := "" + if marks != nil { + mark = strings.Join(marks, ";") + } + var errMsg = WsInfo{ + Type: ErrorType, + Content: "Connection error:" + err, + From: "0", + To: clientId, + Mark: mark, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsChatMessage(clientId string, targetClientId string, msg string) []byte { + var errMsg = WsInfo{ + Type: ChatType, + Content: msg, + From: clientId, + To: targetClientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} diff --git a/pkg/common/ws/chatRoom.go b/pkg/common/ws/chatRoom.go new file mode 100644 index 0000000..feab975 --- /dev/null +++ b/pkg/common/ws/chatRoom.go @@ -0,0 +1,315 @@ +// Package ws ----------------------------- +// @file : chatRoom.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/21 18:17:17 +// ------------------------------------------- +package ws + +import ( + "encoding/json" + "fmt" + "fonchain-fiee/pkg/utils" + "github.com/gorilla/websocket" + "go.uber.org/zap" + "log" + "runtime" + "strconv" + "sync" + "time" +) + +const ( + // Time allowed to write a notice to the peer. + writeWait = 10 * time.Second + + // Time allowed to read the next pong notice from the peer. + pongWait = 60 * time.Second + + // Send pings to peer with this period. Must be less than pongWait. + pingPeriod = (pongWait * 9) / 10 + + // Maximum notice size allowed from peer. + maxMessageSize = 1024 +) + +func NewChatRoom() *ChatRoom { + var room = ChatRoom{ + clientsRwLocker: &sync.RWMutex{}, + clients: make(map[int64]map[string]*Client), + register: make(clientChan), + UnRegister: make(clientChan), + broadcast: make(broadcastChan), + } + go room.Run() + return &room +} + +type broadcastMessage struct { + UserIds []int64 + message []byte +} +type ( + // []byte类型管道 用于客户端接收消息数据 + messageChan chan []byte + + // + wsConnChan chan *websocket.Conn + + // Client类型数据管道 + clientChan chan *Client + + broadcastChan chan *broadcastMessage +) + +type ChatRoom struct { + clientsRwLocker *sync.RWMutex + //clients 客户端信息存储 + //// 支持多客户端连接 map[userId]map[clientId]*Client + clients map[int64]map[string]*Client + + //会话 map[sessionId][]*Client + Session map[string][]*Client + + //register register 注册管道 + register clientChan + + //unRegister 注销管道 接收需要注销的客户端 + UnRegister clientChan + + broadcast broadcastChan +} + +func (o *ChatRoom) Run() { + //消息分发 + for { + select { + // 注册事件 + case newClient := <-o.register: + ////删除临时map中的客户户端 + //delete(o.tempClient, client.clientId) + o.clientsRwLocker.Lock() + //添加到客户端集合中 + if o.clients[newClient.UserId] == nil { + o.clients[newClient.UserId] = make(map[string]*Client) + } + o.clients[newClient.UserId][newClient.ClientId] = newClient + //添加到会话集合中 + if o.Session == nil { + o.Session = make(map[string][]*Client) + } + //if _, ok := o.Session[newClient.SessionId]; ok { + // for i, client := range o.Session[newClient.SessionId] { + // if client.ClientId == newClient.ClientId { + // //将之前的客户端注销 + // o.UnRegister <- client + // } + // o.Session[newClient.SessionId][i] = newClient + // } + //} + if newClient.Waiter { + //客服人员没有默认会话窗口,而是自动加入所有用户的会话 + for sessionId, _ := range o.Session { + sessionId := sessionId + if sessionId != newClient.SessionId { + for _, client := range o.clients[newClient.UserId] { + o.Session[sessionId] = append(o.Session[sessionId], client) + } + } + } + } else { + //画家添加会话的逻辑 + _, ok := o.Session[newClient.SessionId] + if !ok { + o.Session[newClient.SessionId] = make([]*Client, 0) + //把客服拉入会话 + for userId, clientInfo := range o.clients { + if userId == newClient.UserId { + continue + } + for i, client := range clientInfo { + if client != nil && client.Waiter { + //把客服人员客户端加入会话中 + o.Session[newClient.SessionId] = append(o.Session[newClient.SessionId], clientInfo[i]) + } + } + } + } + //再把自己的客户端加入会话 + o.Session[newClient.SessionId] = append(o.Session[newClient.SessionId], newClient) + } + o.clientsRwLocker.Unlock() + //注销事件 + case client := <-o.UnRegister: + //panic 恢复 + defer func() { + if r := recover(); r != "" { + const size = 64 << 10 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + err, ok := r.(error) + if !ok { + err = fmt.Errorf("%v", r) + } + log.Fatal("close webosocket connection occured panic , recovered!", zap.Any("client", client), zap.Error(err), zap.String("stack", string(buf))) + } + }() + fmt.Println("ws客户端注销事件触发") + //从客户端集合中删除 + if _, ok := o.clients[client.UserId]; ok { + if client != nil && client.Conn != nil { + //_ = client.Conn.WriteMessage(websocket.CloseMessage, []byte{}) + _ = client.Conn.Close() + } + o.clients[client.UserId][client.ClientId] = nil + delete(o.clients[client.UserId], client.ClientId) + fmt.Printf("ws客户端%s 被注销\n", client.ClientId) + } + // 消息群发事件 + case messageInfo := <-o.broadcast: + o.Broadcast(messageInfo.message, messageInfo.UserIds...) + } + } +} +func (o *ChatRoom) Register(c *Client) (sessionId string) { + if c.SessionId == "" && !c.Waiter { + //这里的c经常拿不到sessionId,所以使用userId固定死 + //c.SessionId = fmt.Sprintf("%d-%d", c.UserId, time.Now().Unix()) + c.SessionId = fmt.Sprintf("%d", c.UserId) + } + o.register <- c + return c.SessionId +} + +// SendSessionMessage +// sendUserId: 发送消息的用户id,消息提醒时,此用户将会被排除 +// sessionId: 会话id +// msgType: 消息类型 +// message: 消息内容 +func (o *ChatRoom) SendSessionMessage(sendUserId int64, sessionId string, msgType WsType, message any) (userIdInSession []int64, err error) { + o.clientsRwLocker.Lock() + defer o.clientsRwLocker.Unlock() + var msg = WsSessionInfo{ + Type: msgType, + Content: message, + } + msgBytes, _ := json.Marshal(msg) + if o.Session[sessionId] == nil { + err = fmt.Errorf("该会话不存在或已失效") + return + } + fmt.Println("ChatRoom.SendSessionMessage - 1") + usableClients := []*Client{} + fmt.Printf("sessionId:[%s],客户端数量%d\n", sessionId, len(o.Session[sessionId])) + for i, client := range o.Session[sessionId] { + if client != nil { + _, exist := o.clients[client.UserId][client.ClientId] + if exist { + usableClients = append(usableClients, o.Session[sessionId][i]) + } + } + fmt.Printf("client:%+v\n", client) + if client != nil && client.UserId != sendUserId { + client.Send <- msgBytes + userIdInSession = append(userIdInSession, client.UserId) + } + //client.Send <- msgBytes + } + o.Session[sessionId] = usableClients + fmt.Printf("sessionId:[%s],客户端数量%d\n", sessionId, len(o.Session[sessionId])) + fmt.Println("userIdInSession", userIdInSession) + return +} +func (o *ChatRoom) GetUserIdInSession(sessionId string, withoutUserId ...int64) (userIds []int64) { + fmt.Printf("sessionId:%s withoutUserId:%d\n", sessionId, withoutUserId) + //o.clientsRwLocker.RLock() + //defer o.clientsRwLocker.RUnlock() + fmt.Println("GetUserIdInSession 1") + if o.Session[sessionId] != nil { + fmt.Printf("GetUserIdInSession 2,o.Session[sessionId]:%+v", o.Session[sessionId]) + for _, client := range o.Session[sessionId] { + fmt.Println("session one of userId", client.UserId) + var jump bool + if withoutUserId != nil { + for _, userId := range withoutUserId { + if client.UserId == userId { + jump = true + continue + } + } + } + if !jump { + fmt.Println("ADD USER", client.UserId) + userId := client.UserId + userIds = append(userIds, userId) + } + } + } + //针对app没有连接上websocket(聊天室没有检查到用户的客户端,此时websocket无法发送通知),但是需要推送app通知给用户的情况进行优化 + fmt.Println("GetUserIdInSession 3,userIds:", userIds) + if len(userIds) == 0 { + sessionUserId, _ := strconv.Atoi(sessionId) + add := true + if sessionUserId != 0 { + for _, v := range withoutUserId { + if v == int64(sessionUserId) { + add = false + break + } + } + } + if add { + userIds = append(userIds, int64(sessionUserId)) + } + fmt.Println("GetUserIdInSession 4,userIds:", userIds) + } + userIds = utils.Unique(userIds) + fmt.Println("GetUserIdInSession 5,userIds:", userIds) + return +} + +// func (o ChatRoom) RegisterClient(c *Client) { +// o.register <- c +// } +// +// func (o ChatRoom) DeleteClient(c *Client) { +// o.unRegister <- c +// } +func (o ChatRoom) Broadcast(message []byte, userIds ...int64) { + // 如果userIds为空则群发,否则找到这个用户的ws对象 + if userIds == nil { + for _, userClients := range o.clients { + for _, cli := range userClients { + if cli == nil { + o.UnRegister <- cli + continue + } + go func() { + err := cli.Conn.WriteMessage(websocket.TextMessage, message) + if err != nil { + o.UnRegister <- cli + } + }() + } + } + } else { + for _, userId := range userIds { + userClients, ok := o.clients[userId] + if ok == false { + return + } + for _, cli := range userClients { + if cli == nil { + o.UnRegister <- cli + continue + } + go func() { + err := cli.Conn.WriteMessage(websocket.TextMessage, message) + if err != nil { + o.UnRegister <- cli + } + }() + } + } + } +} diff --git a/pkg/common/ws/client.go b/pkg/common/ws/client.go new file mode 100644 index 0000000..00f5a51 --- /dev/null +++ b/pkg/common/ws/client.go @@ -0,0 +1,111 @@ +// Package ws ----------------------------- +// @file : client.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/21 18:18:05 +// ------------------------------------------- +package ws + +import ( + "context" + "fmt" + "github.com/gorilla/websocket" + uuid "github.com/satori/go.uuid" + "go.uber.org/zap" + "log" + "strings" + "time" +) + +var ( + // 注册事件最大等待时间 + limitRegisterWaitTime = time.Second * 6 + limitReadTime = time.Second * 5 +) + +// NewClient 创建客户端实例 +// +// param userId 用户id +// param uid 用户uuid +// param conn 客户端websocket连接对象 +// return *Client +func NewClient(userId int64, uid string, conn *websocket.Conn, room *ChatRoom) *Client { + uidobj, _ := uuid.NewV4() + var v = &Client{ + Room: room, + UserId: userId, + Uuid: uid, + ClientId: strings.Replace(uidobj.String(), "-", "", -1), + Conn: conn, + Send: make(chan []byte, 500), + } + return v +} + +type Client struct { + Room *ChatRoom `json:"-" ` + UserId int64 `json:"userId" ` //用户id + Uuid string `json:"uuid"` //画家uid + ClientId string `json:"clientId"` //为用户不同设备分配不同的客户端ID + Conn *websocket.Conn `json:"-"` + Send chan []byte + SessionId string `json:"sessionId"` //会话ID,同一个用户多客户端登录,会话ID相同 + Waiter bool `json:"waiter"` //是否是客服 +} + +func (c *Client) Reading(ctx context.Context, handleFunc ...func(sourceData []byte, cli *Client)) { + defer func() { + c.Room.UnRegister <- c + ctx.Done() + return + }() + //c.Conn.SetReadLimit(maxMessageSize) + c.Conn.SetReadDeadline(time.Now().Add(pongWait)) + //接收到ping命令后,更新读取时间 + c.Conn.SetPongHandler(func(string) error { + c.Conn.SetReadDeadline(time.Now().Add(pongWait)) + return nil + }) + for { + msgType, byteData, err := c.Conn.ReadMessage() + if msgType == -1 { + return + } + if err != nil { + if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { + log.Println("ws连接已关闭", zap.Error(err)) + } + break + } + if handleFunc != nil { + handleFunc[0](byteData, c) + } else { + HandleMessage(byteData, c) + } + } +} +func (c *Client) WriteWait() { + ticker := time.NewTicker(pingPeriod) + defer func() { + ticker.Stop() + c.Conn.Close() + }() + + for { + select { + case msg, ok := <-c.Send: + fmt.Printf("发送消息:%+v\n", string(msg)) + c.Conn.WriteMessage(websocket.TextMessage, msg) + fmt.Println("发送消息结束") + if !ok { + // 聊天室关闭了管道 + c.Conn.WriteControl(websocket.CloseMessage, []byte{}, time.Now().Add(writeWait)) + return + } + case <-ticker.C: + if err := c.Conn.WriteControl(websocket.PingMessage, nil, time.Now().Add(pongWait)); err != nil { + return + } + } + } +} diff --git a/pkg/common/ws/ginWSUpgrade.go b/pkg/common/ws/ginWSUpgrade.go new file mode 100644 index 0000000..3a53b3c --- /dev/null +++ b/pkg/common/ws/ginWSUpgrade.go @@ -0,0 +1,21 @@ +// Package utils ----------------------------- +// @file : hertzWSUpgrade.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/6/28 14:19 +// ------------------------------------------- +package ws + +import ( + "github.com/gorilla/websocket" + "net/http" +) + +var UpGrader = websocket.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + CheckOrigin: func(r *http.Request) bool { + // 检查请求的来源是否允许websocket连接,可根据需求自行实现 + return true + }, +} diff --git a/pkg/common/ws/readme.md b/pkg/common/ws/readme.md new file mode 100644 index 0000000..0befe07 --- /dev/null +++ b/pkg/common/ws/readme.md @@ -0,0 +1,53 @@ +# wsscoket 对接说明 +## 客户端对接测试页面 +[{{服务端地址}}/ws/client](http://127.0.0.1:8088/ws/client) + +## 客户端对接websocket流程 +### websocket的连接 +1. 客户端登录后获取uuid +2. 连接服务端websocket后,在10s内发送一下格式的数据,否则websocket连接将断开。 +uuid请添加登录后获取的,如果uuid不正确,连接也会断开 +```json +{ + "type": "register", + "from": "", + "to": "0", + "content": { + "uuid":"用户的uuid" + } +} +``` +注册成功后,服务端将返回客户端临时id +```json +{"clientId":"02de5759-3f0a-47fa-a79f-afe61c39c5aa"} +``` + +### weboscket 数据发送测试 +消息类型`type="test"`时,客户端将会把`content`内容原路返回,以此来测试最基本的通讯功能。 +```json +{ + "type": "test", + "from": "用户clientId", + "to": "0", + "content": { + "demo":"testdemo" + } +} +``` + +### websocket消息类型说明 +#### 错误消息 +在websocket通讯过程中,服务端会对客户端发送过来的消息进行验证。 + +| type字段 | content字段 | 说明 | +|--------|----------------------|------------------------------| +| Error | Permission denied | 拒绝访问。 此报错一般出现在首次连接,验证uuid的时候 | +| Error | Invalid data format | 无效的数据格式。消息内容未按照指定格式书写 | +| Error | Unknown message type | 未知的消息类型。接收到了未定义的type | + +**错误消息示例:** +```json +{"type":"Error","content":"Permission denied","from":"0","to":"tempId"} +//{"type":"Error","content":"Invalid data format","from":"0","to":""} +//{"type":"Error","content":"Unknown notice type","from":"0","to":"0"} +``` \ No newline at end of file diff --git a/pkg/common/ws/wsMessageHandle.go b/pkg/common/ws/wsMessageHandle.go new file mode 100644 index 0000000..9f96c5c --- /dev/null +++ b/pkg/common/ws/wsMessageHandle.go @@ -0,0 +1,144 @@ +// Package ws ----------------------------- +// @file : handler.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/23 11:13:43 +// ------------------------------------------- +package ws + +import ( + "context" + "encoding/json" + "fonchain-fiee/api/account" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/config" + "fonchain-fiee/pkg/e" + "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/utils/secret" +) + +func AuthorizationVerify(sourceData []byte) (userInfo *accountFiee.ChatUserData, ok bool, err error) { + var msg AuthorizationInfo + err = json.Unmarshal(sourceData, &msg) + if err != nil { + return + } + if msg.Type != AuthorizationType { + return + } + if msg.Content.Auth == "" { + return + } + var ctx = context.Background() + var accountInfo accountFiee.ChatUserData + switch msg.Content.Domain { + case config.Domain: + //fiee token校验 + msg.Content.Auth, err = secret.GetJwtFromStr(msg.Content.Auth) + if err != nil { + return + } + var fieeJwtInfo *accountFiee.DecryptJwtResponse + fieeJwtInfo, err = service.AccountFieeProvider.DecryptJwt(ctx, &accountFiee.DecryptJwtRequest{Token: msg.Content.Auth, Domain: msg.Content.Domain}) + if err != nil || fieeJwtInfo.IsOffline { + return + } + accountInfo.Origin = msg.Content.Domain + accountInfo.OriginId = int64(fieeJwtInfo.ID) + accountInfo.Account = fieeJwtInfo.Account + accountInfo.NickName = fieeJwtInfo.NickName + case "fontree": + //erp token校验 + msg.Content.Auth, err = secret.GetJwtFromStr(msg.Content.Auth) + if err != nil { + return + } + var fontreeJwtInfo *account.DecryptJwtResponse + fontreeJwtInfo, err = service.AccountProvider.DecryptJwt(ctx, &account.DecryptJwtRequest{Token: msg.Content.Auth, Domain: msg.Content.Domain}) + if err != nil || fontreeJwtInfo.IsOffline { + return + } + accountInfo.Origin = msg.Content.Domain + accountInfo.OriginId = int64(fontreeJwtInfo.ID) + accountInfo.Account = fontreeJwtInfo.Account + accountInfo.NickName = fontreeJwtInfo.NickName + } + + //查询是否已经注册 + var chatUserQuery *accountFiee.GetChatUserListResp + chatUserQuery, err = service.AccountFieeProvider.GetChatUserList(ctx, &accountFiee.GetChatUserListRequest{ + Query: &accountFiee.ChatUserData{OriginId: int64(accountInfo.ID), Origin: msg.Content.Domain}, + Page: 1, + PageSize: 1, + }) + //如果找不到聊天用户则创建 + if err != nil || chatUserQuery.Total > 0 { + //注册客服 + createUserRes, err := service.AccountFieeProvider.CreateChatUser(ctx, &accountFiee.ChatUserData{ + NickName: accountInfo.NickName, + Account: accountInfo.Account, + Role: 2, + Origin: msg.Content.Domain, + OriginId: int64(accountInfo.ID), + }) + if err != nil { + return + } + userInfo = createUserRes.GetData() + } + ok = true + return +} +func HandleMessage(sourceData []byte, cli *Client) { + var msg WsInfo + err := json.Unmarshal(sourceData, &msg) + if err != nil { + cli.Send <- WsErrorInvalidDataFormat(msg.From) + return + } + switch msg.Type { + default: + cli.Send <- WsErrorUnknownMessageType(msg.From) + case TestType: + var newMsg = WsInfo{ + Type: TestType, + Content: msg.Content, + From: "0", + To: msg.From, + } + byteMsg, _ := json.Marshal(newMsg) + cli.Send <- byteMsg + case ChatType: + if msg.From == "" { + //客户端id不能为空 + cli.Send <- WsErrorMessage(ChatType, "null", e.ErrInvalidClientId, nil) + return + } + var chatInfo ChatInfo + _ = json.Unmarshal(sourceData, &chatInfo) + //解析Content + if clients, ok := cli.Room.clients[chatInfo.Content.TargetUserId]; ok { + for _, targetObj := range clients { + if targetObj != nil { + targetObj.Send <- WsChatMessage(msg.From, chatInfo.Content.TargetClientId, chatInfo.Content.Msg) + } + } + } else { + //对方不在线 + cli.Send <- WsErrorMessage(ChatType, msg.From, e.ErrTargetOutLine, nil) + } + } +} + +type ChatInfo struct { + Type WsType `json:"type"` //消息类型 + Content ChatContent `json:"content"` //消息内容 + From string `json:"from"` //发送者 0为服务端,客户端填写clientId + To string `json:"to"` //接收者 接收消息的用户id +} +type ChatContent struct { + TargetUuid string `json:"targetUuid"` + TargetUserId int64 `json:"targetUserId"` + TargetClientId string `json:"targetClientId"` + Msg string `json:"msg"` +} diff --git a/pkg/common/ws/wsRoom.html b/pkg/common/ws/wsRoom.html new file mode 100644 index 0000000..c488c2f --- /dev/null +++ b/pkg/common/ws/wsRoom.html @@ -0,0 +1,127 @@ + + + +Chat Example + + + + +
+
+ + +
+ + diff --git a/pkg/e/chatCode.go b/pkg/e/chatCode.go new file mode 100644 index 0000000..3c54475 --- /dev/null +++ b/pkg/e/chatCode.go @@ -0,0 +1,61 @@ +// Package e ----------------------------- +// @file : chatCode.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/12 16:57 +// ------------------------------------------- +package e + +import "fmt" + +type ErrorCodeType int + +func (e ErrorCodeType) String() string { + return GetCodeMsg(e) +} + +func (e ErrorCodeType) Error() string { + return GetCodeMsg(e) +} +func (e ErrorCodeType) Int() int { + return int(e) +} +func GetCodeMsg(e ErrorCodeType) string { + v, ok := msgFlags[e] + if !ok { + return fmt.Sprintf("未知错误:[%d]", e) + } + return v +} + +var msgFlags = map[ErrorCodeType]string{ + SUCCESS: "操作成功", + UpdatePasswordSuccess: "修改密码成功", + NotExistInentifier: "该第三方账号未绑定", + ERROR: "fail", + InvalidParams: "请求参数错误", + BindError: "参数绑定错误,类型不一致", + JsonUnmarshal: "Json解析错误", + + ErrorDatabase: "数据库操作出错,请重试", + + ErrorOss: "OSS配置错误", + + InvalidToken: "Token验证失败", + + ErrorUploadFile: "上传失败", + ErrorUploadVideoCover: "视频截取封面错误", + ErrorUploadValidParam: "上传参数非法", + ErrorFileReadErr: "读取文件错误", + ErrorFileNotExists: "文件不存在", + ErrorChunkNotGt: "分块数量不一致", + ErrorChunk: "读取分块错误", + ErrorUploadBos: "上传bos错误", + ErrorFileCreate: "文件创建错误", + ErrInvalidDataFormat: "无效的数据格式", + ErrInvalidClientId: "无效的客户端ID", + ErrRegisterFailed: "注册失败", + ErrUnRegistered: "未注册客户端", + PermissionDenied: "拒绝访问", + ErrChatSendErr: "消息发送失败", +} diff --git a/pkg/e/code.go b/pkg/e/code.go index 6607221..ef37fb0 100644 --- a/pkg/e/code.go +++ b/pkg/e/code.go @@ -139,6 +139,15 @@ const ( ERROR_Text_Irregularity = 90018 ERROR_Text_Length = 90019 ERROR_NoPermission = 90020 + + //聊天室 + ErrInvalidDataFormat = 80100 //无效的数据格式 + ErrInvalidClientId = 80101 //无效的客户端id + ErrRegisterFailed = 80102 //注册失败 + ErrUnRegistered = 80103 //未注册 + PermissionDenied = 80104 //拒绝访问 + ErrChatSendErr = 80105 //聊天记录发送失败 + ErrTargetOutLine = 80106 //目标离线 ) const ( Push = 1 diff --git a/pkg/e/msg.go b/pkg/e/msg.go index bdefed8..fd10492 100644 --- a/pkg/e/msg.go +++ b/pkg/e/msg.go @@ -146,6 +146,8 @@ var MsgFlags = map[int]string{ ERROR_Text_Irregularity: "文字内容不合规", ERROR_Text_Length: "文本长度超出限制", ERROR_NoPermission: "您暂无权限,请联系客服", + + ErrInvalidClientId: "无效的客户端ID", } const ( diff --git a/pkg/router/router.go b/pkg/router/router.go index 6fb0709..80fdfe2 100644 --- a/pkg/router/router.go +++ b/pkg/router/router.go @@ -4,6 +4,7 @@ import ( "fonchain-fiee/pkg/middleware" "fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service/account" + "fonchain-fiee/pkg/service/asChat" "fonchain-fiee/pkg/service/auth" "fonchain-fiee/pkg/service/lang" "fonchain-fiee/pkg/service/qr" @@ -22,7 +23,10 @@ import ( func NewRouter() *gin.Engine { //使用默认gin路由 r := gin.Default() - + wsGroup := r.Group("api/fiee") + wsGroup.Use( + middleware.GinRecovery(true), + ) r.Use(gzip.Gzip(gzip.BestSpeed)) // 中间件占用绝大部分内存 //加入日志中间件,跨域中间件 r.Use(middleware.NewLogger(), middleware.Cors(), middleware.GinRecovery(true)) @@ -107,6 +111,18 @@ func NewRouter() *gin.Engine { redirectRoute.POST("sdk/down/v2", auth.DownImgV2) redirectRoute.POST("sdk/down/v3", auth.DownImgV3) } + //======================================================================================== + // 客户聊天 + { + // websocket数据接收 + wsGroup.GET("aschat/ws", asChat.ChatHandlerIns.Connection) + v1.POST("aschat/message/new", asChat.ChatHandlerIns.NewMessage) + v1.POST("aschat/media/upload", asChat.ChatHandlerIns.Upload) + v1.POST("aschat/message/list", asChat.ChatHandlerIns.MessageList) + v1.POST("aschat/user/stat", asChat.ChatHandlerIns.UserMessageStat) + v1.POST("aschat/voicetotext", asChat.ChatHandlerIns.VoiceToText) + v1.POST("aschat/artistDetail", asChat.ChatHandlerIns.ArtistDetail) + } //静态文件 r.StaticFS("/api/static", http.Dir("./runtime")) diff --git a/pkg/serializer/common.go b/pkg/serializer/common.go index 03ff3ba..89c95ce 100644 --- a/pkg/serializer/common.go +++ b/pkg/serializer/common.go @@ -1,17 +1,19 @@ package serializer +import "fonchain-fiee/pkg/e" + // Response 基础序列化器 type Response struct { - Status int `json:"status"` - Data interface{} `json:"data"` - Msg string `json:"msg"` - Code int `json:"code"` - Error error `json:"error"` - Err string `json:"err"` - Keys []string `json:"keys"` - Mark string `json:"mark,omitempty"` - Page *PageInfo `json:"page,omitempty"` - Positions interface{} `json:"positions"` + Status int `json:"status"` + Data interface{} `json:"data"` + Msg string `json:"msg"` + Code e.ErrorCodeType `json:"code"` + Error error `json:"error"` + Err string `json:"err"` + Keys []string `json:"keys"` + Mark string `json:"mark,omitempty"` + Page *PageInfo `json:"page,omitempty"` + Positions interface{} `json:"positions"` } type PageInfo struct { Page int32 `json:"page" query:"page"` diff --git a/pkg/service/asChat/cache.go b/pkg/service/asChat/cache.go new file mode 100644 index 0000000..349649e --- /dev/null +++ b/pkg/service/asChat/cache.go @@ -0,0 +1,241 @@ +// Package asChat ----------------------------- +// @file : cache.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2024/9/11 下午5:18 +// ------------------------------------------- +package asChat + +import ( + "context" + "errors" + "fmt" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/cache" + "github.com/go-redis/redis" + "github.com/goccy/go-json" + "go.uber.org/zap" + "log" + "strings" + "sync" + "time" +) + +const CacheChatRecordKey = "chatRecord" +const CacheSessionKey = "chatSession" +const CacheNewMsgStatKey = "newMsgStat" + +var chatCacheLocker sync.RWMutex + +type ChatCache struct { + newMessageStatExpireAfter time.Duration //消息统计的数据过期时间 +} + +// ------------------------------存储用户的会话ID-------------------------------- +func (cr ChatCache) GetUserSessionCacheKey(userId int64) string { + return fmt.Sprintf("%s:%d", CacheSessionKey, userId) +} +func (cr ChatCache) SaveUserSession(userId int64, sessionId string) { + chatCacheLocker.Lock() + defer chatCacheLocker.Unlock() + ////var c = context.Background() + err := cache.RedisClient.Set(cr.GetUserSessionCacheKey(userId), sessionId, 0).Err() + if err != nil { + log.Fatal("保存用户会话失败", zap.Error(err)) + } +} +func (cr ChatCache) GetUserSession(userId int64) (sessionId string) { + fmt.Println("GetUserSession-1") + chatCacheLocker.RLock() + defer chatCacheLocker.RUnlock() + //var c = context.Background() + sessionId, err := cache.RedisClient.Get(cr.GetUserSessionCacheKey(userId)).Result() + fmt.Println("GetUserSession-2") + if err != nil { + if err.Error() == "redis: nil" { + err = nil + } else { + log.Fatal("获取用户会话失败", zap.Error(err)) + } + } + fmt.Println("GetUserSession-3, sessionId:", sessionId) + return +} + +// ------------------------------存储会话的聊天记录-------------------------------- +func (cr ChatCache) GetChatRecordCacheKey(sessionId string) string { + return fmt.Sprintf("%s:%s", CacheChatRecordKey, sessionId) +} +func (cr ChatCache) AddChatRecord(sessionId string, data ...*accountFiee.ChatRecordData) (err error) { + ////var c = context.Background() + messages := cr.GetChatRecord(sessionId) + fmt.Printf("AddChatRecord add data:%+v\n", data) + messages = append(messages, data...) + cacheBytes, _ := json.Marshal(messages) + fmt.Println("Marshal result", string(cacheBytes)) + err = cache.RedisClient.Set(cr.GetChatRecordCacheKey(sessionId), cacheBytes, 2*time.Hour).Err() + return +} + +func (cr ChatCache) CoverChatRecord(sessionId string, data []*accountFiee.ChatRecordData) (err error) { + chatCacheLocker.Lock() + defer chatCacheLocker.Unlock() + //var c = context.Background() + cacheBytes, _ := json.Marshal(data) + err = cache.RedisClient.Set(cr.GetChatRecordCacheKey(sessionId), cacheBytes, 2*time.Hour).Err() + return +} +func (cr ChatCache) GetChatRecord(sessionId string) (data []*accountFiee.ChatRecordData) { + chatCacheLocker.RLock() + defer chatCacheLocker.RUnlock() + data = make([]*accountFiee.ChatRecordData, 0) + //var c = context.Background() + messages, err := cache.RedisClient.Get(cr.GetChatRecordCacheKey(sessionId)).Bytes() + if err != nil { + if err.Error() == "redis: nil" { + err = nil + } + //log.Fatal("获取聊天记录失败", zap.Error(err)) + return + } + fmt.Printf("cache data: %+v", string(messages)) + if len(messages) > 0 { + _ = json.Unmarshal(messages, &data) + } + return +} + +// ------------------------------存储新消息统计-------------------------------- +func (cr ChatCache) GetNewMsgStatCacheKey(ownerId int64) string { + return fmt.Sprintf("%s:%d", CacheNewMsgStatKey, ownerId) +} + +// 消息数量自增 +func (cr ChatCache) IncreaseNewMessageTotal(ownerId int64, sessionId string) (err error) { + chatCacheLocker.Lock() + defer chatCacheLocker.Unlock() + ctx := context.Background() + data := cr.GetNewMessageStat(ctx, ownerId) + if len(data) > 0 { + foundIndex := -1 + for i, v := range data { + if v.SessionId == sessionId { + foundIndex = i + break + } + } + if foundIndex > -1 { + data[foundIndex].Total += 1 + } + //将foundIndex之后的所有元素右移动一位 + if foundIndex > 0 { + elementToMove := data[foundIndex] + copy(data[1:], data[0:foundIndex]) + data[0] = elementToMove + } else if foundIndex == -1 { + data = append([]UserMsgStatic{{SessionId: sessionId, Total: 1}}, data...) + } + } else { + data = []UserMsgStatic{{SessionId: sessionId, Total: 1}} + } + return cr.coverOwnerNewMessageStat(ctx, ownerId, data) +} + +// 重置新消息数量 +func (cr ChatCache) ResetNewMessageTotal(ownerId int64, sessionId string, total ...int64) error { + chatCacheLocker.Lock() + defer chatCacheLocker.Unlock() + var tl int64 + if len(total) > 0 { + tl = total[0] + } + ctx := context.Background() + data := cr.GetNewMessageStat(ctx, ownerId) + found := false + for i, v := range data { + if v.SessionId == sessionId { + found = true + data[i].Total = tl + break + } + } + if !found { + data = append(data, UserMsgStatic{ + SessionId: sessionId, + Total: tl, + }) + } + return cr.coverOwnerNewMessageStat(ctx, ownerId, data) +} + +func (cr ChatCache) RecountNewMessageTotal(ownerId int64) { + //var c = context.Background() + var keys []string + var err error + keys, err = cache.RedisClient.Keys(CacheChatRecordKey + "*").Result() + if err != nil { + log.Fatal("获取聊天记录所有缓存KEY失败", zap.Error(err)) + return + } + var countMap = make(map[string]int) + for _, key := range keys { + var messages []byte + var data []*accountFiee.ChatRecordData + messages, err = cache.RedisClient.Get(key).Bytes() + if err != nil { + if err.Error() == "redis: nil" { + err = nil + } + log.Fatal("获取聊天记录失败", zap.Error(err)) + data = make([]*accountFiee.ChatRecordData, 0) + continue + } + if len(messages) > 0 { + _ = json.Unmarshal(messages, &data) + } + var sessionId = strings.Split(key, ":")[1] + countMap[sessionId] = 0 + for _, v := range data { + if v.WaiterRead == 2 { //统计未读消息数量 + countMap[sessionId]++ + } + } + } + for sessionId, count := range countMap { + err = cr.ResetNewMessageTotal(ownerId, sessionId, int64(count)) + if err != nil { + log.Fatal("重置新消息数量统计", + zap.String("function", "RecountNewMessageTotal"), + zap.Int64("ownerId", ownerId), + zap.String("sessionId", sessionId), + zap.Int("count", count), + zap.Error(err), + ) + } + } + return +} + +// erp获取最新的消息统计 +func (cr ChatCache) GetNewMessageStat(ctx context.Context, ownerId int64) (result []UserMsgStatic) { + //chatCacheLocker.RLock() + //defer chatCacheLocker.RUnlock() + result = make([]UserMsgStatic, 0) + vals, err := cache.RedisClient.Get(cr.GetNewMsgStatCacheKey(ownerId)).Bytes() + if err != nil && errors.Is(err, redis.Nil) { + log.Fatal("从缓存获取新消息统计失败", zap.Error(err), zap.Int64("ownerId", ownerId)) + return + } + if vals != nil { + _ = json.Unmarshal(vals, &result) + } + return +} + +// 覆盖指定erp用户的新消息统计 +func (cr ChatCache) coverOwnerNewMessageStat(ctx context.Context, ownerId int64, data []UserMsgStatic) (err error) { + value, _ := json.Marshal(data) + //err = cache.RedisClient.Set(ctx, cr.GetNewMsgStatCacheKey(ownerId), value, cr.newMessageStatExpireAfter).Err() + err = cache.RedisClient.Set(cr.GetNewMsgStatCacheKey(ownerId), value, 0).Err() + return +} diff --git a/pkg/service/asChat/chatRoom.go b/pkg/service/asChat/chatRoom.go new file mode 100644 index 0000000..2c280b9 --- /dev/null +++ b/pkg/service/asChat/chatRoom.go @@ -0,0 +1,33 @@ +// package asChat ----------------------------- +// @file : chatRoom.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/21 18:17:17 +// ------------------------------------------- +package asChat + +import ( + "encoding/json" + "fonchain-fiee/pkg/common/ws" +) + +var ( + ChatRoom = ws.NewChatRoom() +) + +type WsInfo struct { + Type ws.WsType `json:"type"` //消息类型 + Content any `json:"content"` +} + +func WsMessageRegisterCallback(clientId string, sessionId string) []byte { + var errMsg = WsInfo{ + Type: ws.RegisterType, + Content: map[string]string{ + //"clientId": clientId, + "sessionId": sessionId, + }, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} diff --git a/pkg/service/asChat/dto.go b/pkg/service/asChat/dto.go new file mode 100644 index 0000000..fc1b763 --- /dev/null +++ b/pkg/service/asChat/dto.go @@ -0,0 +1,130 @@ +// Package asChat ----------------------------- +// @file : dto.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2024/9/10 下午6:28 +// ------------------------------------------- +package asChat + +import ( + "encoding/json" + "fonchain-fiee/api/accountFiee" + "time" +) + +type Message struct { + MsgType accountFiee.MsgType `json:"msgType"` + Text string `json:"text"` //文本内容 + Media []MessageMedia `json:"media"` + LocalStamp int64 `json:"localStamp"` +} +type MessageMedia struct { + MediaId int64 `json:"mediaId"` //媒体文件id + MediaSize string `json:"mediaSize"` //媒体文件大小 + Ext string `json:"ext"` //后缀格式 + Url string `json:"url"` //文件地址 + ConvText string `json:"convText"` //语音转文字内容,需要调用语音转文字接口后才会有值 + Duration int64 `json:"duration"` //时长 单位:毫秒 +} + +// 客户端发送消息请求,使用api发送消息 +type NewMessageRequest struct { + Waiter bool `json:"waiter"` //是否是客服发送,客服没有userId + SessionId string `json:"sessionId"` + Message +} + +// 服务端接收到消息后,使用websocket发送给userId关联的客户端,通知客户端有新消息,然后调用接口获取消息 +type NewMessageNotice struct { + Name string `json:"name"` //名字 + UserId int64 `json:"userId"` //用户id + SessionId string `json:"sessionId"` + MessageId int64 `json:"messageId"` //消息id + //NewMsgTotal int64 `json:"newMsgTotal"` //新消息数量 + //Active bool `json:"active"` //是否在线 +} + +// 获取会话列表 +type SessionType struct { + NewMessageNotice + RecentMessage []*Message `json:"recentMessage"` //最近消息 +} + +type MessageListType struct { + ID int64 `json:"ID"` + CreatedAt string `json:"createdAt"` + UserId int64 `json:"userId"` + Name string `json:"name"` + Message Message `json:"message"` +} + +func (m *MessageListType) BuildMessage(data *accountFiee.ChatRecordData) { + m.ID = data.ID + m.CreatedAt = data.CreatedAt + m.UserId = data.UserId + m.Name = data.Name + switch data.MsgType { + case accountFiee.MsgType_TextMsgType: + m.Message = Message{ + MsgType: accountFiee.MsgType_TextMsgType, + Text: data.Content, + Media: []MessageMedia{}, + LocalStamp: data.LocalStamp, + } + case accountFiee.MsgType_ImageMsgType, accountFiee.MsgType_AudioMsgType, accountFiee.MsgType_VideoMsgType: + m.Message.MsgType = data.MsgType + m.Message.Text = data.Content + m.Message.LocalStamp = data.LocalStamp + if data.Medias != nil { + for _, media := range data.Medias { + m.Message.Media = append(m.Message.Media, MessageMedia{ + MediaId: media.ID, + MediaSize: media.Size, + Ext: media.Ext, + Url: media.Url, + ConvText: media.ConvText, + Duration: media.Duration, + }) + } + } + } +} +func (m *MessageListType) ToJson() string { + jsonBytes, _ := json.Marshal(m) + return string(jsonBytes) +} + +type UserMsgStatic struct { + UserId int64 `json:"userId"` //用户id + Name string `json:"name"` //名称 + ArtistUid string `json:"artistUid"` + SessionId string `json:"sessionId"` //会话id + Total int64 `json:"total"` //新消息数量 + //NewMessageTime string `json:"newMessageTime"` //最新消息的创建时间 +} + +type MessageListRequest struct { + SessionId string `json:"sessionId"` //不传则获取自己的会话消息里列表 + CurrentId int64 `json:"currentId"` //组合查询条件1:基于某个消息id,向前或向后查找。两种组合条件不能同时使用 + Direction int `json:"direction"` //组合查询条件1:方向 1=向前查找 2=向后查找 + Recent bool `json:"recent"` //组合查询条件2:查找最新的若干条消息。两种组合条件不能同时使用 + InHour time.Duration `json:"inHour"` //组合查询条件2:可选,查询指定小时内的数据 + PageSize int64 `json:"pageSize"` //查找数量 +} + +type VoiceToTextRequest struct { + MediaId int64 `json:"mediaId"` +} + +type ArtistInfoRequest struct { + UserId int64 `json:"userId"` +} +type ArtistInfo struct { + Tnum string `json:"tnum"` + ArtistName string `json:"artistName"` + Age int64 `json:"age"` + Sex string `json:"sex"` + NativePlace string `json:"nativePlace"` + TelNum string `json:"telNum"` + RecentPhoto string `json:"recentPhoto"` +} diff --git a/pkg/service/asChat/handler.go b/pkg/service/asChat/handler.go new file mode 100644 index 0000000..fb0e1a9 --- /dev/null +++ b/pkg/service/asChat/handler.go @@ -0,0 +1,577 @@ +// package asChat ----------------------------- +// @file : handler.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/23 11:13:43 +// ------------------------------------------- +package asChat + +import ( + "bytes" + "context" + "crypto/md5" + "encoding/hex" + "errors" + "fmt" + "fonchain-fiee/api/account" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/common/ws" + "fonchain-fiee/pkg/e" + "fonchain-fiee/pkg/logic" + "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/service/upload" + "fonchain-fiee/pkg/utils" + "github.com/fonchain/utils/voice" + "github.com/gin-gonic/gin" + "github.com/gorilla/websocket" + uuid "github.com/satori/go.uuid" + "go.uber.org/zap" + "io" + "log" + "path" + "slices" + "sort" + "strconv" + "strings" + "time" +) + +var ChatHandlerIns = ChatHandler{ + cache: ChatCache{newMessageStatExpireAfter: 10 * time.Minute}, +} + +type ChatHandler struct { + cache ChatCache +} + +func (cr ChatHandler) Connection(c *gin.Context) { + conn, err := ws.UpGrader.Upgrade(c.Writer, c.Request, nil) + conn.SetReadDeadline(time.Now().Add(time.Second * 10)) + if err != nil { + log.Fatal("无法升级为websocket连接", zap.Error(err)) + c.String(500, "无法转为websocket连接") + return + } + defer func() { + if conn != nil { + conn.Close() + } + }() + _, byteData, err := conn.ReadMessage() + if err != nil { + _ = conn.WriteMessage(websocket.TextMessage, ws.WsErrorConnection("null", err.Error(), "conn.ReadMessag1")) + return + } + fmt.Println("22222222222222,AuthorizationVerify") + var ok bool + var userInfo *accountFiee.ChatUserData + userInfo, ok, err = ws.AuthorizationVerify(byteData) + if err != nil { + _ = conn.WriteMessage(websocket.TextMessage, ws.WsErrorConnection("null", err.Error(), "AuthorizationVerify2")) + return + } + if !ok { + _ = conn.WriteMessage(websocket.TextMessage, ws.WsErrorConnection("null", "登录状态失效", "AuthorizationVerify2.1")) + return + } + fmt.Println("33333333333333,RecountNewMessageTotal") + conn.SetReadDeadline(time.Time{}) + go cr.cache.RecountNewMessageTotal(userInfo.ID) + + fmt.Println("44444444444444,ws.NewClient") + //注册ws客户端,并发送clientId给ws客户端 + var cli = ws.NewClient(userInfo.ID, "", conn, ChatRoom) + cli.Waiter = userInfo.Role == 2 + fmt.Println("55555555555555,GetUserSession") + //查询是否有历史的sessionId + cli.SessionId = cr.cache.GetUserSession(userInfo.ID) + ChatRoom.Register(cli) + cr.cache.SaveUserSession(userInfo.ID, cli.SessionId) + fmt.Println("66666666666666666666666666") + go cli.WriteWait() + cli.Send <- WsMessageRegisterCallback(cli.ClientId, cli.SessionId) + fmt.Println("777777777777777777777777") + // 处理websocket连接的逻辑 + ctx, _ := context.WithCancel(context.Background()) + cli.Reading(ctx, HandleMessage) + fmt.Println("88888888888888888888888888") + select { + case <-ctx.Done(): + return + } +} + +func (cr ChatHandler) NewMessage(c *gin.Context) { + var request NewMessageRequest + if err := c.ShouldBindJSON(&request); err != nil { + service.ErrorMsgI18n(c, e.InvalidParams, err.Error(), e.I18N_INVALID_PARAM) + return + } + if request.SessionId == "" { + service.ErrorMsgI18n(c, e.InvalidParams, "sessionId不能为空", e.I18N_INVALID_PARAM) + return + } + if request.MsgType == 0 { + service.ErrorMsgI18n(c, e.InvalidParams, "msgType不能为空", e.I18N_INVALID_PARAM) + return + } + fmt.Println("NewMessage 1111111111111111111111111111111") + //获取用户信息 + tokenResult := asAccount.GetUserInfoWithTokenV2(c) + if tokenResult.Err != nil { + service.ErrorMsgI18n(c, e.NotLogin, tokenResult.Err.Error(), e.I18N_NOTLOGIN) + return + } + fmt.Println("NewMessage 22222222222222222222222222222222222") + //存储入库 + var userName = "未知" + if request.Waiter { + accountDetail, err := service.AccountProvider.Info(c, &account.InfoRequest{ID: uint64(tokenResult.UserInfo.MgmtAccId), Domain: config.Domain}) + trace.AddTrace(c, "AccountProvider.Info", err) + if err != nil { + service.ErrorMsgI18n(c, e.Failed, err.Error(), e.I18N_USER_FOUND_FAILED) + return + } + userName = accountDetail.Info.NickName + } else { + if tokenResult.UserInfo.RealNameInfo != nil { + userName = tokenResult.UserInfo.RealNameInfo.Name + } + } + fmt.Println("NewMessage 3333333333333333333333333333333333") + var data = accountFiee.ChatRecordData{ + SessionId: request.SessionId, + UserId: tokenResult.UserInfo.ID, + Name: userName, + Avatar: "", + MsgType: request.MsgType, + Content: request.Message.Text, + LocalStamp: request.LocalStamp, + Medias: nil, + } + if len(request.Message.Media) > 0 { + for _, media := range request.Message.Media { + data.Medias = append(data.Medias, &accountFiee.ChatMediaData{ + ID: media.MediaId, + }) + } + } + fmt.Println("NewMessage 4444444444444444444444444444444444") + resp, err := service.AccountFieeProvider.CreateChatRecord(c, &data) + if err != nil { + service.Error(c, errors.New("创建失败")) + return + } + fmt.Printf("CreateChatRecord resp:%+v\n", resp) + //录入缓存 + err = cr.cache.AddChatRecord(request.SessionId, resp.Data) + if err != nil { + service.Error(c, errors.New("创建失败")) + return + } + fmt.Println("NewMessage 5 消息数量+1") + //新消息数量统计+1 + noticeUserId := ChatRoom.GetUserIdInSession(request.SessionId, tokenResult.UserInfo.ID) + fmt.Println("NewMessage 5.1 消息数量配置结束") + fmt.Printf("noticeUserId %+v\n", noticeUserId) + for _, userId := range noticeUserId { + fmt.Println("userId") + cr.cache.IncreaseNewMessageTotal(userId, request.SessionId) + } + fmt.Println("NewMessage 6") + //发送websocket消息提醒通知 + var notice = MessageListType{} + notice.BuildMessage(resp.Data) + fmt.Printf("ws消息提醒:%+v\n", notice) + _, err = ChatRoom.SendSessionMessage(tokenResult.UserInfo.ID, request.SessionId, ws.NewChatMsgType, notice) + if err != nil { + log.Fatal("发送新消息通知失败", zap.Error(err), zap.Any("notice", notice)) + } + fmt.Println("NewMessage 7 -end") + //发送app推送(无横幅推送) + go func() { + omitMessage := "" + switch request.MsgType { + case accountFiee.MsgType_TextMsgType: + runMsg := []rune(request.Text) + if len(runMsg) > 15 { + omitMessage = string(runMsg[:15]) + "..." + } else { + omitMessage = request.Text + } + case accountFiee.MsgType_ImageMsgType: + omitMessage = "[图片]" + case accountFiee.MsgType_AudioMsgType: + omitMessage = "[音频]" + case accountFiee.MsgType_VideoMsgType: + omitMessage = "[视频]" + default: + omitMessage = "新消息请查收" + } + for _, userId := range noticeUserId { + _ = asPusher.NewArtistinfoUniPush().NewChatMessageNotice(userId, omitMessage) + } + }() + service.Success(c) +} + +func (cr ChatHandler) MessageList(c *gin.Context) { + var request MessageListRequest + if err := c.ShouldBindJSON(&request); err != nil { + service.Error(c, err) + return + } + domain := c.GetHeader("domain") + if (request.Direction == 0 && request.Recent == false) || (request.Direction > 0 && request.Recent == true) { + service.Error(c, errors.New("组合条件校验失败")) + return + } + if request.SessionId == "" { + service.Error(c, errors.New("sessionId不能为空")) + return + } + if request.PageSize < -1 { + service.Error(c, errors.New("pageSize校验错误")) + return + } + var resp = make([]*MessageListType, 0) + if request.CurrentId == 0 && request.Direction == 1 { + service.Success(c, resp) + return + } + tokenResult := asAccount.GetUserInfoWithTokenV2(c) + if tokenResult.Err != nil { + service.ErrorWeb(c, e.NotLogin, tokenResult.Err.Error()) + return + } + //if request.SessionId == "" { + // request.SessionId = cr.cache.GetUserSession(tokenResult.UserInfo.ID) + // if request.SessionId == "" { + // service.Success(c, resp) + // return + // } + //} + //messages := cr.cache.GetChatRecord(request.SessionId) + messages := []*accountFiee.ChatRecordData{} + var returnDataIdList = make([]int64, 0) + defer func() { + //获取最新数据时,重置新消息数量统计 + if request.Direction == 2 || request.Recent { + cr.cache.ResetNewMessageTotal(tokenResult.UserInfo.ID, request.SessionId) + } + //设置消息已被客服阅读,当客服重新通过通过websocket连接时,这些消息将不被纳入新消息数量统计 + if len(returnDataIdList) > 0 && domain == "fontree" { + for _, hasReadId := range returnDataIdList { + for i, message := range messages { + if message.ID == hasReadId { + messages[i].WaiterRead = 1 + } + } + } + err := cr.cache.CoverChatRecord(request.SessionId, messages) + if err != nil { + log.Fatal("设置消息已读失败", zap.Error(err)) + } + for _, v := range messages { + _, err = service.AccountFieeProvider.SaveChatRecord(context.Background(), v) + if err != nil { + log.Fatal("设置消息已读失败", zap.Error(err)) + } + } + } + }() + if len(messages) == 0 { + //从数据库获取 + recordResp, err := service.AccountFieeProvider.GetChatRecordList(c, &accountFiee.GetChatRecordListRequest{ + Query: &accountFiee.ChatRecordData{SessionId: request.SessionId}, + Page: 1, + PageSize: -1, + //Where: fmt.Sprintf("id %s %d", utils.IfGec(request.Direction == 1, "<", ">"), request.CurrentId), + }) + if err != nil { + service.Error(c, err) + return + } + messages = recordResp.List + err = cr.cache.CoverChatRecord(request.SessionId, messages) + if err != nil { + log.Fatal("覆盖聊天记录失败", zap.Error(err)) + } + } + if request.Recent { + if int64(len(messages)) >= request.PageSize { + messages = messages[len(messages)-int(request.PageSize):] + } + var now = time.Now() + for _, message := range messages { + if request.InHour > 0 { + messageCreatedAt, _ := stime.StringToTime(message.CreatedAt) + if now.Sub(*messageCreatedAt) >= request.InHour*time.Hour { + continue + } + } + returnDataIdList = append(returnDataIdList, message.ID) + var msg = &MessageListType{} + msg.BuildMessage(message) + resp = append(resp, msg) + } + } else { + sort.Slice(messages, func(i, j int) bool { + if request.Direction == 1 { + return messages[i].ID < messages[j].ID + } else { + return messages[i].ID > messages[j].ID + } + }) + fmt.Printf("data is %+v\n", messages) + total := 0 + for i, message := range messages { + switch request.Direction { + case 1: //向下查找,找比CurrentId大的数据 + if message.ID <= request.CurrentId { + continue + } + case 2: //向上查找,找比CurrentId小的数据 + if message.ID >= request.CurrentId { + continue + } + } + message := message + fmt.Println(i, message.ID) + if request.PageSize != -1 && int64(total+1) > request.PageSize { + continue + } + total++ + returnDataIdList = append(returnDataIdList, message.ID) + var msg = &MessageListType{} + msg.BuildMessage(message) + resp = append(resp, msg) + } + } + //二次排序 + sort.Slice(resp, func(i, j int) bool { + return resp[i].ID < resp[j].ID + }) + //优化空列表 + for i, v := range resp { + if v.Message.Media == nil { + resp[i].Message.Media = []MessageMedia{} + } + } + service.Success(c, resp) +} + +func (cr ChatHandler) Upload(c *gin.Context) { + fmt.Println("111111111111") + //获取用户信息 + accInfo := asAccount.GetUserInfoWithTokenV2(c) + if accInfo.Err != nil { + service.Error(c, accInfo.Err.Error()) + return + } + //获取文件对象 + file, err := c.FormFile("file") + if err != nil { + log.Fatal("ERROR: upload file failed. ", zap.Error(err)) + return + } + duration := c.PostForm("duration") + fmt.Println(duration) + ext := c.PostForm("ext") + fileExt := strings.ToLower(path.Ext(file.Filename)) + if ext != "" { + fileExt = ext + } + fileType := e.DetectFileTypeByExtension(fileExt) + if fileType == e.Audio { + if !slices.Contains([]string{".mp4", ".aac", ".mp3", ".opus", ".wav"}, fileExt) { + service.Error(c, errors.New("不支持的格式")) + return + } + } + //计算md5 + tmp, err := file.Open() + if err != nil { + service.Error(c, errors.New("上传失败")) + return + } + fileContent, err := io.ReadAll(tmp) + if err != nil { + service.Error(c, errors.New("文件读取失败")) + return + } + hash := md5.New() + _, err = hash.Write(fileContent) + if err != nil { + service.Error(c, errors.New("文件读取失败")) + return + } + md5Bytes := hash.Sum(nil) // 获取 MD5 字节切片 + md5String := hex.EncodeToString(md5Bytes) // 转换为十六进制字符串表示 + //检查文件是否存在 + checkResp, err := service.AccountFieeProvider.GetChatMediaList(c, &accountFiee.GetChatMediaListRequest{Query: &accountFiee.ChatMediaData{Md5: md5String}, Page: 1, PageSize: 1}) + if err != nil { + log.Fatal("md5查询附件失败", zap.Error(err)) + } + if checkResp.Total > 0 { + service.Success(c, checkResp.List[0]) + return + } + + //文件不存在则上传文件 + filename, _ := uuid.NewV4() + defer tmp.Close() + fileBuffer := bytes.NewBuffer(fileContent) + var bosUrl string + bosUrl, err = upload.UploadWithBuffer(fileBuffer, fmt.Sprintf("%d/%v%v", accInfo.UserInfo.MgmtAccId, filename, fileExt)) + if err != nil { + service.Error(c, err) + return + } + //存到数据库 + var durationInt64, _ = strconv.ParseInt(duration, 10, 64) + var mediaData = accountFiee.ChatMediaData{ + Url: bosUrl, + Md5: md5String, + Size: fmt.Sprintf("%d", file.Size), + Ext: fileExt, + Duration: durationInt64, + } + resp, err := service.AccountFieeProvider.CreateChatMedia(c, &mediaData) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, resp.Data) +} + +func (cr ChatHandler) UserMessageStat(c *gin.Context) { + //获取用户信息 + tokenResult := asAccount.GetUserInfoWithTokenV2(c) + if tokenResult.Err != nil { + service.ErrorMsgI18n(c, e.NotLogin, tokenResult.Err.Error(), e.I18N_NOTLOGIN) + return + } + result := cr.cache.GetNewMessageStat(c, tokenResult.UserInfo.ID) + if len(result) == 0 { + service.Success(c, result) + return + } + fmt.Printf("cache stat:%+v\n", result) + //获取实名信息 + var protoReq = accountFiee.GetChatUserListRequest{ + Page: 1, + PageSize: int64(len(result)), + } + for i, item := range result { + if item.UserId == 0 { + sessionId, _ := strconv.Atoi(item.SessionId) + item.UserId = int64(sessionId) + result[i].UserId = int64(sessionId) + } + protoReq.UserIdIn = append(protoReq.UserIdIn, item.UserId) + } + fmt.Printf("protoReq.UserIdIn:%+v\n", protoReq.UserIdIn) + listRes, err := service.AccountFieeProvider.GetChatUserList(c, &protoReq) + if err != nil { + service.Error(c, err) + return + } + fmt.Printf("GetChatUserList:%+v\n", listRes) + for i, item := range result { + for _, user := range listRes.List { + if item.UserId == user.UserId { + user := user + result[i].Name = user.Name + result[i].ArtistUid = user.ArtistUid + break + } + } + if result[i].Name == "" { + result[i].Name = beautifulZeroName(result[i].Name, result[i].UserId) + } + } + reverse(result) + service.Success(c, result) +} +func reverse(slice []UserMsgStatic) { + for i, j := 0, len(slice)-1; i < j; i, j = i+1, j-1 { + slice[i], slice[j] = slice[j], slice[i] + } +} +func (cr ChatHandler) VoiceToText(c *gin.Context) { + var req VoiceToTextRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + detail, err := service.AccountFieeProvider.GetChatMediaDetail(c, &accountFiee.GetChatMediaByIdRequest{Id: req.MediaId}) + if err != nil { + service.Error(c, err) + return + } + if detail.ConvText != "" { + service.Success(c, map[string]string{"convText": detail.ConvText}) + return + } + voiceApi := voice.NewVoiceApi() + detail.ConvText, err = voiceApi.ToTextFromUrl(detail.Url) + if err != nil { + service.Error(c, errors.New("语音转文字失败")) + return + } + defer func() { + service.AccountFieeProvider.UpdateChatMedia(context.Background(), detail) + }() + service.Success(c, map[string]string{"convText": detail.ConvText}) +} + +func (cr ChatHandler) ArtistDetail(c *gin.Context) { + var req ArtistInfoRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + if req.UserId == 0 { + service.Success(c, ArtistInfo{}) + return + } + detail, err := service.GrpcArtistInfoUserImpl.FindUsersUserView(c, &artistInfoUser.FindUsersRequest{UserId: req.UserId}) + if err != nil { + service.Error(c, err) + return + } + var ( + tnum string + artistName string + age int64 + sex string + nativePlace string + telNum string + recentPhoto string + ) + if len(detail.Data) > 0 { + tnum = detail.Data[0].Tnum + artistName = beautifulZeroName(detail.Data[0].RealName, req.UserId) + age = detail.Data[0].Age + sex = detail.Data[0].Sex + nativePlace = detail.Data[0].NativePlace + telNum = detail.Data[0].TelNum + recentPhoto = detail.Data[0].Photo + } + resp := ArtistInfo{ + Tnum: tnum, + ArtistName: artistName, + Age: age, + Sex: sex, + NativePlace: nativePlace, + TelNum: telNum, + RecentPhoto: recentPhoto, + } + service.Success(c, resp) +} + +// 对没有名字的name进行优化 +func beautifulZeroName(name string, userId int64) string { + return utils.IfGec(name == "", fmt.Sprintf("未实名用户:%d", userId), name) +} diff --git a/pkg/service/asChat/readme.md b/pkg/service/asChat/readme.md new file mode 100644 index 0000000..d4e6aee --- /dev/null +++ b/pkg/service/asChat/readme.md @@ -0,0 +1,26 @@ +# asChat 客服聊天 + +## 聊天室主要流程与功能描述 +1. 用户通过画家包登录 +2. 打开客服页面。 画家宝客户端自动进行websocket连接,后台会自动创建一个默认聊天室(聊天室携带一个SessionId) +3. 用户调用api接口,发送消息。 服务端接收到消息后,会通过websocket通知聊天室里面所有用户。 +4. erp首次打开客服菜单时,会进行websocket连接,并调用一次api接口刷新消息列表。后续通过websocket接收消息推送,收到消息时,应主动调用一次消息列表刷新接口。 +5. erp客服端发送消息时,加入到此聊天室。 +6. 用户端调用api接口获取新消息列表。 + +## 客户端应具备的其它功能 +1. weboscket断开自动重连 +2. 当通过websocket接收到错误类型的消息,应具备对应的错误处理机制

+错误消息示例 +```json +{"type":1,"content":"Connection error:登录状态失效","from":"0","to":"null"} +``` + +## 服务端应具备的功能 +1. 通过redis缓存聊天消息 +2. 通过redis缓存用户的sessionId避免ws断开后,找不到之前的sessionId +3. 客服端由于不是画家宝用户,没有userId。在websocket连接时,如果找不到userId,应该为其在画家宝创建一个账号。且经纪人不可见。 +4. 由于没有创建聊天室的需求,所以每个用户使用一个聊天室即可。客服与之对话时,就自动加入用户端的聊天室 +5. 新消息统计 +- 当发送消息时,该聊天室中除了发信者以外,其它用户的新消息数都+1,录入缓存。 +- 当新客服人员加入时,没有新消息统计的缓存。~~他的新消息数量应该从创建时间开始计算~~,所以都是0。 \ No newline at end of file diff --git a/pkg/service/asChat/service.go b/pkg/service/asChat/service.go new file mode 100644 index 0000000..012b6bc --- /dev/null +++ b/pkg/service/asChat/service.go @@ -0,0 +1,46 @@ +// Package asChat ----------------------------- +// @file : service.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2024/9/10 下午7:05 +// ------------------------------------------- +package asChat + +import ( + "encoding/json" + "fonchain-fiee/pkg/common/ws" +) + +func HandleMessage(sourceData []byte, cli *ws.Client) { + var msg map[string]any + err := json.Unmarshal(sourceData, &msg) + if err != nil { + cli.Send <- ws.WsErrorInvalidDataFormat(cli.ClientId) + return + } + switch msg["type"] { + default: + cli.Send <- ws.WsErrorUnknownMessageType(cli.ClientId) + case ws.TestType: + var newMsg = ws.WsInfo{ + Type: ws.TestType, + Content: msg["content"], + } + byteMsg, _ := json.Marshal(newMsg) + cli.Send <- byteMsg + //case ws.ChatType: + // var chatInfo ChatInfo + // _ = json.Unmarshal(sourceData, &chatInfo) + // //解析Content + // if clients, ok := cli.Room.clients[chatInfo.Content.TargetUserId]; ok { + // for _, targetObj := range clients { + // if targetObj != nil { + // targetObj.Send <- WsChatMessage(msg.From, chatInfo.Content.TargetClientId, chatInfo.Content.Msg) + // } + // } + // } else { + // //对方不在线 + // cli.Send <- WsErrorMessage(ChatType, msg.From, e.ErrTargetOutLine, nil) + // } + } +} diff --git a/pkg/service/upload/upload.go b/pkg/service/upload/upload.go index 8c7b82a..45d8951 100644 --- a/pkg/service/upload/upload.go +++ b/pkg/service/upload/upload.go @@ -329,3 +329,18 @@ func GetSnapshot(videoPath, snapshotPath string, frameNum int) (snapshotName str snapshotName = names[len(names)-1] + "." + PngType return } + +func UploadWithBuffer(fileBuffer *bytes.Buffer, cloudStoreSubPath string) (url string, err error) { + Client, err := objstorage.NewOSS(config.ConfigData.Oss.AccessKeyId, config.ConfigData.Oss.AccessKeySecret, config.ConfigData.Oss.Endpoint) + if err != nil { + err = errors.New(fmt.Sprintf("云存储初始化失败:%s", err.Error())) + return + } + cloudStoreSubPath = getEnvDir(cloudStoreSubPath) + _, err = Client.PutObjectFromBytes(config.ConfigData.Oss.BucketName, cloudStoreSubPath, fileBuffer.Bytes()) + return +} +func getEnvDir(cloudStoreSubPath string) (ep string) { + ep, _ = url.JoinPath("fiee", cloudStoreSubPath) + return ep +} diff --git a/pkg/utils/if.go b/pkg/utils/if.go new file mode 100644 index 0000000..c1893ef --- /dev/null +++ b/pkg/utils/if.go @@ -0,0 +1,47 @@ +/* + * @FileName: if.go + * @Author: JJXu + * @CreateTime: 2022/3/31 下午10:34 + * @Description: + */ + +package utils + +import "strings" + +func If(condition bool, trueVal, falseVal interface{}) interface{} { + if condition { + return trueVal + } + return falseVal +} +func IfGec[T ~string | ~int | ~int32 | ~int64 | ~bool | ~float32 | ~float64](condition bool, trueVal, falseVal T) T { + if condition { + return trueVal + } + return falseVal +} + +// IsValueInList 值是否在列表中 +// value:查询的值 +// list: 列表 +// disableStrictCase: 禁用严格大小写检查。默认是严格大小写 +func IsValueInList(value string, list []string, disableStrictCase ...bool) bool { + var disStrictCase bool + if disableStrictCase != nil { + disStrictCase = disableStrictCase[0] + } + for _, v := range list { + var listValue string + if disStrictCase { + listValue = strings.ToLower(v) + value = strings.ToLower(v) + } else { + listValue = v + } + if listValue == value { + return true + } + } + return false +} diff --git a/pkg/utils/unqiue.go b/pkg/utils/unqiue.go new file mode 100644 index 0000000..6a3b603 --- /dev/null +++ b/pkg/utils/unqiue.go @@ -0,0 +1,19 @@ +// Package utils ----------------------------- +// @file : unqiue.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2024/9/12 下午5:03 +// ------------------------------------------- +package utils + +func Unique[T int | int8 | int32 | int64 | string](slice []T) []T { + seen := make(map[T]bool) // 创建一个 map 来跟踪已经看到的元素 + unique := make([]T, 0) // 创建一个新的切片来存储唯一的元素 + for _, v := range slice { + if _, ok := seen[v]; !ok { + seen[v] = true // 标记元素为已见 + unique = append(unique, v) // 将元素添加到唯一元素切片中 + } + } + return unique +}