diff --git a/service/apisvr/http/swagger.json b/service/apisvr/http/swagger.json index ceb8a46b5..72eab7d3b 100644 --- a/service/apisvr/http/swagger.json +++ b/service/apisvr/http/swagger.json @@ -5725,7 +5725,7 @@ "title": "返回的消息" }, "data": { - "$ref": "#/definitions/UserDeviceShareMultiInfo" + "$ref": "#/definitions/UserDeviceShareMultiIndexResp" } } } @@ -8798,6 +8798,35 @@ "payload" ] }, + "DeviceShareInfo": { + "type": "object", + "properties": { + "productID": { + "type": "string", + "description": "产品ID" + }, + "productName": { + "type": "string" + }, + "productImg": { + "type": "string", + "description": "产品图片" + }, + "deviceName": { + "type": "string", + "description": "设备名称" + }, + "deviceAlias": { + "type": "string", + "description": "设备别名 读写" + } + }, + "title": "DeviceShareInfo", + "required": [ + "productID", + "deviceName" + ] + }, "FirmwareCreateReq": { "type": "object", "properties": { @@ -12462,6 +12491,41 @@ }, "title": "UserDeviceShareMultiDeleteReq" }, + "UserDeviceShareMultiIndexResp": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "$ref": "#/definitions/DeviceShareInfo" + }, + "description": "批量设备信息" + }, + "authType": { + "type": "integer", + "format": "int64", + "description": "授权类型:1:全部授权 2:部分授权" + }, + "schemaPerm": { + "type": "object", + "description": "普通功能权限 2:读写权限 3读权限" + }, + "accessPerm": { + "type": "object", + "description": "系统功能权限 2:读写权限 3读权限" + }, + "expTime": { + "type": "integer", + "format": "int64", + "description": "到期时间" + }, + "createdTime": { + "type": "integer", + "format": "int64" + } + }, + "title": "UserDeviceShareMultiIndexResp" + }, "UserDeviceShareMultiInfo": { "type": "object", "properties": { diff --git a/service/apisvr/http/things/user/device.api b/service/apisvr/http/things/user/device.api index 3e588fea8..bbd037a76 100644 --- a/service/apisvr/http/things/user/device.api +++ b/service/apisvr/http/things/user/device.api @@ -43,7 +43,7 @@ service api { post /multi-create (UserDeviceShareMultiInfo) returns (UserDeviceShareMultiToken) @doc "获取批量分享的设备列表" @handler multiIndex - post /multi-index (UserDeviceShareMultiToken) returns (UserDeviceShareMultiInfo) + post /multi-index (UserDeviceShareMultiToken) returns (UserDeviceShareMultiIndexResp) @doc "接受批量分享设备" @handler multiAccept post /multi-accept (UserDeviceShareMultiAcceptInfo) returns () @@ -111,6 +111,21 @@ type ( List []*UserDeviceShareInfo `json:"list,optional"` Total int64 `json:"total,optional"` } + UserDeviceShareMultiIndexResp{ + Devices []*DeviceShareInfo `json:"devices,optional"` //批量设备信息 + AuthType int64 `json:"authType,optional"`//授权类型:1:全部授权 2:部分授权 + SchemaPerm map[string ]*SharePerm `json:"schemaPerm,optional"`//普通功能权限 2:读写权限 3读权限 + AccessPerm map[string ]*SharePerm `json:"accessPerm,optional"`//系统功能权限 2:读写权限 3读权限 + ExpTime int64 `json:"expTime,optional"` //到期时间 + CreatedTime int64 `json:"createdTime,optional"` + } + DeviceShareInfo{ + ProductID string `json:"productID"` //产品ID + ProductName string `json:"productName,optional,omitempty"` + ProductImg string `json:"productImg,optional,omitempty"` //产品图片 + DeviceName string `json:"deviceName"` //设备名称 + DeviceAlias string `json:"deviceAlias,optional"` //设备别名 读写 + } ) type ( diff --git a/service/apisvr/internal/logic/things/user/device/share/assemble.go b/service/apisvr/internal/logic/things/user/device/share/assemble.go index 2fa8e0a77..c50f93c00 100644 --- a/service/apisvr/internal/logic/things/user/device/share/assemble.go +++ b/service/apisvr/internal/logic/things/user/device/share/assemble.go @@ -55,9 +55,15 @@ func ToMuitlSharePb(in *types.UserDeviceShareMultiInfo) *dm.UserDeviceShareMulti if in == nil { return nil } - devices := in.Devices + var dvs []*dm.DeviceShareInfo + for _, v := range in.Devices { + dvs = append(dvs, &dm.DeviceShareInfo{ + DeviceName: v.DeviceName, + ProductID: v.ProductID, + }) + } return &dm.UserDeviceShareMultiInfo{ - Devices: ToSharesDevices(devices), + Devices: dvs, AuthType: in.AuthType, ExpTime: in.ExpTime, AccessPerm: utils.CopyMap[dm.SharePerm](in.AccessPerm), @@ -73,18 +79,21 @@ func ToSharesDevices(in []*types.DeviceCore) (ret []*dm.DeviceCore) { } return ret } -func ToMultiShareTypes(in *dm.UserDeviceShareMultiInfo) *types.UserDeviceShareMultiInfo { +func ToMultiShareTypes(in *dm.UserDeviceShareMultiInfo) *types.UserDeviceShareMultiIndexResp { if in == nil { return nil } - var dvs []*types.DeviceCore + var dvs []*types.DeviceShareInfo for _, v := range in.Devices { - dvs = append(dvs, &types.DeviceCore{ - DeviceName: v.DeviceName, - ProductID: v.ProductID, + dvs = append(dvs, &types.DeviceShareInfo{ + DeviceName: v.DeviceName, + ProductID: v.ProductID, + ProductName: v.ProductName, + DeviceAlias: v.DeviceAlias.GetValue(), + ProductImg: v.ProductImg, }) } - return &types.UserDeviceShareMultiInfo{ + return &types.UserDeviceShareMultiIndexResp{ Devices: dvs, AuthType: in.AuthType, CreatedTime: in.CreatedTime, diff --git a/service/apisvr/internal/logic/things/user/device/share/multiIndexLogic.go b/service/apisvr/internal/logic/things/user/device/share/multiIndexLogic.go index 434850dca..b9202f010 100644 --- a/service/apisvr/internal/logic/things/user/device/share/multiIndexLogic.go +++ b/service/apisvr/internal/logic/things/user/device/share/multiIndexLogic.go @@ -25,8 +25,7 @@ func NewMultiIndexLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MultiI } } -func (l *MultiIndexLogic) MultiIndex(req *types.UserDeviceShareMultiToken) (resp *types.UserDeviceShareMultiInfo, err error) { - +func (l *MultiIndexLogic) MultiIndex(req *types.UserDeviceShareMultiToken) (resp *types.UserDeviceShareMultiIndexResp, err error) { ret, err := l.svcCtx.UserDevice.UserDeivceShareMultiIndex(l.ctx, &dm.UserDeviceShareMultiToken{ShareToken: req.ShareToken}) if err != nil { return nil, err diff --git a/service/apisvr/internal/types/types.go b/service/apisvr/internal/types/types.go index 6f7455842..6194f5336 100644 --- a/service/apisvr/internal/types/types.go +++ b/service/apisvr/internal/types/types.go @@ -759,6 +759,14 @@ type DeviceRegisterResp struct { Payload string `json:"payload"` } +type DeviceShareInfo struct { + ProductID string `json:"productID"` //产品ID + ProductName string `json:"productName,optional,omitempty"` + ProductImg string `json:"productImg,optional,omitempty"` //产品图片 + DeviceName string `json:"deviceName"` //设备名称 + DeviceAlias string `json:"deviceAlias,optional"` //设备别名 读写 +} + type FirmwareCreateReq struct { ProductID string `json:"productID"` Name string `json:"name"` @@ -1653,6 +1661,15 @@ type UserDeviceShareMultiDeleteReq struct { ProjectID int64 `json:"projectID,optional"` } +type UserDeviceShareMultiIndexResp struct { + Devices []*DeviceShareInfo `json:"devices,optional"` //批量设备信息 + AuthType int64 `json:"authType,optional"` //授权类型:1:全部授权 2:部分授权 + SchemaPerm map[string]*SharePerm `json:"schemaPerm,optional"` //普通功能权限 2:读写权限 3读权限 + AccessPerm map[string]*SharePerm `json:"accessPerm,optional"` //系统功能权限 2:读写权限 3读权限 + ExpTime int64 `json:"expTime,optional"` //到期时间 + CreatedTime int64 `json:"createdTime,optional"` +} + type UserDeviceShareMultiInfo struct { Devices []*DeviceCore `json:"devices,optional"` //批量设备信息 AuthType int64 `json:"authType,optional"` //授权类型:1:全部授权 2:部分授权 diff --git a/service/dmsvr/client/devicegroup/deviceGroup.go b/service/dmsvr/client/devicegroup/deviceGroup.go index 2fa03b64f..3eb3f8d0b 100644 --- a/service/dmsvr/client/devicegroup/deviceGroup.go +++ b/service/dmsvr/client/devicegroup/deviceGroup.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/deviceinteract/deviceInteract.go b/service/dmsvr/client/deviceinteract/deviceInteract.go index 920c31249..09802c930 100644 --- a/service/dmsvr/client/deviceinteract/deviceInteract.go +++ b/service/dmsvr/client/deviceinteract/deviceInteract.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/devicemanage/deviceManage.go b/service/dmsvr/client/devicemanage/deviceManage.go index bc4b6db8f..261904278 100644 --- a/service/dmsvr/client/devicemanage/deviceManage.go +++ b/service/dmsvr/client/devicemanage/deviceManage.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/devicemsg/deviceMsg.go b/service/dmsvr/client/devicemsg/deviceMsg.go index b490cc5ba..0474e44e3 100644 --- a/service/dmsvr/client/devicemsg/deviceMsg.go +++ b/service/dmsvr/client/devicemsg/deviceMsg.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/otamanage/otaManage.go b/service/dmsvr/client/otamanage/otaManage.go index 5c9e78f52..ceb23ba44 100644 --- a/service/dmsvr/client/otamanage/otaManage.go +++ b/service/dmsvr/client/otamanage/otaManage.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/productmanage/productManage.go b/service/dmsvr/client/productmanage/productManage.go index 7310b3a0f..bbae1b0f6 100644 --- a/service/dmsvr/client/productmanage/productManage.go +++ b/service/dmsvr/client/productmanage/productManage.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/protocolmanage/protocolManage.go b/service/dmsvr/client/protocolmanage/protocolManage.go index 7aa2c288b..5684569e5 100644 --- a/service/dmsvr/client/protocolmanage/protocolManage.go +++ b/service/dmsvr/client/protocolmanage/protocolManage.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/remoteconfig/remoteConfig.go b/service/dmsvr/client/remoteconfig/remoteConfig.go index 45a012d2d..c5147d4be 100644 --- a/service/dmsvr/client/remoteconfig/remoteConfig.go +++ b/service/dmsvr/client/remoteconfig/remoteConfig.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/schemamanage/schemaManage.go b/service/dmsvr/client/schemamanage/schemaManage.go index a6fe39977..c89d3a6de 100644 --- a/service/dmsvr/client/schemamanage/schemaManage.go +++ b/service/dmsvr/client/schemamanage/schemaManage.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/client/userdevice/userDevice.go b/service/dmsvr/client/userdevice/userDevice.go index 2c243bb93..7c74834d2 100644 --- a/service/dmsvr/client/userdevice/userDevice.go +++ b/service/dmsvr/client/userdevice/userDevice.go @@ -60,6 +60,7 @@ type ( DeviceProfileIndexReq = dm.DeviceProfileIndexReq DeviceProfileIndexResp = dm.DeviceProfileIndexResp DeviceProfileReadReq = dm.DeviceProfileReadReq + DeviceShareInfo = dm.DeviceShareInfo DeviceTransferReq = dm.DeviceTransferReq DeviceTypeCountReq = dm.DeviceTypeCountReq DeviceTypeCountResp = dm.DeviceTypeCountResp diff --git a/service/dmsvr/internal/logic/userdevice/userDeivceShareMultiIndexLogic.go b/service/dmsvr/internal/logic/userdevice/userDeivceShareMultiIndexLogic.go index aa1e62ac0..d2a369d1f 100644 --- a/service/dmsvr/internal/logic/userdevice/userDeivceShareMultiIndexLogic.go +++ b/service/dmsvr/internal/logic/userdevice/userDeivceShareMultiIndexLogic.go @@ -24,6 +24,7 @@ func NewUserDeivceShareMultiIndexLogic(ctx context.Context, svcCtx *svc.ServiceC } // 扫码后获取设备列表 +// 如果有分页需求,在前端处理 func (l *UserDeivceShareMultiIndexLogic) UserDeivceShareMultiIndex(in *dm.UserDeviceShareMultiToken) (*dm.UserDeviceShareMultiInfo, error) { resp, err := l.svcCtx.UserMultiDeviceShare.GetData(l.ctx, in.ShareToken) return resp, err diff --git a/service/dmsvr/internal/logic/userdevice/userDeviceShareMultiCreateLogic.go b/service/dmsvr/internal/logic/userdevice/userDeviceShareMultiCreateLogic.go index 0daa4d803..cc5ac9763 100644 --- a/service/dmsvr/internal/logic/userdevice/userDeviceShareMultiCreateLogic.go +++ b/service/dmsvr/internal/logic/userdevice/userDeviceShareMultiCreateLogic.go @@ -29,7 +29,6 @@ func NewUserDeviceShareMultiCreateLogic(ctx context.Context, svcCtx *svc.Service } } -// rpc userDeviceOtaGetVersion(UserDeviceOtaGetVersionReq)returns(userDeviceOtaGetVersionResp); func (l *UserDeviceShareMultiCreateLogic) UserDeviceShareMultiCreate(in *dm.UserDeviceShareMultiInfo) (*dm.UserDeviceShareMultiToken, error) { // 写入caches shareToken, _ := uuid.GenerateUUID() @@ -58,9 +57,24 @@ func (l *UserDeviceShareMultiCreateLogic) UserDeviceShareMultiCreate(in *dm.User return nil, errors.Permissions.AddMsg("您无权分享所选的设备") } } + d.DeviceAlias = di.DeviceAlias + d.ProductName = di.ProductName + d.ProductImg = di.ProductImg } } } + for _, d := range in.Devices { + //补全设备信息 + if d.ProductImg == "" { + di, _ := l.svcCtx.DeviceCache.GetData(l.ctx, devices.Core{ + ProductID: d.ProductID, + DeviceName: d.DeviceName, + }) + d.DeviceAlias = di.DeviceAlias + d.ProductName = di.ProductName + d.ProductImg = di.ProductImg + } + } l.svcCtx.UserMultiDeviceShare.SetData(l.ctx, shareToken, in) return &dm.UserDeviceShareMultiToken{ShareToken: shareToken}, nil } diff --git a/service/dmsvr/internal/repo/relationDB/userDeviceShare.go b/service/dmsvr/internal/repo/relationDB/userDeviceShare.go index fb15e5c54..12331c558 100644 --- a/service/dmsvr/internal/repo/relationDB/userDeviceShare.go +++ b/service/dmsvr/internal/repo/relationDB/userDeviceShare.go @@ -2,6 +2,7 @@ package relationDB import ( "context" + "gitee.com/unitedrhino/share/devices" "gitee.com/unitedrhino/share/stores" "gorm.io/gorm" @@ -73,6 +74,7 @@ func (p UserDeviceShareRepo) fmtFilter(ctx context.Context, f UserDeviceShareFil } func (p UserDeviceShareRepo) Insert(ctx context.Context, data *DmUserDeviceShare) error { + result := p.db.WithContext(ctx).Create(data) return stores.ErrFmt(result.Error) } diff --git a/service/dmsvr/pb/dm/dm.pb.go b/service/dmsvr/pb/dm/dm.pb.go index d50a5f491..e9c8e8e5d 100644 --- a/service/dmsvr/pb/dm/dm.pb.go +++ b/service/dmsvr/pb/dm/dm.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v3.19.4 +// protoc-gen-go v1.28.1 +// protoc v3.18.0 // source: proto/dm.proto //import "proto/schemaInfo.proto"; @@ -123,7 +123,7 @@ type PageInfo struct { Page int64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` - // 排序信息 + //排序信息 Orders []*PageInfo_OrderBy `protobuf:"bytes,3,rep,name=orders,proto3" json:"orders,omitempty"` } @@ -846,7 +846,7 @@ type ProductInitReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repeated string initType =1;//thing:物模型 + // repeated string initType =1;//thing:物模型 ProductIDs []string `protobuf:"bytes,2,rep,name=productIDs,proto3" json:"productIDs,omitempty"` //产品id,不填初始化所有产品 } @@ -1717,12 +1717,91 @@ func (x *SharePerm) GetPerm() int64 { return 0 } +type DeviceShareInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProductID string `protobuf:"bytes,1,opt,name=productID,proto3" json:"productID,omitempty"` //产品id + ProductName string `protobuf:"bytes,4,opt,name=productName,proto3" json:"productName,omitempty"` //产品名称 只读 + DeviceName string `protobuf:"bytes,2,opt,name=deviceName,proto3" json:"deviceName,omitempty"` //设备名称 + ProductImg string `protobuf:"bytes,3,opt,name=productImg,proto3" json:"productImg,omitempty"` //产品图片 + DeviceAlias *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=deviceAlias,proto3" json:"deviceAlias,omitempty"` //设备别名 读写 +} + +func (x *DeviceShareInfo) Reset() { + *x = DeviceShareInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_dm_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeviceShareInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeviceShareInfo) ProtoMessage() {} + +func (x *DeviceShareInfo) ProtoReflect() protoreflect.Message { + mi := &file_proto_dm_proto_msgTypes[27] + 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 DeviceShareInfo.ProtoReflect.Descriptor instead. +func (*DeviceShareInfo) Descriptor() ([]byte, []int) { + return file_proto_dm_proto_rawDescGZIP(), []int{27} +} + +func (x *DeviceShareInfo) GetProductID() string { + if x != nil { + return x.ProductID + } + return "" +} + +func (x *DeviceShareInfo) GetProductName() string { + if x != nil { + return x.ProductName + } + return "" +} + +func (x *DeviceShareInfo) GetDeviceName() string { + if x != nil { + return x.DeviceName + } + return "" +} + +func (x *DeviceShareInfo) GetProductImg() string { + if x != nil { + return x.ProductImg + } + return "" +} + +func (x *DeviceShareInfo) GetDeviceAlias() *wrapperspb.StringValue { + if x != nil { + return x.DeviceAlias + } + return nil +} + type UserDeviceShareMultiInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Devices []*DeviceCore `protobuf:"bytes,1,rep,name=devices,proto3" json:"devices,omitempty"` //设备信息 + Devices []*DeviceShareInfo `protobuf:"bytes,1,rep,name=devices,proto3" json:"devices,omitempty"` //设备信息 SchemaPerm map[string]*SharePerm `protobuf:"bytes,2,rep,name=schemaPerm,proto3" json:"schemaPerm,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //物模型权限,只需要填写需要授权并授权的物模型id AccessPerm map[string]*SharePerm `protobuf:"bytes,3,rep,name=accessPerm,proto3" json:"accessPerm,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //操作权限 hubLog:设备消息记录,ota:ota升级权限,deviceTiming:设备定时 AuthType int64 `protobuf:"varint,4,opt,name=authType,proto3" json:"authType,omitempty"` //授权类型:1:全部授权 2:部分授权 @@ -1735,7 +1814,7 @@ type UserDeviceShareMultiInfo struct { func (x *UserDeviceShareMultiInfo) Reset() { *x = UserDeviceShareMultiInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[27] + mi := &file_proto_dm_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +1827,7 @@ func (x *UserDeviceShareMultiInfo) String() string { func (*UserDeviceShareMultiInfo) ProtoMessage() {} func (x *UserDeviceShareMultiInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[27] + mi := &file_proto_dm_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,10 +1840,10 @@ func (x *UserDeviceShareMultiInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use UserDeviceShareMultiInfo.ProtoReflect.Descriptor instead. func (*UserDeviceShareMultiInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{27} + return file_proto_dm_proto_rawDescGZIP(), []int{28} } -func (x *UserDeviceShareMultiInfo) GetDevices() []*DeviceCore { +func (x *UserDeviceShareMultiInfo) GetDevices() []*DeviceShareInfo { if x != nil { return x.Devices } @@ -1831,7 +1910,7 @@ type UserDeviceShareMultiToken struct { func (x *UserDeviceShareMultiToken) Reset() { *x = UserDeviceShareMultiToken{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[28] + mi := &file_proto_dm_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1844,7 +1923,7 @@ func (x *UserDeviceShareMultiToken) String() string { func (*UserDeviceShareMultiToken) ProtoMessage() {} func (x *UserDeviceShareMultiToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[28] + mi := &file_proto_dm_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1857,7 +1936,7 @@ func (x *UserDeviceShareMultiToken) ProtoReflect() protoreflect.Message { // Deprecated: Use UserDeviceShareMultiToken.ProtoReflect.Descriptor instead. func (*UserDeviceShareMultiToken) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{28} + return file_proto_dm_proto_rawDescGZIP(), []int{29} } func (x *UserDeviceShareMultiToken) GetShareToken() string { @@ -1881,7 +1960,7 @@ type UserDeviceShareMultiAcceptReq struct { func (x *UserDeviceShareMultiAcceptReq) Reset() { *x = UserDeviceShareMultiAcceptReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[29] + mi := &file_proto_dm_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1894,7 +1973,7 @@ func (x *UserDeviceShareMultiAcceptReq) String() string { func (*UserDeviceShareMultiAcceptReq) ProtoMessage() {} func (x *UserDeviceShareMultiAcceptReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[29] + mi := &file_proto_dm_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1907,7 +1986,7 @@ func (x *UserDeviceShareMultiAcceptReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UserDeviceShareMultiAcceptReq.ProtoReflect.Descriptor instead. func (*UserDeviceShareMultiAcceptReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{29} + return file_proto_dm_proto_rawDescGZIP(), []int{30} } func (x *UserDeviceShareMultiAcceptReq) GetShareToken() string { @@ -1949,7 +2028,7 @@ type UserDeviceCollectSave struct { func (x *UserDeviceCollectSave) Reset() { *x = UserDeviceCollectSave{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[30] + mi := &file_proto_dm_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1962,7 +2041,7 @@ func (x *UserDeviceCollectSave) String() string { func (*UserDeviceCollectSave) ProtoMessage() {} func (x *UserDeviceCollectSave) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[30] + mi := &file_proto_dm_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1975,7 +2054,7 @@ func (x *UserDeviceCollectSave) ProtoReflect() protoreflect.Message { // Deprecated: Use UserDeviceCollectSave.ProtoReflect.Descriptor instead. func (*UserDeviceCollectSave) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{30} + return file_proto_dm_proto_rawDescGZIP(), []int{31} } func (x *UserDeviceCollectSave) GetDevices() []*DeviceCore { @@ -2005,7 +2084,7 @@ type ProductCategory struct { func (x *ProductCategory) Reset() { *x = ProductCategory{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[31] + mi := &file_proto_dm_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2018,7 +2097,7 @@ func (x *ProductCategory) String() string { func (*ProductCategory) ProtoMessage() {} func (x *ProductCategory) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[31] + mi := &file_proto_dm_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2031,7 +2110,7 @@ func (x *ProductCategory) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductCategory.ProtoReflect.Descriptor instead. func (*ProductCategory) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{31} + return file_proto_dm_proto_rawDescGZIP(), []int{32} } func (x *ProductCategory) GetId() int64 { @@ -2115,7 +2194,7 @@ type ProductCategorySchemaIndexResp struct { func (x *ProductCategorySchemaIndexResp) Reset() { *x = ProductCategorySchemaIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[32] + mi := &file_proto_dm_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2128,7 +2207,7 @@ func (x *ProductCategorySchemaIndexResp) String() string { func (*ProductCategorySchemaIndexResp) ProtoMessage() {} func (x *ProductCategorySchemaIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[32] + mi := &file_proto_dm_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2141,7 +2220,7 @@ func (x *ProductCategorySchemaIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductCategorySchemaIndexResp.ProtoReflect.Descriptor instead. func (*ProductCategorySchemaIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{32} + return file_proto_dm_proto_rawDescGZIP(), []int{33} } func (x *ProductCategorySchemaIndexResp) GetIdentifiers() []string { @@ -2163,7 +2242,7 @@ type ProductCategorySchemaIndexReq struct { func (x *ProductCategorySchemaIndexReq) Reset() { *x = ProductCategorySchemaIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[33] + mi := &file_proto_dm_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2176,7 +2255,7 @@ func (x *ProductCategorySchemaIndexReq) String() string { func (*ProductCategorySchemaIndexReq) ProtoMessage() {} func (x *ProductCategorySchemaIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[33] + mi := &file_proto_dm_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2189,7 +2268,7 @@ func (x *ProductCategorySchemaIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductCategorySchemaIndexReq.ProtoReflect.Descriptor instead. func (*ProductCategorySchemaIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{33} + return file_proto_dm_proto_rawDescGZIP(), []int{34} } func (x *ProductCategorySchemaIndexReq) GetProductCategoryID() int64 { @@ -2218,7 +2297,7 @@ type ProductCategorySchemaMultiSaveReq struct { func (x *ProductCategorySchemaMultiSaveReq) Reset() { *x = ProductCategorySchemaMultiSaveReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[34] + mi := &file_proto_dm_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2231,7 +2310,7 @@ func (x *ProductCategorySchemaMultiSaveReq) String() string { func (*ProductCategorySchemaMultiSaveReq) ProtoMessage() {} func (x *ProductCategorySchemaMultiSaveReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[34] + mi := &file_proto_dm_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2244,7 +2323,7 @@ func (x *ProductCategorySchemaMultiSaveReq) ProtoReflect() protoreflect.Message // Deprecated: Use ProductCategorySchemaMultiSaveReq.ProtoReflect.Descriptor instead. func (*ProductCategorySchemaMultiSaveReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{34} + return file_proto_dm_proto_rawDescGZIP(), []int{35} } func (x *ProductCategorySchemaMultiSaveReq) GetProductCategoryID() int64 { @@ -2276,7 +2355,7 @@ type ProductCategoryIndexReq struct { func (x *ProductCategoryIndexReq) Reset() { *x = ProductCategoryIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[35] + mi := &file_proto_dm_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2289,7 +2368,7 @@ func (x *ProductCategoryIndexReq) String() string { func (*ProductCategoryIndexReq) ProtoMessage() {} func (x *ProductCategoryIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[35] + mi := &file_proto_dm_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2302,7 +2381,7 @@ func (x *ProductCategoryIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductCategoryIndexReq.ProtoReflect.Descriptor instead. func (*ProductCategoryIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{35} + return file_proto_dm_proto_rawDescGZIP(), []int{36} } func (x *ProductCategoryIndexReq) GetPage() *PageInfo { @@ -2352,7 +2431,7 @@ type ProductCategoryIndexResp struct { func (x *ProductCategoryIndexResp) Reset() { *x = ProductCategoryIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[36] + mi := &file_proto_dm_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2365,7 +2444,7 @@ func (x *ProductCategoryIndexResp) String() string { func (*ProductCategoryIndexResp) ProtoMessage() {} func (x *ProductCategoryIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[36] + mi := &file_proto_dm_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2378,7 +2457,7 @@ func (x *ProductCategoryIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductCategoryIndexResp.ProtoReflect.Descriptor instead. func (*ProductCategoryIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{36} + return file_proto_dm_proto_rawDescGZIP(), []int{37} } func (x *ProductCategoryIndexResp) GetList() []*ProductCategory { @@ -2410,7 +2489,7 @@ type ProtocolInfoIndexReq struct { func (x *ProtocolInfoIndexReq) Reset() { *x = ProtocolInfoIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[37] + mi := &file_proto_dm_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2423,7 +2502,7 @@ func (x *ProtocolInfoIndexReq) String() string { func (*ProtocolInfoIndexReq) ProtoMessage() {} func (x *ProtocolInfoIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[37] + mi := &file_proto_dm_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2436,7 +2515,7 @@ func (x *ProtocolInfoIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolInfoIndexReq.ProtoReflect.Descriptor instead. func (*ProtocolInfoIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{37} + return file_proto_dm_proto_rawDescGZIP(), []int{38} } func (x *ProtocolInfoIndexReq) GetPage() *PageInfo { @@ -2486,7 +2565,7 @@ type ProtocolInfoIndexResp struct { func (x *ProtocolInfoIndexResp) Reset() { *x = ProtocolInfoIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[38] + mi := &file_proto_dm_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2499,7 +2578,7 @@ func (x *ProtocolInfoIndexResp) String() string { func (*ProtocolInfoIndexResp) ProtoMessage() {} func (x *ProtocolInfoIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[38] + mi := &file_proto_dm_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2512,7 +2591,7 @@ func (x *ProtocolInfoIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolInfoIndexResp.ProtoReflect.Descriptor instead. func (*ProtocolInfoIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{38} + return file_proto_dm_proto_rawDescGZIP(), []int{39} } func (x *ProtocolInfoIndexResp) GetList() []*ProtocolInfo { @@ -2541,7 +2620,7 @@ type ProtocolServiceIndexReq struct { func (x *ProtocolServiceIndexReq) Reset() { *x = ProtocolServiceIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[39] + mi := &file_proto_dm_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2554,7 +2633,7 @@ func (x *ProtocolServiceIndexReq) String() string { func (*ProtocolServiceIndexReq) ProtoMessage() {} func (x *ProtocolServiceIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[39] + mi := &file_proto_dm_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2567,7 +2646,7 @@ func (x *ProtocolServiceIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolServiceIndexReq.ProtoReflect.Descriptor instead. func (*ProtocolServiceIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{39} + return file_proto_dm_proto_rawDescGZIP(), []int{40} } func (x *ProtocolServiceIndexReq) GetPage() *PageInfo { @@ -2596,7 +2675,7 @@ type ProtocolServiceIndexResp struct { func (x *ProtocolServiceIndexResp) Reset() { *x = ProtocolServiceIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[40] + mi := &file_proto_dm_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2609,7 +2688,7 @@ func (x *ProtocolServiceIndexResp) String() string { func (*ProtocolServiceIndexResp) ProtoMessage() {} func (x *ProtocolServiceIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[40] + mi := &file_proto_dm_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2622,7 +2701,7 @@ func (x *ProtocolServiceIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolServiceIndexResp.ProtoReflect.Descriptor instead. func (*ProtocolServiceIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{40} + return file_proto_dm_proto_rawDescGZIP(), []int{41} } func (x *ProtocolServiceIndexResp) GetList() []*ProtocolService { @@ -2656,7 +2735,7 @@ type ProtocolService struct { func (x *ProtocolService) Reset() { *x = ProtocolService{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[41] + mi := &file_proto_dm_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2669,7 +2748,7 @@ func (x *ProtocolService) String() string { func (*ProtocolService) ProtoMessage() {} func (x *ProtocolService) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[41] + mi := &file_proto_dm_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2682,7 +2761,7 @@ func (x *ProtocolService) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolService.ProtoReflect.Descriptor instead. func (*ProtocolService) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{41} + return file_proto_dm_proto_rawDescGZIP(), []int{42} } func (x *ProtocolService) GetId() int64 { @@ -2753,7 +2832,7 @@ type ProtocolInfo struct { func (x *ProtocolInfo) Reset() { *x = ProtocolInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[42] + mi := &file_proto_dm_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2766,7 +2845,7 @@ func (x *ProtocolInfo) String() string { func (*ProtocolInfo) ProtoMessage() {} func (x *ProtocolInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[42] + mi := &file_proto_dm_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2779,7 +2858,7 @@ func (x *ProtocolInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolInfo.ProtoReflect.Descriptor instead. func (*ProtocolInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{42} + return file_proto_dm_proto_rawDescGZIP(), []int{43} } func (x *ProtocolInfo) GetId() int64 { @@ -2861,7 +2940,7 @@ type ProtocolConfigField struct { func (x *ProtocolConfigField) Reset() { *x = ProtocolConfigField{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[43] + mi := &file_proto_dm_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2874,7 +2953,7 @@ func (x *ProtocolConfigField) String() string { func (*ProtocolConfigField) ProtoMessage() {} func (x *ProtocolConfigField) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[43] + mi := &file_proto_dm_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2887,7 +2966,7 @@ func (x *ProtocolConfigField) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolConfigField.ProtoReflect.Descriptor instead. func (*ProtocolConfigField) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{43} + return file_proto_dm_proto_rawDescGZIP(), []int{44} } func (x *ProtocolConfigField) GetId() int64 { @@ -2945,7 +3024,7 @@ type ProtocolConfigInfo struct { func (x *ProtocolConfigInfo) Reset() { *x = ProtocolConfigInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[44] + mi := &file_proto_dm_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2958,7 +3037,7 @@ func (x *ProtocolConfigInfo) String() string { func (*ProtocolConfigInfo) ProtoMessage() {} func (x *ProtocolConfigInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[44] + mi := &file_proto_dm_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2971,7 +3050,7 @@ func (x *ProtocolConfigInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolConfigInfo.ProtoReflect.Descriptor instead. func (*ProtocolConfigInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{44} + return file_proto_dm_proto_rawDescGZIP(), []int{45} } func (x *ProtocolConfigInfo) GetId() int64 { @@ -3006,7 +3085,7 @@ type ShadowIndexResp struct { func (x *ShadowIndexResp) Reset() { *x = ShadowIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[45] + mi := &file_proto_dm_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3019,7 +3098,7 @@ func (x *ShadowIndexResp) String() string { func (*ShadowIndexResp) ProtoMessage() {} func (x *ShadowIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[45] + mi := &file_proto_dm_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3032,7 +3111,7 @@ func (x *ShadowIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ShadowIndexResp.ProtoReflect.Descriptor instead. func (*ShadowIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{45} + return file_proto_dm_proto_rawDescGZIP(), []int{46} } func (x *ShadowIndexResp) GetList() []*ShadowIndex { @@ -3042,7 +3121,7 @@ func (x *ShadowIndexResp) GetList() []*ShadowIndex { return nil } -// 设备的日志数据 +//设备的日志数据 type ShadowIndex struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3056,7 +3135,7 @@ type ShadowIndex struct { func (x *ShadowIndex) Reset() { *x = ShadowIndex{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[46] + mi := &file_proto_dm_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3069,7 +3148,7 @@ func (x *ShadowIndex) String() string { func (*ShadowIndex) ProtoMessage() {} func (x *ShadowIndex) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[46] + mi := &file_proto_dm_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3082,7 +3161,7 @@ func (x *ShadowIndex) ProtoReflect() protoreflect.Message { // Deprecated: Use ShadowIndex.ProtoReflect.Descriptor instead. func (*ShadowIndex) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{46} + return file_proto_dm_proto_rawDescGZIP(), []int{47} } func (x *ShadowIndex) GetDataID() string { @@ -3119,7 +3198,7 @@ type PropertyGetReportSendReq struct { func (x *PropertyGetReportSendReq) Reset() { *x = PropertyGetReportSendReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[47] + mi := &file_proto_dm_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3132,7 +3211,7 @@ func (x *PropertyGetReportSendReq) String() string { func (*PropertyGetReportSendReq) ProtoMessage() {} func (x *PropertyGetReportSendReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[47] + mi := &file_proto_dm_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3145,7 +3224,7 @@ func (x *PropertyGetReportSendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyGetReportSendReq.ProtoReflect.Descriptor instead. func (*PropertyGetReportSendReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{47} + return file_proto_dm_proto_rawDescGZIP(), []int{48} } func (x *PropertyGetReportSendReq) GetProductID() string { @@ -3184,7 +3263,7 @@ type PropertyGetReportSendResp struct { func (x *PropertyGetReportSendResp) Reset() { *x = PropertyGetReportSendResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[48] + mi := &file_proto_dm_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3197,7 +3276,7 @@ func (x *PropertyGetReportSendResp) String() string { func (*PropertyGetReportSendResp) ProtoMessage() {} func (x *PropertyGetReportSendResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[48] + mi := &file_proto_dm_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3210,7 +3289,7 @@ func (x *PropertyGetReportSendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyGetReportSendResp.ProtoReflect.Descriptor instead. func (*PropertyGetReportSendResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{48} + return file_proto_dm_proto_rawDescGZIP(), []int{49} } func (x *PropertyGetReportSendResp) GetCode() int64 { @@ -3248,7 +3327,7 @@ func (x *PropertyGetReportSendResp) GetParams() string { return "" } -// 获取对应日志信息 +//获取对应日志信息 type PropertyLogIndexReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3262,17 +3341,15 @@ type PropertyLogIndexReq struct { TimeEnd int64 `protobuf:"varint,7,opt,name=timeEnd,proto3" json:"timeEnd,omitempty"` //时间的结束(毫秒时间戳) Interval int64 `protobuf:"varint,8,opt,name=interval,proto3" json:"interval,omitempty"` //间隔(单位毫秒) 如果这个值不为零值 则时间的开始和结束必须有效及聚合函数不应该为空 ArgFunc string `protobuf:"bytes,9,opt,name=argFunc,proto3" json:"argFunc,omitempty"` //聚合函数 avg:平均值 first:第一个参数 last:最后一个参数 count:总数 twa: 时间加权平均函数 参考:https://docs.taosdata.com/taos-sql/function - // /* - // FILL 语句指定某一窗口区间数据缺失的情况下的填充模式。填充模式包括以下几种: - // - // 不进行填充:NONE(默认填充模式)。 - // VALUE 填充:固定值填充,此时需要指定填充的数值。例如:FILL(VALUE, 1.23)。 - // PREV 填充:使用前一个非 NULL 值填充数据。例如:FILL(PREV)。 - // NULL 填充:使用 NULL 填充数据。例如:FILL(NULL)。 - // LINEAR 填充:根据前后距离最近的非 NULL 值做线性插值填充。例如:FILL(LINEAR)。 - // NEXT 填充:使用下一个非 NULL 值填充数据。例如:FILL(NEXT)。 - // - // */ + // /* + // FILL 语句指定某一窗口区间数据缺失的情况下的填充模式。填充模式包括以下几种: + // 不进行填充:NONE(默认填充模式)。 + // VALUE 填充:固定值填充,此时需要指定填充的数值。例如:FILL(VALUE, 1.23)。 + // PREV 填充:使用前一个非 NULL 值填充数据。例如:FILL(PREV)。 + // NULL 填充:使用 NULL 填充数据。例如:FILL(NULL)。 + // LINEAR 填充:根据前后距离最近的非 NULL 值做线性插值填充。例如:FILL(LINEAR)。 + // NEXT 填充:使用下一个非 NULL 值填充数据。例如:FILL(NEXT)。 + // */ Fill string `protobuf:"bytes,10,opt,name=fill,proto3" json:"fill,omitempty"` //填充模式 参考:https://docs.taosdata.com/taos-sql/distinguished/ Order int64 `protobuf:"varint,11,opt,name=order,proto3" json:"order,omitempty"` //时间排序 0:aes(默认,从久到近排序) 1:desc(时间从近到久排序) } @@ -3280,7 +3357,7 @@ type PropertyLogIndexReq struct { func (x *PropertyLogIndexReq) Reset() { *x = PropertyLogIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[49] + mi := &file_proto_dm_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3293,7 +3370,7 @@ func (x *PropertyLogIndexReq) String() string { func (*PropertyLogIndexReq) ProtoMessage() {} func (x *PropertyLogIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[49] + mi := &file_proto_dm_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3306,7 +3383,7 @@ func (x *PropertyLogIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyLogIndexReq.ProtoReflect.Descriptor instead. func (*PropertyLogIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{49} + return file_proto_dm_proto_rawDescGZIP(), []int{50} } func (x *PropertyLogIndexReq) GetPage() *PageInfo { @@ -3379,7 +3456,7 @@ func (x *PropertyLogIndexReq) GetOrder() int64 { return 0 } -// 获取对应日志信息 +//获取对应日志信息 type PropertyLogLatestIndexReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3393,7 +3470,7 @@ type PropertyLogLatestIndexReq struct { func (x *PropertyLogLatestIndexReq) Reset() { *x = PropertyLogLatestIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[50] + mi := &file_proto_dm_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3406,7 +3483,7 @@ func (x *PropertyLogLatestIndexReq) String() string { func (*PropertyLogLatestIndexReq) ProtoMessage() {} func (x *PropertyLogLatestIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[50] + mi := &file_proto_dm_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3419,7 +3496,7 @@ func (x *PropertyLogLatestIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyLogLatestIndexReq.ProtoReflect.Descriptor instead. func (*PropertyLogLatestIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{50} + return file_proto_dm_proto_rawDescGZIP(), []int{51} } func (x *PropertyLogLatestIndexReq) GetProductID() string { @@ -3443,7 +3520,7 @@ func (x *PropertyLogLatestIndexReq) GetDataIDs() []string { return nil } -// 设备的日志数据 +//设备的日志数据 type PropertyLogInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3457,7 +3534,7 @@ type PropertyLogInfo struct { func (x *PropertyLogInfo) Reset() { *x = PropertyLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[51] + mi := &file_proto_dm_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3470,7 +3547,7 @@ func (x *PropertyLogInfo) String() string { func (*PropertyLogInfo) ProtoMessage() {} func (x *PropertyLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[51] + mi := &file_proto_dm_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3483,7 +3560,7 @@ func (x *PropertyLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyLogInfo.ProtoReflect.Descriptor instead. func (*PropertyLogInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{51} + return file_proto_dm_proto_rawDescGZIP(), []int{52} } func (x *PropertyLogInfo) GetTimestamp() int64 { @@ -3507,7 +3584,7 @@ func (x *PropertyLogInfo) GetValue() string { return "" } -// 获取对应日志信息 +//获取对应日志信息 type PropertyLogIndexResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3520,7 +3597,7 @@ type PropertyLogIndexResp struct { func (x *PropertyLogIndexResp) Reset() { *x = PropertyLogIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[52] + mi := &file_proto_dm_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3533,7 +3610,7 @@ func (x *PropertyLogIndexResp) String() string { func (*PropertyLogIndexResp) ProtoMessage() {} func (x *PropertyLogIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[52] + mi := &file_proto_dm_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3546,7 +3623,7 @@ func (x *PropertyLogIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyLogIndexResp.ProtoReflect.Descriptor instead. func (*PropertyLogIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{52} + return file_proto_dm_proto_rawDescGZIP(), []int{53} } func (x *PropertyLogIndexResp) GetTotal() int64 { @@ -3563,7 +3640,7 @@ func (x *PropertyLogIndexResp) GetList() []*PropertyLogInfo { return nil } -// 获取对应日志信息 +//获取对应日志信息 type EventLogIndexReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3581,7 +3658,7 @@ type EventLogIndexReq struct { func (x *EventLogIndexReq) Reset() { *x = EventLogIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[53] + mi := &file_proto_dm_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3594,7 +3671,7 @@ func (x *EventLogIndexReq) String() string { func (*EventLogIndexReq) ProtoMessage() {} func (x *EventLogIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[53] + mi := &file_proto_dm_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3607,7 +3684,7 @@ func (x *EventLogIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use EventLogIndexReq.ProtoReflect.Descriptor instead. func (*EventLogIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{53} + return file_proto_dm_proto_rawDescGZIP(), []int{54} } func (x *EventLogIndexReq) GetPage() *PageInfo { @@ -3659,7 +3736,7 @@ func (x *EventLogIndexReq) GetTypes() []string { return nil } -// 设备的日志数据 +//设备的日志数据 type EventLogInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3674,7 +3751,7 @@ type EventLogInfo struct { func (x *EventLogInfo) Reset() { *x = EventLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[54] + mi := &file_proto_dm_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3687,7 +3764,7 @@ func (x *EventLogInfo) String() string { func (*EventLogInfo) ProtoMessage() {} func (x *EventLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[54] + mi := &file_proto_dm_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3700,7 +3777,7 @@ func (x *EventLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use EventLogInfo.ProtoReflect.Descriptor instead. func (*EventLogInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{54} + return file_proto_dm_proto_rawDescGZIP(), []int{55} } func (x *EventLogInfo) GetTimestamp() int64 { @@ -3731,7 +3808,7 @@ func (x *EventLogInfo) GetParams() string { return "" } -// 获取对应日志信息 +//获取对应日志信息 type EventLogIndexResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3744,7 +3821,7 @@ type EventLogIndexResp struct { func (x *EventLogIndexResp) Reset() { *x = EventLogIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[55] + mi := &file_proto_dm_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3757,7 +3834,7 @@ func (x *EventLogIndexResp) String() string { func (*EventLogIndexResp) ProtoMessage() {} func (x *EventLogIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[55] + mi := &file_proto_dm_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3770,7 +3847,7 @@ func (x *EventLogIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use EventLogIndexResp.ProtoReflect.Descriptor instead. func (*EventLogIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{55} + return file_proto_dm_proto_rawDescGZIP(), []int{56} } func (x *EventLogIndexResp) GetTotal() int64 { @@ -3787,7 +3864,7 @@ func (x *EventLogIndexResp) GetList() []*EventLogInfo { return nil } -// 实时获取对应信息 +//实时获取对应信息 type HubLogIndexReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3807,7 +3884,7 @@ type HubLogIndexReq struct { func (x *HubLogIndexReq) Reset() { *x = HubLogIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[56] + mi := &file_proto_dm_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3820,7 +3897,7 @@ func (x *HubLogIndexReq) String() string { func (*HubLogIndexReq) ProtoMessage() {} func (x *HubLogIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[56] + mi := &file_proto_dm_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3833,7 +3910,7 @@ func (x *HubLogIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use HubLogIndexReq.ProtoReflect.Descriptor instead. func (*HubLogIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{56} + return file_proto_dm_proto_rawDescGZIP(), []int{57} } func (x *HubLogIndexReq) GetProductID() string { @@ -3899,7 +3976,7 @@ func (x *HubLogIndexReq) GetRequestID() string { return "" } -// 实时获取对应信息 +//实时获取对应信息 type HubLogIndexResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3912,7 +3989,7 @@ type HubLogIndexResp struct { func (x *HubLogIndexResp) Reset() { *x = HubLogIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[57] + mi := &file_proto_dm_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3925,7 +4002,7 @@ func (x *HubLogIndexResp) String() string { func (*HubLogIndexResp) ProtoMessage() {} func (x *HubLogIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[57] + mi := &file_proto_dm_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3938,7 +4015,7 @@ func (x *HubLogIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use HubLogIndexResp.ProtoReflect.Descriptor instead. func (*HubLogIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{57} + return file_proto_dm_proto_rawDescGZIP(), []int{58} } func (x *HubLogIndexResp) GetTotal() int64 { @@ -3955,7 +4032,7 @@ func (x *HubLogIndexResp) GetList() []*HubLogInfo { return nil } -// 设备的日志数据 +//设备的日志数据 type HubLogInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3974,7 +4051,7 @@ type HubLogInfo struct { func (x *HubLogInfo) Reset() { *x = HubLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[58] + mi := &file_proto_dm_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3987,7 +4064,7 @@ func (x *HubLogInfo) String() string { func (*HubLogInfo) ProtoMessage() {} func (x *HubLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[58] + mi := &file_proto_dm_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4000,7 +4077,7 @@ func (x *HubLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use HubLogInfo.ProtoReflect.Descriptor instead. func (*HubLogInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{58} + return file_proto_dm_proto_rawDescGZIP(), []int{59} } func (x *HubLogInfo) GetTimestamp() int64 { @@ -4059,7 +4136,7 @@ func (x *HubLogInfo) GetRespPayload() string { return "" } -// 实时获取对应信息 +//实时获取对应信息 type StatusLogIndexReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4076,7 +4153,7 @@ type StatusLogIndexReq struct { func (x *StatusLogIndexReq) Reset() { *x = StatusLogIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[59] + mi := &file_proto_dm_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4089,7 +4166,7 @@ func (x *StatusLogIndexReq) String() string { func (*StatusLogIndexReq) ProtoMessage() {} func (x *StatusLogIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[59] + mi := &file_proto_dm_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4102,7 +4179,7 @@ func (x *StatusLogIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusLogIndexReq.ProtoReflect.Descriptor instead. func (*StatusLogIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{59} + return file_proto_dm_proto_rawDescGZIP(), []int{60} } func (x *StatusLogIndexReq) GetProductID() string { @@ -4147,7 +4224,7 @@ func (x *StatusLogIndexReq) GetStatus() int64 { return 0 } -// 实时获取对应信息 +//实时获取对应信息 type StatusLogIndexResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4160,7 +4237,7 @@ type StatusLogIndexResp struct { func (x *StatusLogIndexResp) Reset() { *x = StatusLogIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[60] + mi := &file_proto_dm_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4173,7 +4250,7 @@ func (x *StatusLogIndexResp) String() string { func (*StatusLogIndexResp) ProtoMessage() {} func (x *StatusLogIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[60] + mi := &file_proto_dm_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4186,7 +4263,7 @@ func (x *StatusLogIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusLogIndexResp.ProtoReflect.Descriptor instead. func (*StatusLogIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{60} + return file_proto_dm_proto_rawDescGZIP(), []int{61} } func (x *StatusLogIndexResp) GetTotal() int64 { @@ -4203,7 +4280,7 @@ func (x *StatusLogIndexResp) GetList() []*StatusLogInfo { return nil } -// 设备的日志数据 +//设备的日志数据 type StatusLogInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4218,7 +4295,7 @@ type StatusLogInfo struct { func (x *StatusLogInfo) Reset() { *x = StatusLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[61] + mi := &file_proto_dm_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4231,7 +4308,7 @@ func (x *StatusLogInfo) String() string { func (*StatusLogInfo) ProtoMessage() {} func (x *StatusLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[61] + mi := &file_proto_dm_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4244,7 +4321,7 @@ func (x *StatusLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusLogInfo.ProtoReflect.Descriptor instead. func (*StatusLogInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{61} + return file_proto_dm_proto_rawDescGZIP(), []int{62} } func (x *StatusLogInfo) GetTimestamp() int64 { @@ -4275,7 +4352,7 @@ func (x *StatusLogInfo) GetDeviceName() string { return "" } -// 实时获取对应信息 +//实时获取对应信息 type SendLogIndexReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4294,7 +4371,7 @@ type SendLogIndexReq struct { func (x *SendLogIndexReq) Reset() { *x = SendLogIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[62] + mi := &file_proto_dm_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4307,7 +4384,7 @@ func (x *SendLogIndexReq) String() string { func (*SendLogIndexReq) ProtoMessage() {} func (x *SendLogIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[62] + mi := &file_proto_dm_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4320,7 +4397,7 @@ func (x *SendLogIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SendLogIndexReq.ProtoReflect.Descriptor instead. func (*SendLogIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{62} + return file_proto_dm_proto_rawDescGZIP(), []int{63} } func (x *SendLogIndexReq) GetProductID() string { @@ -4379,7 +4456,7 @@ func (x *SendLogIndexReq) GetResultCode() int64 { return 0 } -// 实时获取对应信息 +//实时获取对应信息 type SendLogIndexResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4392,7 +4469,7 @@ type SendLogIndexResp struct { func (x *SendLogIndexResp) Reset() { *x = SendLogIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[63] + mi := &file_proto_dm_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4405,7 +4482,7 @@ func (x *SendLogIndexResp) String() string { func (*SendLogIndexResp) ProtoMessage() {} func (x *SendLogIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[63] + mi := &file_proto_dm_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4418,7 +4495,7 @@ func (x *SendLogIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SendLogIndexResp.ProtoReflect.Descriptor instead. func (*SendLogIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{63} + return file_proto_dm_proto_rawDescGZIP(), []int{64} } func (x *SendLogIndexResp) GetTotal() int64 { @@ -4435,7 +4512,7 @@ func (x *SendLogIndexResp) GetList() []*SendLogInfo { return nil } -// 设备的日志数据 +//设备的日志数据 type SendLogInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4456,7 +4533,7 @@ type SendLogInfo struct { func (x *SendLogInfo) Reset() { *x = SendLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[64] + mi := &file_proto_dm_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4469,7 +4546,7 @@ func (x *SendLogInfo) String() string { func (*SendLogInfo) ProtoMessage() {} func (x *SendLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[64] + mi := &file_proto_dm_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4482,7 +4559,7 @@ func (x *SendLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SendLogInfo.ProtoReflect.Descriptor instead. func (*SendLogInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{64} + return file_proto_dm_proto_rawDescGZIP(), []int{65} } func (x *SendLogInfo) GetTimestamp() int64 { @@ -4555,7 +4632,7 @@ func (x *SendLogInfo) GetResultCode() int64 { return 0 } -// 获取sdk调试日志信息 +//获取sdk调试日志信息 type SdkLogIndexReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4572,7 +4649,7 @@ type SdkLogIndexReq struct { func (x *SdkLogIndexReq) Reset() { *x = SdkLogIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[65] + mi := &file_proto_dm_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4585,7 +4662,7 @@ func (x *SdkLogIndexReq) String() string { func (*SdkLogIndexReq) ProtoMessage() {} func (x *SdkLogIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[65] + mi := &file_proto_dm_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4598,7 +4675,7 @@ func (x *SdkLogIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SdkLogIndexReq.ProtoReflect.Descriptor instead. func (*SdkLogIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{65} + return file_proto_dm_proto_rawDescGZIP(), []int{66} } func (x *SdkLogIndexReq) GetProductID() string { @@ -4643,7 +4720,7 @@ func (x *SdkLogIndexReq) GetPage() *PageInfo { return nil } -// sdk调试日志信息 +//sdk调试日志信息 type SdkLogIndexResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4656,7 +4733,7 @@ type SdkLogIndexResp struct { func (x *SdkLogIndexResp) Reset() { *x = SdkLogIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[66] + mi := &file_proto_dm_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4669,7 +4746,7 @@ func (x *SdkLogIndexResp) String() string { func (*SdkLogIndexResp) ProtoMessage() {} func (x *SdkLogIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[66] + mi := &file_proto_dm_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4682,7 +4759,7 @@ func (x *SdkLogIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SdkLogIndexResp.ProtoReflect.Descriptor instead. func (*SdkLogIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{66} + return file_proto_dm_proto_rawDescGZIP(), []int{67} } func (x *SdkLogIndexResp) GetTotal() int64 { @@ -4712,7 +4789,7 @@ type SdkLogInfo struct { func (x *SdkLogInfo) Reset() { *x = SdkLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[67] + mi := &file_proto_dm_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4725,7 +4802,7 @@ func (x *SdkLogInfo) String() string { func (*SdkLogInfo) ProtoMessage() {} func (x *SdkLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[67] + mi := &file_proto_dm_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4738,7 +4815,7 @@ func (x *SdkLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SdkLogInfo.ProtoReflect.Descriptor instead. func (*SdkLogInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{67} + return file_proto_dm_proto_rawDescGZIP(), []int{68} } func (x *SdkLogInfo) GetTimestamp() int64 { @@ -4778,7 +4855,7 @@ type ActionSendReq struct { func (x *ActionSendReq) Reset() { *x = ActionSendReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[68] + mi := &file_proto_dm_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4791,7 +4868,7 @@ func (x *ActionSendReq) String() string { func (*ActionSendReq) ProtoMessage() {} func (x *ActionSendReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[68] + mi := &file_proto_dm_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4804,7 +4881,7 @@ func (x *ActionSendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionSendReq.ProtoReflect.Descriptor instead. func (*ActionSendReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{68} + return file_proto_dm_proto_rawDescGZIP(), []int{69} } func (x *ActionSendReq) GetProductID() string { @@ -4863,7 +4940,7 @@ type ActionSendResp struct { func (x *ActionSendResp) Reset() { *x = ActionSendResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[69] + mi := &file_proto_dm_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4876,7 +4953,7 @@ func (x *ActionSendResp) String() string { func (*ActionSendResp) ProtoMessage() {} func (x *ActionSendResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[69] + mi := &file_proto_dm_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4889,7 +4966,7 @@ func (x *ActionSendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionSendResp.ProtoReflect.Descriptor instead. func (*ActionSendResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{69} + return file_proto_dm_proto_rawDescGZIP(), []int{70} } func (x *ActionSendResp) GetMsgToken() string { @@ -4920,7 +4997,7 @@ func (x *ActionSendResp) GetCode() int64 { return 0 } -// 获取异步消息的请求 +//获取异步消息的请求 type RespReadReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4934,7 +5011,7 @@ type RespReadReq struct { func (x *RespReadReq) Reset() { *x = RespReadReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[70] + mi := &file_proto_dm_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4947,7 +5024,7 @@ func (x *RespReadReq) String() string { func (*RespReadReq) ProtoMessage() {} func (x *RespReadReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[70] + mi := &file_proto_dm_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4960,7 +5037,7 @@ func (x *RespReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RespReadReq.ProtoReflect.Descriptor instead. func (*RespReadReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{70} + return file_proto_dm_proto_rawDescGZIP(), []int{71} } func (x *RespReadReq) GetProductID() string { @@ -4992,7 +5069,7 @@ type PropertyControlSendReq struct { ProductID string `protobuf:"bytes,1,opt,name=productID,proto3" json:"productID,omitempty"` //产品id DeviceName string `protobuf:"bytes,2,opt,name=deviceName,proto3" json:"deviceName,omitempty"` //设备名 Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` //属性数据, JSON格式字符串, 注意字段需要在物模型属性里定义 - // 设备影子控制 0:自动,当设备不在线的时候设置设备影子,设备在线时直接下发给设备 1:只实时下发,不在线报错 + //设备影子控制 0:自动,当设备不在线的时候设置设备影子,设备在线时直接下发给设备 1:只实时下发,不在线报错 // 2:如果有设备影子只修改影子,没有的也不下发 3: 只修改云端的值,不下发设备 ShadowControl int64 `protobuf:"varint,4,opt,name=shadowControl,proto3" json:"shadowControl,omitempty"` IsAsync bool `protobuf:"varint,6,opt,name=isAsync,proto3" json:"isAsync,omitempty"` //是否异步操作 异步情况通过获取接口来获取 @@ -5003,7 +5080,7 @@ type PropertyControlSendReq struct { func (x *PropertyControlSendReq) Reset() { *x = PropertyControlSendReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[71] + mi := &file_proto_dm_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5016,7 +5093,7 @@ func (x *PropertyControlSendReq) String() string { func (*PropertyControlSendReq) ProtoMessage() {} func (x *PropertyControlSendReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[71] + mi := &file_proto_dm_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5029,7 +5106,7 @@ func (x *PropertyControlSendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyControlSendReq.ProtoReflect.Descriptor instead. func (*PropertyControlSendReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{71} + return file_proto_dm_proto_rawDescGZIP(), []int{72} } func (x *PropertyControlSendReq) GetProductID() string { @@ -5093,7 +5170,7 @@ type WithProfile struct { func (x *WithProfile) Reset() { *x = WithProfile{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[72] + mi := &file_proto_dm_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5106,7 +5183,7 @@ func (x *WithProfile) String() string { func (*WithProfile) ProtoMessage() {} func (x *WithProfile) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[72] + mi := &file_proto_dm_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5119,7 +5196,7 @@ func (x *WithProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use WithProfile.ProtoReflect.Descriptor instead. func (*WithProfile) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{72} + return file_proto_dm_proto_rawDescGZIP(), []int{73} } func (x *WithProfile) GetCode() string { @@ -5152,7 +5229,7 @@ type ActionRespReq struct { func (x *ActionRespReq) Reset() { *x = ActionRespReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[73] + mi := &file_proto_dm_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5165,7 +5242,7 @@ func (x *ActionRespReq) String() string { func (*ActionRespReq) ProtoMessage() {} func (x *ActionRespReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[73] + mi := &file_proto_dm_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5178,7 +5255,7 @@ func (x *ActionRespReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionRespReq.ProtoReflect.Descriptor instead. func (*ActionRespReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{73} + return file_proto_dm_proto_rawDescGZIP(), []int{74} } func (x *ActionRespReq) GetProductID() string { @@ -5236,7 +5313,7 @@ type PropertyControlSendResp struct { func (x *PropertyControlSendResp) Reset() { *x = PropertyControlSendResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[74] + mi := &file_proto_dm_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5249,7 +5326,7 @@ func (x *PropertyControlSendResp) String() string { func (*PropertyControlSendResp) ProtoMessage() {} func (x *PropertyControlSendResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[74] + mi := &file_proto_dm_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5262,7 +5339,7 @@ func (x *PropertyControlSendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyControlSendResp.ProtoReflect.Descriptor instead. func (*PropertyControlSendResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{74} + return file_proto_dm_proto_rawDescGZIP(), []int{75} } func (x *PropertyControlSendResp) GetCode() int64 { @@ -5298,7 +5375,7 @@ type GatewayGetFoundReq struct { func (x *GatewayGetFoundReq) Reset() { *x = GatewayGetFoundReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[75] + mi := &file_proto_dm_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5311,7 +5388,7 @@ func (x *GatewayGetFoundReq) String() string { func (*GatewayGetFoundReq) ProtoMessage() {} func (x *GatewayGetFoundReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[75] + mi := &file_proto_dm_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5324,7 +5401,7 @@ func (x *GatewayGetFoundReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GatewayGetFoundReq.ProtoReflect.Descriptor instead. func (*GatewayGetFoundReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{75} + return file_proto_dm_proto_rawDescGZIP(), []int{76} } func (x *GatewayGetFoundReq) GetProductID() string { @@ -5353,7 +5430,7 @@ type GatewayNotifyBindSendReq struct { func (x *GatewayNotifyBindSendReq) Reset() { *x = GatewayNotifyBindSendReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[76] + mi := &file_proto_dm_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5366,7 +5443,7 @@ func (x *GatewayNotifyBindSendReq) String() string { func (*GatewayNotifyBindSendReq) ProtoMessage() {} func (x *GatewayNotifyBindSendReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[76] + mi := &file_proto_dm_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5379,7 +5456,7 @@ func (x *GatewayNotifyBindSendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GatewayNotifyBindSendReq.ProtoReflect.Descriptor instead. func (*GatewayNotifyBindSendReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{76} + return file_proto_dm_proto_rawDescGZIP(), []int{77} } func (x *GatewayNotifyBindSendReq) GetGateway() *DeviceCore { @@ -5408,7 +5485,7 @@ type SendMsgReq struct { func (x *SendMsgReq) Reset() { *x = SendMsgReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[77] + mi := &file_proto_dm_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5421,7 +5498,7 @@ func (x *SendMsgReq) String() string { func (*SendMsgReq) ProtoMessage() {} func (x *SendMsgReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[77] + mi := &file_proto_dm_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5434,7 +5511,7 @@ func (x *SendMsgReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SendMsgReq.ProtoReflect.Descriptor instead. func (*SendMsgReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{77} + return file_proto_dm_proto_rawDescGZIP(), []int{78} } func (x *SendMsgReq) GetTopic() string { @@ -5460,7 +5537,7 @@ type SendMsgResp struct { func (x *SendMsgResp) Reset() { *x = SendMsgResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[78] + mi := &file_proto_dm_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5473,7 +5550,7 @@ func (x *SendMsgResp) String() string { func (*SendMsgResp) ProtoMessage() {} func (x *SendMsgResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[78] + mi := &file_proto_dm_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5486,7 +5563,7 @@ func (x *SendMsgResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SendMsgResp.ProtoReflect.Descriptor instead. func (*SendMsgResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{78} + return file_proto_dm_proto_rawDescGZIP(), []int{79} } type PropertyControlMultiSendReq struct { @@ -5508,7 +5585,7 @@ type PropertyControlMultiSendReq struct { func (x *PropertyControlMultiSendReq) Reset() { *x = PropertyControlMultiSendReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[79] + mi := &file_proto_dm_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5521,7 +5598,7 @@ func (x *PropertyControlMultiSendReq) String() string { func (*PropertyControlMultiSendReq) ProtoMessage() {} func (x *PropertyControlMultiSendReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[79] + mi := &file_proto_dm_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5534,7 +5611,7 @@ func (x *PropertyControlMultiSendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyControlMultiSendReq.ProtoReflect.Descriptor instead. func (*PropertyControlMultiSendReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{79} + return file_proto_dm_proto_rawDescGZIP(), []int{80} } func (x *PropertyControlMultiSendReq) GetProductID() string { @@ -5617,7 +5694,7 @@ type PropertyControlSendMsg struct { func (x *PropertyControlSendMsg) Reset() { *x = PropertyControlSendMsg{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[80] + mi := &file_proto_dm_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5630,7 +5707,7 @@ func (x *PropertyControlSendMsg) String() string { func (*PropertyControlSendMsg) ProtoMessage() {} func (x *PropertyControlSendMsg) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[80] + mi := &file_proto_dm_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5643,7 +5720,7 @@ func (x *PropertyControlSendMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyControlSendMsg.ProtoReflect.Descriptor instead. func (*PropertyControlSendMsg) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{80} + return file_proto_dm_proto_rawDescGZIP(), []int{81} } func (x *PropertyControlSendMsg) GetProductID() string { @@ -5706,7 +5783,7 @@ type PropertyControlMultiSendResp struct { func (x *PropertyControlMultiSendResp) Reset() { *x = PropertyControlMultiSendResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[81] + mi := &file_proto_dm_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5719,7 +5796,7 @@ func (x *PropertyControlMultiSendResp) String() string { func (*PropertyControlMultiSendResp) ProtoMessage() {} func (x *PropertyControlMultiSendResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[81] + mi := &file_proto_dm_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5732,7 +5809,7 @@ func (x *PropertyControlMultiSendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyControlMultiSendResp.ProtoReflect.Descriptor instead. func (*PropertyControlMultiSendResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{81} + return file_proto_dm_proto_rawDescGZIP(), []int{82} } func (x *PropertyControlMultiSendResp) GetList() []*PropertyControlSendMsg { @@ -5756,7 +5833,7 @@ type ProductRemoteConfig struct { func (x *ProductRemoteConfig) Reset() { *x = ProductRemoteConfig{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[82] + mi := &file_proto_dm_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5769,7 +5846,7 @@ func (x *ProductRemoteConfig) String() string { func (*ProductRemoteConfig) ProtoMessage() {} func (x *ProductRemoteConfig) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[82] + mi := &file_proto_dm_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5782,7 +5859,7 @@ func (x *ProductRemoteConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductRemoteConfig.ProtoReflect.Descriptor instead. func (*ProductRemoteConfig) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{82} + return file_proto_dm_proto_rawDescGZIP(), []int{83} } func (x *ProductRemoteConfig) GetId() int64 { @@ -5825,7 +5902,7 @@ type RemoteConfigCreateReq struct { func (x *RemoteConfigCreateReq) Reset() { *x = RemoteConfigCreateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[83] + mi := &file_proto_dm_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5838,7 +5915,7 @@ func (x *RemoteConfigCreateReq) String() string { func (*RemoteConfigCreateReq) ProtoMessage() {} func (x *RemoteConfigCreateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[83] + mi := &file_proto_dm_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5851,7 +5928,7 @@ func (x *RemoteConfigCreateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteConfigCreateReq.ProtoReflect.Descriptor instead. func (*RemoteConfigCreateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{83} + return file_proto_dm_proto_rawDescGZIP(), []int{84} } func (x *RemoteConfigCreateReq) GetProductID() string { @@ -5880,7 +5957,7 @@ type RemoteConfigIndexReq struct { func (x *RemoteConfigIndexReq) Reset() { *x = RemoteConfigIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[84] + mi := &file_proto_dm_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5893,7 +5970,7 @@ func (x *RemoteConfigIndexReq) String() string { func (*RemoteConfigIndexReq) ProtoMessage() {} func (x *RemoteConfigIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[84] + mi := &file_proto_dm_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5906,7 +5983,7 @@ func (x *RemoteConfigIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteConfigIndexReq.ProtoReflect.Descriptor instead. func (*RemoteConfigIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{84} + return file_proto_dm_proto_rawDescGZIP(), []int{85} } func (x *RemoteConfigIndexReq) GetPage() *PageInfo { @@ -5935,7 +6012,7 @@ type RemoteConfigIndexResp struct { func (x *RemoteConfigIndexResp) Reset() { *x = RemoteConfigIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[85] + mi := &file_proto_dm_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5948,7 +6025,7 @@ func (x *RemoteConfigIndexResp) String() string { func (*RemoteConfigIndexResp) ProtoMessage() {} func (x *RemoteConfigIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[85] + mi := &file_proto_dm_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5961,7 +6038,7 @@ func (x *RemoteConfigIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteConfigIndexResp.ProtoReflect.Descriptor instead. func (*RemoteConfigIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{85} + return file_proto_dm_proto_rawDescGZIP(), []int{86} } func (x *RemoteConfigIndexResp) GetList() []*ProductRemoteConfig { @@ -5989,7 +6066,7 @@ type RemoteConfigPushAllReq struct { func (x *RemoteConfigPushAllReq) Reset() { *x = RemoteConfigPushAllReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[86] + mi := &file_proto_dm_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6002,7 +6079,7 @@ func (x *RemoteConfigPushAllReq) String() string { func (*RemoteConfigPushAllReq) ProtoMessage() {} func (x *RemoteConfigPushAllReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[86] + mi := &file_proto_dm_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6015,7 +6092,7 @@ func (x *RemoteConfigPushAllReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteConfigPushAllReq.ProtoReflect.Descriptor instead. func (*RemoteConfigPushAllReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{86} + return file_proto_dm_proto_rawDescGZIP(), []int{87} } func (x *RemoteConfigPushAllReq) GetProductID() string { @@ -6036,7 +6113,7 @@ type RemoteConfigLastReadReq struct { func (x *RemoteConfigLastReadReq) Reset() { *x = RemoteConfigLastReadReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[87] + mi := &file_proto_dm_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6049,7 +6126,7 @@ func (x *RemoteConfigLastReadReq) String() string { func (*RemoteConfigLastReadReq) ProtoMessage() {} func (x *RemoteConfigLastReadReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[87] + mi := &file_proto_dm_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6062,7 +6139,7 @@ func (x *RemoteConfigLastReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteConfigLastReadReq.ProtoReflect.Descriptor instead. func (*RemoteConfigLastReadReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{87} + return file_proto_dm_proto_rawDescGZIP(), []int{88} } func (x *RemoteConfigLastReadReq) GetProductID() string { @@ -6083,7 +6160,7 @@ type RemoteConfigLastReadResp struct { func (x *RemoteConfigLastReadResp) Reset() { *x = RemoteConfigLastReadResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[88] + mi := &file_proto_dm_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6096,7 +6173,7 @@ func (x *RemoteConfigLastReadResp) String() string { func (*RemoteConfigLastReadResp) ProtoMessage() {} func (x *RemoteConfigLastReadResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[88] + mi := &file_proto_dm_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6109,7 +6186,7 @@ func (x *RemoteConfigLastReadResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteConfigLastReadResp.ProtoReflect.Descriptor instead. func (*RemoteConfigLastReadResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{88} + return file_proto_dm_proto_rawDescGZIP(), []int{89} } func (x *RemoteConfigLastReadResp) GetInfo() *ProductRemoteConfig { @@ -6130,7 +6207,7 @@ type ProductCustomReadReq struct { func (x *ProductCustomReadReq) Reset() { *x = ProductCustomReadReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[89] + mi := &file_proto_dm_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6143,7 +6220,7 @@ func (x *ProductCustomReadReq) String() string { func (*ProductCustomReadReq) ProtoMessage() {} func (x *ProductCustomReadReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[89] + mi := &file_proto_dm_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6156,7 +6233,7 @@ func (x *ProductCustomReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductCustomReadReq.ProtoReflect.Descriptor instead. func (*ProductCustomReadReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{89} + return file_proto_dm_proto_rawDescGZIP(), []int{90} } func (x *ProductCustomReadReq) GetProductID() string { @@ -6181,7 +6258,7 @@ type ProductCustom struct { func (x *ProductCustom) Reset() { *x = ProductCustom{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[90] + mi := &file_proto_dm_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6194,7 +6271,7 @@ func (x *ProductCustom) String() string { func (*ProductCustom) ProtoMessage() {} func (x *ProductCustom) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[90] + mi := &file_proto_dm_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6207,7 +6284,7 @@ func (x *ProductCustom) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductCustom.ProtoReflect.Descriptor instead. func (*ProductCustom) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{90} + return file_proto_dm_proto_rawDescGZIP(), []int{91} } func (x *ProductCustom) GetProductID() string { @@ -6257,7 +6334,7 @@ type CustomTopic struct { func (x *CustomTopic) Reset() { *x = CustomTopic{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[91] + mi := &file_proto_dm_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6270,7 +6347,7 @@ func (x *CustomTopic) String() string { func (*CustomTopic) ProtoMessage() {} func (x *CustomTopic) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[91] + mi := &file_proto_dm_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6283,7 +6360,7 @@ func (x *CustomTopic) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomTopic.ProtoReflect.Descriptor instead. func (*CustomTopic) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{91} + return file_proto_dm_proto_rawDescGZIP(), []int{92} } func (x *CustomTopic) GetTopic() string { @@ -6313,7 +6390,7 @@ type DeviceGatewayBindDevice struct { func (x *DeviceGatewayBindDevice) Reset() { *x = DeviceGatewayBindDevice{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[92] + mi := &file_proto_dm_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6326,7 +6403,7 @@ func (x *DeviceGatewayBindDevice) String() string { func (*DeviceGatewayBindDevice) ProtoMessage() {} func (x *DeviceGatewayBindDevice) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[92] + mi := &file_proto_dm_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6339,7 +6416,7 @@ func (x *DeviceGatewayBindDevice) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceGatewayBindDevice.ProtoReflect.Descriptor instead. func (*DeviceGatewayBindDevice) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{92} + return file_proto_dm_proto_rawDescGZIP(), []int{93} } func (x *DeviceGatewayBindDevice) GetProductID() string { @@ -6368,9 +6445,10 @@ type DeviceGatewaySign struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // 子设备绑定签名串。 签名算法: - // 1. 签名原串,将产品 ID 设备名称,随机数,时间戳拼接:text=${product_id}${device_name};${random};${expiration_time} - // 2. 使用设备 Psk 密钥,或者证书的 Sha1 摘要,进行签名:hmac_sha1(device_secret, text) + // + //子设备绑定签名串。 签名算法: + //1. 签名原串,将产品 ID 设备名称,随机数,时间戳拼接:text=${product_id}${device_name};${random};${expiration_time} + //2. 使用设备 Psk 密钥,或者证书的 Sha1 摘要,进行签名:hmac_sha1(device_secret, text) Signature string `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` Random int64 `protobuf:"varint,4,opt,name=random,proto3" json:"random,omitempty"` //随机数。 Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` //时间戳,单位:秒。 @@ -6380,7 +6458,7 @@ type DeviceGatewaySign struct { func (x *DeviceGatewaySign) Reset() { *x = DeviceGatewaySign{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[93] + mi := &file_proto_dm_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6393,7 +6471,7 @@ func (x *DeviceGatewaySign) String() string { func (*DeviceGatewaySign) ProtoMessage() {} func (x *DeviceGatewaySign) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[93] + mi := &file_proto_dm_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6406,7 +6484,7 @@ func (x *DeviceGatewaySign) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceGatewaySign.ProtoReflect.Descriptor instead. func (*DeviceGatewaySign) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{93} + return file_proto_dm_proto_rawDescGZIP(), []int{94} } func (x *DeviceGatewaySign) GetSignature() string { @@ -6451,7 +6529,7 @@ type DeviceGatewayMultiCreateReq struct { func (x *DeviceGatewayMultiCreateReq) Reset() { *x = DeviceGatewayMultiCreateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[94] + mi := &file_proto_dm_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6464,7 +6542,7 @@ func (x *DeviceGatewayMultiCreateReq) String() string { func (*DeviceGatewayMultiCreateReq) ProtoMessage() {} func (x *DeviceGatewayMultiCreateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[94] + mi := &file_proto_dm_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6477,7 +6555,7 @@ func (x *DeviceGatewayMultiCreateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceGatewayMultiCreateReq.ProtoReflect.Descriptor instead. func (*DeviceGatewayMultiCreateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{94} + return file_proto_dm_proto_rawDescGZIP(), []int{95} } func (x *DeviceGatewayMultiCreateReq) GetGateway() *DeviceCore { @@ -6521,7 +6599,7 @@ type DeviceGatewayIndexReq struct { func (x *DeviceGatewayIndexReq) Reset() { *x = DeviceGatewayIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[95] + mi := &file_proto_dm_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6534,7 +6612,7 @@ func (x *DeviceGatewayIndexReq) String() string { func (*DeviceGatewayIndexReq) ProtoMessage() {} func (x *DeviceGatewayIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[95] + mi := &file_proto_dm_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6547,7 +6625,7 @@ func (x *DeviceGatewayIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceGatewayIndexReq.ProtoReflect.Descriptor instead. func (*DeviceGatewayIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{95} + return file_proto_dm_proto_rawDescGZIP(), []int{96} } func (x *DeviceGatewayIndexReq) GetPage() *PageInfo { @@ -6583,7 +6661,7 @@ type DeviceGatewayIndexResp struct { func (x *DeviceGatewayIndexResp) Reset() { *x = DeviceGatewayIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[96] + mi := &file_proto_dm_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6596,7 +6674,7 @@ func (x *DeviceGatewayIndexResp) String() string { func (*DeviceGatewayIndexResp) ProtoMessage() {} func (x *DeviceGatewayIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[96] + mi := &file_proto_dm_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6609,7 +6687,7 @@ func (x *DeviceGatewayIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceGatewayIndexResp.ProtoReflect.Descriptor instead. func (*DeviceGatewayIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{96} + return file_proto_dm_proto_rawDescGZIP(), []int{97} } func (x *DeviceGatewayIndexResp) GetList() []*DeviceCore { @@ -6639,7 +6717,7 @@ type DeviceGatewayMultiSaveReq struct { func (x *DeviceGatewayMultiSaveReq) Reset() { *x = DeviceGatewayMultiSaveReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[97] + mi := &file_proto_dm_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6652,7 +6730,7 @@ func (x *DeviceGatewayMultiSaveReq) String() string { func (*DeviceGatewayMultiSaveReq) ProtoMessage() {} func (x *DeviceGatewayMultiSaveReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[97] + mi := &file_proto_dm_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6665,7 +6743,7 @@ func (x *DeviceGatewayMultiSaveReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceGatewayMultiSaveReq.ProtoReflect.Descriptor instead. func (*DeviceGatewayMultiSaveReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{97} + return file_proto_dm_proto_rawDescGZIP(), []int{98} } func (x *DeviceGatewayMultiSaveReq) GetGateway() *DeviceCore { @@ -6700,7 +6778,7 @@ type GatewayCanBindIndexReq struct { func (x *GatewayCanBindIndexReq) Reset() { *x = GatewayCanBindIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[98] + mi := &file_proto_dm_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6713,7 +6791,7 @@ func (x *GatewayCanBindIndexReq) String() string { func (*GatewayCanBindIndexReq) ProtoMessage() {} func (x *GatewayCanBindIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[98] + mi := &file_proto_dm_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6726,7 +6804,7 @@ func (x *GatewayCanBindIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GatewayCanBindIndexReq.ProtoReflect.Descriptor instead. func (*GatewayCanBindIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{98} + return file_proto_dm_proto_rawDescGZIP(), []int{99} } func (x *GatewayCanBindIndexReq) GetGateway() *DeviceCore { @@ -6748,7 +6826,7 @@ type GatewayCanBindIndexResp struct { func (x *GatewayCanBindIndexResp) Reset() { *x = GatewayCanBindIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[99] + mi := &file_proto_dm_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6761,7 +6839,7 @@ func (x *GatewayCanBindIndexResp) String() string { func (*GatewayCanBindIndexResp) ProtoMessage() {} func (x *GatewayCanBindIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[99] + mi := &file_proto_dm_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6774,7 +6852,7 @@ func (x *GatewayCanBindIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GatewayCanBindIndexResp.ProtoReflect.Descriptor instead. func (*GatewayCanBindIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{99} + return file_proto_dm_proto_rawDescGZIP(), []int{100} } func (x *GatewayCanBindIndexResp) GetSubDevices() []*DeviceCore { @@ -6815,7 +6893,7 @@ type GroupInfo struct { func (x *GroupInfo) Reset() { *x = GroupInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[100] + mi := &file_proto_dm_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6828,7 +6906,7 @@ func (x *GroupInfo) String() string { func (*GroupInfo) ProtoMessage() {} func (x *GroupInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[100] + mi := &file_proto_dm_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6841,7 +6919,7 @@ func (x *GroupInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInfo.ProtoReflect.Descriptor instead. func (*GroupInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{100} + return file_proto_dm_proto_rawDescGZIP(), []int{101} } func (x *GroupInfo) GetAreaID() int64 { @@ -6957,7 +7035,7 @@ type GroupInfoCreateReq struct { func (x *GroupInfoCreateReq) Reset() { *x = GroupInfoCreateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[101] + mi := &file_proto_dm_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6970,7 +7048,7 @@ func (x *GroupInfoCreateReq) String() string { func (*GroupInfoCreateReq) ProtoMessage() {} func (x *GroupInfoCreateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[101] + mi := &file_proto_dm_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6983,7 +7061,7 @@ func (x *GroupInfoCreateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInfoCreateReq.ProtoReflect.Descriptor instead. func (*GroupInfoCreateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{101} + return file_proto_dm_proto_rawDescGZIP(), []int{102} } func (x *GroupInfoCreateReq) GetAreaID() int64 { @@ -7036,7 +7114,7 @@ type GroupInfoIndexReq struct { func (x *GroupInfoIndexReq) Reset() { *x = GroupInfoIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[102] + mi := &file_proto_dm_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7049,7 +7127,7 @@ func (x *GroupInfoIndexReq) String() string { func (*GroupInfoIndexReq) ProtoMessage() {} func (x *GroupInfoIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[102] + mi := &file_proto_dm_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7062,7 +7140,7 @@ func (x *GroupInfoIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInfoIndexReq.ProtoReflect.Descriptor instead. func (*GroupInfoIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{102} + return file_proto_dm_proto_rawDescGZIP(), []int{103} } func (x *GroupInfoIndexReq) GetAreaID() int64 { @@ -7112,7 +7190,7 @@ type GroupInfoIndexResp struct { func (x *GroupInfoIndexResp) Reset() { *x = GroupInfoIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[103] + mi := &file_proto_dm_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7125,7 +7203,7 @@ func (x *GroupInfoIndexResp) String() string { func (*GroupInfoIndexResp) ProtoMessage() {} func (x *GroupInfoIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[103] + mi := &file_proto_dm_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7138,7 +7216,7 @@ func (x *GroupInfoIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInfoIndexResp.ProtoReflect.Descriptor instead. func (*GroupInfoIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{103} + return file_proto_dm_proto_rawDescGZIP(), []int{104} } func (x *GroupInfoIndexResp) GetList() []*GroupInfo { @@ -7170,7 +7248,7 @@ type GroupInfoUpdateReq struct { func (x *GroupInfoUpdateReq) Reset() { *x = GroupInfoUpdateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[104] + mi := &file_proto_dm_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7183,7 +7261,7 @@ func (x *GroupInfoUpdateReq) String() string { func (*GroupInfoUpdateReq) ProtoMessage() {} func (x *GroupInfoUpdateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[104] + mi := &file_proto_dm_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7196,7 +7274,7 @@ func (x *GroupInfoUpdateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInfoUpdateReq.ProtoReflect.Descriptor instead. func (*GroupInfoUpdateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{104} + return file_proto_dm_proto_rawDescGZIP(), []int{105} } func (x *GroupInfoUpdateReq) GetId() int64 { @@ -7246,7 +7324,7 @@ type GroupDeviceMultiSaveReq struct { func (x *GroupDeviceMultiSaveReq) Reset() { *x = GroupDeviceMultiSaveReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[105] + mi := &file_proto_dm_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7259,7 +7337,7 @@ func (x *GroupDeviceMultiSaveReq) String() string { func (*GroupDeviceMultiSaveReq) ProtoMessage() {} func (x *GroupDeviceMultiSaveReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[105] + mi := &file_proto_dm_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7272,7 +7350,7 @@ func (x *GroupDeviceMultiSaveReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupDeviceMultiSaveReq.ProtoReflect.Descriptor instead. func (*GroupDeviceMultiSaveReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{105} + return file_proto_dm_proto_rawDescGZIP(), []int{106} } func (x *GroupDeviceMultiSaveReq) GetGroupID() int64 { @@ -7303,7 +7381,7 @@ type GroupDeviceIndexReq struct { func (x *GroupDeviceIndexReq) Reset() { *x = GroupDeviceIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[106] + mi := &file_proto_dm_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7316,7 +7394,7 @@ func (x *GroupDeviceIndexReq) String() string { func (*GroupDeviceIndexReq) ProtoMessage() {} func (x *GroupDeviceIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[106] + mi := &file_proto_dm_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7329,7 +7407,7 @@ func (x *GroupDeviceIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupDeviceIndexReq.ProtoReflect.Descriptor instead. func (*GroupDeviceIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{106} + return file_proto_dm_proto_rawDescGZIP(), []int{107} } func (x *GroupDeviceIndexReq) GetPage() *PageInfo { @@ -7372,7 +7450,7 @@ type GroupDeviceIndexResp struct { func (x *GroupDeviceIndexResp) Reset() { *x = GroupDeviceIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[107] + mi := &file_proto_dm_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7385,7 +7463,7 @@ func (x *GroupDeviceIndexResp) String() string { func (*GroupDeviceIndexResp) ProtoMessage() {} func (x *GroupDeviceIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[107] + mi := &file_proto_dm_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7398,7 +7476,7 @@ func (x *GroupDeviceIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupDeviceIndexResp.ProtoReflect.Descriptor instead. func (*GroupDeviceIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{107} + return file_proto_dm_proto_rawDescGZIP(), []int{108} } func (x *GroupDeviceIndexResp) GetList() []*DeviceInfo { @@ -7427,7 +7505,7 @@ type GroupDeviceMultiDeleteReq struct { func (x *GroupDeviceMultiDeleteReq) Reset() { *x = GroupDeviceMultiDeleteReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[108] + mi := &file_proto_dm_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7440,7 +7518,7 @@ func (x *GroupDeviceMultiDeleteReq) String() string { func (*GroupDeviceMultiDeleteReq) ProtoMessage() {} func (x *GroupDeviceMultiDeleteReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[108] + mi := &file_proto_dm_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7453,7 +7531,7 @@ func (x *GroupDeviceMultiDeleteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupDeviceMultiDeleteReq.ProtoReflect.Descriptor instead. func (*GroupDeviceMultiDeleteReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{108} + return file_proto_dm_proto_rawDescGZIP(), []int{109} } func (x *GroupDeviceMultiDeleteReq) GetGroupID() int64 { @@ -7482,7 +7560,7 @@ type Point struct { func (x *Point) Reset() { *x = Point{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[109] + mi := &file_proto_dm_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7495,7 +7573,7 @@ func (x *Point) String() string { func (*Point) ProtoMessage() {} func (x *Point) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[109] + mi := &file_proto_dm_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7508,7 +7586,7 @@ func (x *Point) ProtoReflect() protoreflect.Message { // Deprecated: Use Point.ProtoReflect.Descriptor instead. func (*Point) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{109} + return file_proto_dm_proto_rawDescGZIP(), []int{110} } func (x *Point) GetLongitude() float64 { @@ -7580,7 +7658,7 @@ type DeviceInfo struct { func (x *DeviceInfo) Reset() { *x = DeviceInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[110] + mi := &file_proto_dm_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7593,7 +7671,7 @@ func (x *DeviceInfo) String() string { func (*DeviceInfo) ProtoMessage() {} func (x *DeviceInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[110] + mi := &file_proto_dm_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7606,7 +7684,7 @@ func (x *DeviceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfo.ProtoReflect.Descriptor instead. func (*DeviceInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{110} + return file_proto_dm_proto_rawDescGZIP(), []int{111} } func (x *DeviceInfo) GetId() int64 { @@ -7955,7 +8033,7 @@ type ProductInfo struct { func (x *ProductInfo) Reset() { *x = ProductInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[111] + mi := &file_proto_dm_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7968,7 +8046,7 @@ func (x *ProductInfo) String() string { func (*ProductInfo) ProtoMessage() {} func (x *ProductInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[111] + mi := &file_proto_dm_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7981,7 +8059,7 @@ func (x *ProductInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductInfo.ProtoReflect.Descriptor instead. func (*ProductInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{111} + return file_proto_dm_proto_rawDescGZIP(), []int{112} } func (x *ProductInfo) GetCreatedTime() int64 { @@ -8144,7 +8222,7 @@ type ProductCustomUi struct { func (x *ProductCustomUi) Reset() { *x = ProductCustomUi{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[112] + mi := &file_proto_dm_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8157,7 +8235,7 @@ func (x *ProductCustomUi) String() string { func (*ProductCustomUi) ProtoMessage() {} func (x *ProductCustomUi) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[112] + mi := &file_proto_dm_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8170,7 +8248,7 @@ func (x *ProductCustomUi) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductCustomUi.ProtoReflect.Descriptor instead. func (*ProductCustomUi) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{112} + return file_proto_dm_proto_rawDescGZIP(), []int{113} } func (x *ProductCustomUi) GetPath() string { @@ -8205,7 +8283,7 @@ type ProductInfoDeleteReq struct { func (x *ProductInfoDeleteReq) Reset() { *x = ProductInfoDeleteReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[113] + mi := &file_proto_dm_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8218,7 +8296,7 @@ func (x *ProductInfoDeleteReq) String() string { func (*ProductInfoDeleteReq) ProtoMessage() {} func (x *ProductInfoDeleteReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[113] + mi := &file_proto_dm_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8231,7 +8309,7 @@ func (x *ProductInfoDeleteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductInfoDeleteReq.ProtoReflect.Descriptor instead. func (*ProductInfoDeleteReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{113} + return file_proto_dm_proto_rawDescGZIP(), []int{114} } func (x *ProductInfoDeleteReq) GetProductID() string { @@ -8254,7 +8332,7 @@ type ProductInfoReadReq struct { func (x *ProductInfoReadReq) Reset() { *x = ProductInfoReadReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[114] + mi := &file_proto_dm_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8267,7 +8345,7 @@ func (x *ProductInfoReadReq) String() string { func (*ProductInfoReadReq) ProtoMessage() {} func (x *ProductInfoReadReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[114] + mi := &file_proto_dm_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8280,7 +8358,7 @@ func (x *ProductInfoReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductInfoReadReq.ProtoReflect.Descriptor instead. func (*ProductInfoReadReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{114} + return file_proto_dm_proto_rawDescGZIP(), []int{115} } func (x *ProductInfoReadReq) GetProductID() string { @@ -8332,7 +8410,7 @@ type ProductInfoIndexReq struct { func (x *ProductInfoIndexReq) Reset() { *x = ProductInfoIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[115] + mi := &file_proto_dm_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8345,7 +8423,7 @@ func (x *ProductInfoIndexReq) String() string { func (*ProductInfoIndexReq) ProtoMessage() {} func (x *ProductInfoIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[115] + mi := &file_proto_dm_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8358,7 +8436,7 @@ func (x *ProductInfoIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductInfoIndexReq.ProtoReflect.Descriptor instead. func (*ProductInfoIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{115} + return file_proto_dm_proto_rawDescGZIP(), []int{116} } func (x *ProductInfoIndexReq) GetPage() *PageInfo { @@ -8499,7 +8577,7 @@ type ProductInfoIndexResp struct { func (x *ProductInfoIndexResp) Reset() { *x = ProductInfoIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[116] + mi := &file_proto_dm_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8512,7 +8590,7 @@ func (x *ProductInfoIndexResp) String() string { func (*ProductInfoIndexResp) ProtoMessage() {} func (x *ProductInfoIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[116] + mi := &file_proto_dm_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8525,7 +8603,7 @@ func (x *ProductInfoIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductInfoIndexResp.ProtoReflect.Descriptor instead. func (*ProductInfoIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{116} + return file_proto_dm_proto_rawDescGZIP(), []int{117} } func (x *ProductInfoIndexResp) GetList() []*ProductInfo { @@ -8553,7 +8631,7 @@ type DeviceOnlineMultiFixReq struct { func (x *DeviceOnlineMultiFixReq) Reset() { *x = DeviceOnlineMultiFixReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[117] + mi := &file_proto_dm_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8566,7 +8644,7 @@ func (x *DeviceOnlineMultiFixReq) String() string { func (*DeviceOnlineMultiFixReq) ProtoMessage() {} func (x *DeviceOnlineMultiFixReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[117] + mi := &file_proto_dm_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8579,7 +8657,7 @@ func (x *DeviceOnlineMultiFixReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceOnlineMultiFixReq.ProtoReflect.Descriptor instead. func (*DeviceOnlineMultiFixReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{117} + return file_proto_dm_proto_rawDescGZIP(), []int{118} } func (x *DeviceOnlineMultiFixReq) GetDevices() []*DeviceOnlineMultiFix { @@ -8602,7 +8680,7 @@ type DeviceOnlineMultiFix struct { func (x *DeviceOnlineMultiFix) Reset() { *x = DeviceOnlineMultiFix{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[118] + mi := &file_proto_dm_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8615,7 +8693,7 @@ func (x *DeviceOnlineMultiFix) String() string { func (*DeviceOnlineMultiFix) ProtoMessage() {} func (x *DeviceOnlineMultiFix) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[118] + mi := &file_proto_dm_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8628,7 +8706,7 @@ func (x *DeviceOnlineMultiFix) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceOnlineMultiFix.ProtoReflect.Descriptor instead. func (*DeviceOnlineMultiFix) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{118} + return file_proto_dm_proto_rawDescGZIP(), []int{119} } func (x *DeviceOnlineMultiFix) GetDevice() *DeviceCore { @@ -8664,7 +8742,7 @@ type DeviceInfoDeleteReq struct { func (x *DeviceInfoDeleteReq) Reset() { *x = DeviceInfoDeleteReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[119] + mi := &file_proto_dm_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8677,7 +8755,7 @@ func (x *DeviceInfoDeleteReq) String() string { func (*DeviceInfoDeleteReq) ProtoMessage() {} func (x *DeviceInfoDeleteReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[119] + mi := &file_proto_dm_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8690,7 +8768,7 @@ func (x *DeviceInfoDeleteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoDeleteReq.ProtoReflect.Descriptor instead. func (*DeviceInfoDeleteReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{119} + return file_proto_dm_proto_rawDescGZIP(), []int{120} } func (x *DeviceInfoDeleteReq) GetProductID() string { @@ -8719,7 +8797,7 @@ type DeviceCore struct { func (x *DeviceCore) Reset() { *x = DeviceCore{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[120] + mi := &file_proto_dm_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8732,7 +8810,7 @@ func (x *DeviceCore) String() string { func (*DeviceCore) ProtoMessage() {} func (x *DeviceCore) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[120] + mi := &file_proto_dm_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8745,7 +8823,7 @@ func (x *DeviceCore) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceCore.ProtoReflect.Descriptor instead. func (*DeviceCore) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{120} + return file_proto_dm_proto_rawDescGZIP(), []int{121} } func (x *DeviceCore) GetProductID() string { @@ -8776,7 +8854,7 @@ type DeviceError struct { func (x *DeviceError) Reset() { *x = DeviceError{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[121] + mi := &file_proto_dm_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8789,7 +8867,7 @@ func (x *DeviceError) String() string { func (*DeviceError) ProtoMessage() {} func (x *DeviceError) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[121] + mi := &file_proto_dm_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8802,7 +8880,7 @@ func (x *DeviceError) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceError.ProtoReflect.Descriptor instead. func (*DeviceError) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{121} + return file_proto_dm_proto_rawDescGZIP(), []int{122} } func (x *DeviceError) GetProductID() string { @@ -8846,7 +8924,7 @@ type DeviceInfoReadReq struct { func (x *DeviceInfoReadReq) Reset() { *x = DeviceInfoReadReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[122] + mi := &file_proto_dm_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8859,7 +8937,7 @@ func (x *DeviceInfoReadReq) String() string { func (*DeviceInfoReadReq) ProtoMessage() {} func (x *DeviceInfoReadReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[122] + mi := &file_proto_dm_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8872,7 +8950,7 @@ func (x *DeviceInfoReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoReadReq.ProtoReflect.Descriptor instead. func (*DeviceInfoReadReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{122} + return file_proto_dm_proto_rawDescGZIP(), []int{123} } func (x *DeviceInfoReadReq) GetProductID() string { @@ -8911,7 +8989,7 @@ type DeviceInfoMultiUpdateReq struct { func (x *DeviceInfoMultiUpdateReq) Reset() { *x = DeviceInfoMultiUpdateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[123] + mi := &file_proto_dm_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8924,7 +9002,7 @@ func (x *DeviceInfoMultiUpdateReq) String() string { func (*DeviceInfoMultiUpdateReq) ProtoMessage() {} func (x *DeviceInfoMultiUpdateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[123] + mi := &file_proto_dm_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8937,7 +9015,7 @@ func (x *DeviceInfoMultiUpdateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoMultiUpdateReq.ProtoReflect.Descriptor instead. func (*DeviceInfoMultiUpdateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{123} + return file_proto_dm_proto_rawDescGZIP(), []int{124} } func (x *DeviceInfoMultiUpdateReq) GetDevices() []*DeviceCore { @@ -9017,7 +9095,7 @@ type DeviceInfoIndexReq struct { func (x *DeviceInfoIndexReq) Reset() { *x = DeviceInfoIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[124] + mi := &file_proto_dm_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9030,7 +9108,7 @@ func (x *DeviceInfoIndexReq) String() string { func (*DeviceInfoIndexReq) ProtoMessage() {} func (x *DeviceInfoIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[124] + mi := &file_proto_dm_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9043,7 +9121,7 @@ func (x *DeviceInfoIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoIndexReq.ProtoReflect.Descriptor instead. func (*DeviceInfoIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{124} + return file_proto_dm_proto_rawDescGZIP(), []int{125} } func (x *DeviceInfoIndexReq) GetPage() *PageInfo { @@ -9282,7 +9360,7 @@ type DeviceInfoIndexResp struct { func (x *DeviceInfoIndexResp) Reset() { *x = DeviceInfoIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[125] + mi := &file_proto_dm_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9295,7 +9373,7 @@ func (x *DeviceInfoIndexResp) String() string { func (*DeviceInfoIndexResp) ProtoMessage() {} func (x *DeviceInfoIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[125] + mi := &file_proto_dm_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9308,7 +9386,7 @@ func (x *DeviceInfoIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoIndexResp.ProtoReflect.Descriptor instead. func (*DeviceInfoIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{125} + return file_proto_dm_proto_rawDescGZIP(), []int{126} } func (x *DeviceInfoIndexResp) GetList() []*DeviceInfo { @@ -9340,7 +9418,7 @@ type RootCheckReq struct { func (x *RootCheckReq) Reset() { *x = RootCheckReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[126] + mi := &file_proto_dm_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9353,7 +9431,7 @@ func (x *RootCheckReq) String() string { func (*RootCheckReq) ProtoMessage() {} func (x *RootCheckReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[126] + mi := &file_proto_dm_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9366,7 +9444,7 @@ func (x *RootCheckReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RootCheckReq.ProtoReflect.Descriptor instead. func (*RootCheckReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{126} + return file_proto_dm_proto_rawDescGZIP(), []int{127} } func (x *RootCheckReq) GetUsername() string { @@ -9415,7 +9493,7 @@ type CommonSchemaUpdateReq struct { func (x *CommonSchemaUpdateReq) Reset() { *x = CommonSchemaUpdateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[127] + mi := &file_proto_dm_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9428,7 +9506,7 @@ func (x *CommonSchemaUpdateReq) String() string { func (*CommonSchemaUpdateReq) ProtoMessage() {} func (x *CommonSchemaUpdateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[127] + mi := &file_proto_dm_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9441,7 +9519,7 @@ func (x *CommonSchemaUpdateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonSchemaUpdateReq.ProtoReflect.Descriptor instead. func (*CommonSchemaUpdateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{127} + return file_proto_dm_proto_rawDescGZIP(), []int{128} } func (x *CommonSchemaUpdateReq) GetInfo() *CommonSchemaInfo { @@ -9462,7 +9540,7 @@ type CommonSchemaCreateReq struct { func (x *CommonSchemaCreateReq) Reset() { *x = CommonSchemaCreateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[128] + mi := &file_proto_dm_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9475,7 +9553,7 @@ func (x *CommonSchemaCreateReq) String() string { func (*CommonSchemaCreateReq) ProtoMessage() {} func (x *CommonSchemaCreateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[128] + mi := &file_proto_dm_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9488,7 +9566,7 @@ func (x *CommonSchemaCreateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonSchemaCreateReq.ProtoReflect.Descriptor instead. func (*CommonSchemaCreateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{128} + return file_proto_dm_proto_rawDescGZIP(), []int{129} } func (x *CommonSchemaCreateReq) GetInfo() *CommonSchemaInfo { @@ -9526,7 +9604,7 @@ type CommonSchemaIndexReq struct { func (x *CommonSchemaIndexReq) Reset() { *x = CommonSchemaIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[129] + mi := &file_proto_dm_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9539,7 +9617,7 @@ func (x *CommonSchemaIndexReq) String() string { func (*CommonSchemaIndexReq) ProtoMessage() {} func (x *CommonSchemaIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[129] + mi := &file_proto_dm_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9552,7 +9630,7 @@ func (x *CommonSchemaIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonSchemaIndexReq.ProtoReflect.Descriptor instead. func (*CommonSchemaIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{129} + return file_proto_dm_proto_rawDescGZIP(), []int{130} } func (x *CommonSchemaIndexReq) GetPage() *PageInfo { @@ -9693,7 +9771,7 @@ type CommonSchemaIndexResp struct { func (x *CommonSchemaIndexResp) Reset() { *x = CommonSchemaIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[130] + mi := &file_proto_dm_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9706,7 +9784,7 @@ func (x *CommonSchemaIndexResp) String() string { func (*CommonSchemaIndexResp) ProtoMessage() {} func (x *CommonSchemaIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[130] + mi := &file_proto_dm_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9719,7 +9797,7 @@ func (x *CommonSchemaIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonSchemaIndexResp.ProtoReflect.Descriptor instead. func (*CommonSchemaIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{130} + return file_proto_dm_proto_rawDescGZIP(), []int{131} } func (x *CommonSchemaIndexResp) GetList() []*CommonSchemaInfo { @@ -9761,7 +9839,7 @@ type CommonSchemaInfo struct { func (x *CommonSchemaInfo) Reset() { *x = CommonSchemaInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[131] + mi := &file_proto_dm_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9774,7 +9852,7 @@ func (x *CommonSchemaInfo) String() string { func (*CommonSchemaInfo) ProtoMessage() {} func (x *CommonSchemaInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[131] + mi := &file_proto_dm_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9787,7 +9865,7 @@ func (x *CommonSchemaInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonSchemaInfo.ProtoReflect.Descriptor instead. func (*CommonSchemaInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{131} + return file_proto_dm_proto_rawDescGZIP(), []int{132} } func (x *CommonSchemaInfo) GetId() int64 { @@ -9906,7 +9984,7 @@ type ProductSchemaUpdateReq struct { func (x *ProductSchemaUpdateReq) Reset() { *x = ProductSchemaUpdateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[132] + mi := &file_proto_dm_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9919,7 +9997,7 @@ func (x *ProductSchemaUpdateReq) String() string { func (*ProductSchemaUpdateReq) ProtoMessage() {} func (x *ProductSchemaUpdateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[132] + mi := &file_proto_dm_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9932,7 +10010,7 @@ func (x *ProductSchemaUpdateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaUpdateReq.ProtoReflect.Descriptor instead. func (*ProductSchemaUpdateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{132} + return file_proto_dm_proto_rawDescGZIP(), []int{133} } func (x *ProductSchemaUpdateReq) GetInfo() *ProductSchemaInfo { @@ -9954,7 +10032,7 @@ type ProductSchemaMultiCreateReq struct { func (x *ProductSchemaMultiCreateReq) Reset() { *x = ProductSchemaMultiCreateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[133] + mi := &file_proto_dm_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9967,7 +10045,7 @@ func (x *ProductSchemaMultiCreateReq) String() string { func (*ProductSchemaMultiCreateReq) ProtoMessage() {} func (x *ProductSchemaMultiCreateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[133] + mi := &file_proto_dm_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9980,7 +10058,7 @@ func (x *ProductSchemaMultiCreateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaMultiCreateReq.ProtoReflect.Descriptor instead. func (*ProductSchemaMultiCreateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{133} + return file_proto_dm_proto_rawDescGZIP(), []int{134} } func (x *ProductSchemaMultiCreateReq) GetProductID() string { @@ -10008,7 +10086,7 @@ type ProductSchemaCreateReq struct { func (x *ProductSchemaCreateReq) Reset() { *x = ProductSchemaCreateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[134] + mi := &file_proto_dm_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10021,7 +10099,7 @@ func (x *ProductSchemaCreateReq) String() string { func (*ProductSchemaCreateReq) ProtoMessage() {} func (x *ProductSchemaCreateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[134] + mi := &file_proto_dm_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10034,7 +10112,7 @@ func (x *ProductSchemaCreateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaCreateReq.ProtoReflect.Descriptor instead. func (*ProductSchemaCreateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{134} + return file_proto_dm_proto_rawDescGZIP(), []int{135} } func (x *ProductSchemaCreateReq) GetInfo() *ProductSchemaInfo { @@ -10056,7 +10134,7 @@ type ProductSchemaDeleteReq struct { func (x *ProductSchemaDeleteReq) Reset() { *x = ProductSchemaDeleteReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[135] + mi := &file_proto_dm_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10069,7 +10147,7 @@ func (x *ProductSchemaDeleteReq) String() string { func (*ProductSchemaDeleteReq) ProtoMessage() {} func (x *ProductSchemaDeleteReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[135] + mi := &file_proto_dm_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10082,7 +10160,7 @@ func (x *ProductSchemaDeleteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaDeleteReq.ProtoReflect.Descriptor instead. func (*ProductSchemaDeleteReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{135} + return file_proto_dm_proto_rawDescGZIP(), []int{136} } func (x *ProductSchemaDeleteReq) GetProductID() string { @@ -10121,7 +10199,7 @@ type ProductSchemaIndexReq struct { func (x *ProductSchemaIndexReq) Reset() { *x = ProductSchemaIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[136] + mi := &file_proto_dm_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10134,7 +10212,7 @@ func (x *ProductSchemaIndexReq) String() string { func (*ProductSchemaIndexReq) ProtoMessage() {} func (x *ProductSchemaIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[136] + mi := &file_proto_dm_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10147,7 +10225,7 @@ func (x *ProductSchemaIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaIndexReq.ProtoReflect.Descriptor instead. func (*ProductSchemaIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{136} + return file_proto_dm_proto_rawDescGZIP(), []int{137} } func (x *ProductSchemaIndexReq) GetPage() *PageInfo { @@ -10246,7 +10324,7 @@ type ProductSchemaIndexResp struct { func (x *ProductSchemaIndexResp) Reset() { *x = ProductSchemaIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[137] + mi := &file_proto_dm_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10259,7 +10337,7 @@ func (x *ProductSchemaIndexResp) String() string { func (*ProductSchemaIndexResp) ProtoMessage() {} func (x *ProductSchemaIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[137] + mi := &file_proto_dm_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10272,7 +10350,7 @@ func (x *ProductSchemaIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaIndexResp.ProtoReflect.Descriptor instead. func (*ProductSchemaIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{137} + return file_proto_dm_proto_rawDescGZIP(), []int{138} } func (x *ProductSchemaIndexResp) GetList() []*ProductSchemaInfo { @@ -10314,7 +10392,7 @@ type ProductSchemaInfo struct { func (x *ProductSchemaInfo) Reset() { *x = ProductSchemaInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[138] + mi := &file_proto_dm_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10327,7 +10405,7 @@ func (x *ProductSchemaInfo) String() string { func (*ProductSchemaInfo) ProtoMessage() {} func (x *ProductSchemaInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[138] + mi := &file_proto_dm_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10340,7 +10418,7 @@ func (x *ProductSchemaInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaInfo.ProtoReflect.Descriptor instead. func (*ProductSchemaInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{138} + return file_proto_dm_proto_rawDescGZIP(), []int{139} } func (x *ProductSchemaInfo) GetProductID() string { @@ -10460,7 +10538,7 @@ type ProductSchemaTslImportReq struct { func (x *ProductSchemaTslImportReq) Reset() { *x = ProductSchemaTslImportReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[139] + mi := &file_proto_dm_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10473,7 +10551,7 @@ func (x *ProductSchemaTslImportReq) String() string { func (*ProductSchemaTslImportReq) ProtoMessage() {} func (x *ProductSchemaTslImportReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[139] + mi := &file_proto_dm_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10486,7 +10564,7 @@ func (x *ProductSchemaTslImportReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaTslImportReq.ProtoReflect.Descriptor instead. func (*ProductSchemaTslImportReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{139} + return file_proto_dm_proto_rawDescGZIP(), []int{140} } func (x *ProductSchemaTslImportReq) GetProductID() string { @@ -10514,7 +10592,7 @@ type ProductSchemaTslReadReq struct { func (x *ProductSchemaTslReadReq) Reset() { *x = ProductSchemaTslReadReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[140] + mi := &file_proto_dm_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10527,7 +10605,7 @@ func (x *ProductSchemaTslReadReq) String() string { func (*ProductSchemaTslReadReq) ProtoMessage() {} func (x *ProductSchemaTslReadReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[140] + mi := &file_proto_dm_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10540,7 +10618,7 @@ func (x *ProductSchemaTslReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaTslReadReq.ProtoReflect.Descriptor instead. func (*ProductSchemaTslReadReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{140} + return file_proto_dm_proto_rawDescGZIP(), []int{141} } func (x *ProductSchemaTslReadReq) GetProductID() string { @@ -10561,7 +10639,7 @@ type ProductSchemaTslReadResp struct { func (x *ProductSchemaTslReadResp) Reset() { *x = ProductSchemaTslReadResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[141] + mi := &file_proto_dm_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10574,7 +10652,7 @@ func (x *ProductSchemaTslReadResp) String() string { func (*ProductSchemaTslReadResp) ProtoMessage() {} func (x *ProductSchemaTslReadResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[141] + mi := &file_proto_dm_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10587,7 +10665,7 @@ func (x *ProductSchemaTslReadResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductSchemaTslReadResp.ProtoReflect.Descriptor instead. func (*ProductSchemaTslReadResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{141} + return file_proto_dm_proto_rawDescGZIP(), []int{142} } func (x *ProductSchemaTslReadResp) GetTsl() string { @@ -10610,7 +10688,7 @@ type DeviceProfile struct { func (x *DeviceProfile) Reset() { *x = DeviceProfile{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[142] + mi := &file_proto_dm_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10623,7 +10701,7 @@ func (x *DeviceProfile) String() string { func (*DeviceProfile) ProtoMessage() {} func (x *DeviceProfile) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[142] + mi := &file_proto_dm_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10636,7 +10714,7 @@ func (x *DeviceProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceProfile.ProtoReflect.Descriptor instead. func (*DeviceProfile) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{142} + return file_proto_dm_proto_rawDescGZIP(), []int{143} } func (x *DeviceProfile) GetDevice() *DeviceCore { @@ -10672,7 +10750,7 @@ type DeviceProfileReadReq struct { func (x *DeviceProfileReadReq) Reset() { *x = DeviceProfileReadReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[143] + mi := &file_proto_dm_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10685,7 +10763,7 @@ func (x *DeviceProfileReadReq) String() string { func (*DeviceProfileReadReq) ProtoMessage() {} func (x *DeviceProfileReadReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[143] + mi := &file_proto_dm_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10698,7 +10776,7 @@ func (x *DeviceProfileReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceProfileReadReq.ProtoReflect.Descriptor instead. func (*DeviceProfileReadReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{143} + return file_proto_dm_proto_rawDescGZIP(), []int{144} } func (x *DeviceProfileReadReq) GetDevice() *DeviceCore { @@ -10726,7 +10804,7 @@ type DeviceInfoCanBindReq struct { func (x *DeviceInfoCanBindReq) Reset() { *x = DeviceInfoCanBindReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[144] + mi := &file_proto_dm_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10739,7 +10817,7 @@ func (x *DeviceInfoCanBindReq) String() string { func (*DeviceInfoCanBindReq) ProtoMessage() {} func (x *DeviceInfoCanBindReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[144] + mi := &file_proto_dm_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10752,7 +10830,7 @@ func (x *DeviceInfoCanBindReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoCanBindReq.ProtoReflect.Descriptor instead. func (*DeviceInfoCanBindReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{144} + return file_proto_dm_proto_rawDescGZIP(), []int{145} } func (x *DeviceInfoCanBindReq) GetDevice() *DeviceCore { @@ -10774,7 +10852,7 @@ type DeviceInfoMultiBindReq struct { func (x *DeviceInfoMultiBindReq) Reset() { *x = DeviceInfoMultiBindReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[145] + mi := &file_proto_dm_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10787,7 +10865,7 @@ func (x *DeviceInfoMultiBindReq) String() string { func (*DeviceInfoMultiBindReq) ProtoMessage() {} func (x *DeviceInfoMultiBindReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[145] + mi := &file_proto_dm_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10800,7 +10878,7 @@ func (x *DeviceInfoMultiBindReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoMultiBindReq.ProtoReflect.Descriptor instead. func (*DeviceInfoMultiBindReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{145} + return file_proto_dm_proto_rawDescGZIP(), []int{146} } func (x *DeviceInfoMultiBindReq) GetDevices() []*DeviceCore { @@ -10828,7 +10906,7 @@ type DeviceInfoMultiBindResp struct { func (x *DeviceInfoMultiBindResp) Reset() { *x = DeviceInfoMultiBindResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[146] + mi := &file_proto_dm_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10841,7 +10919,7 @@ func (x *DeviceInfoMultiBindResp) String() string { func (*DeviceInfoMultiBindResp) ProtoMessage() {} func (x *DeviceInfoMultiBindResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[146] + mi := &file_proto_dm_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10854,7 +10932,7 @@ func (x *DeviceInfoMultiBindResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoMultiBindResp.ProtoReflect.Descriptor instead. func (*DeviceInfoMultiBindResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{146} + return file_proto_dm_proto_rawDescGZIP(), []int{147} } func (x *DeviceInfoMultiBindResp) GetErrs() []*DeviceError { @@ -10877,7 +10955,7 @@ type DeviceInfoBindReq struct { func (x *DeviceInfoBindReq) Reset() { *x = DeviceInfoBindReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[147] + mi := &file_proto_dm_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10890,7 +10968,7 @@ func (x *DeviceInfoBindReq) String() string { func (*DeviceInfoBindReq) ProtoMessage() {} func (x *DeviceInfoBindReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[147] + mi := &file_proto_dm_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10903,7 +10981,7 @@ func (x *DeviceInfoBindReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoBindReq.ProtoReflect.Descriptor instead. func (*DeviceInfoBindReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{147} + return file_proto_dm_proto_rawDescGZIP(), []int{148} } func (x *DeviceInfoBindReq) GetDevice() *DeviceCore { @@ -10939,7 +11017,7 @@ type DeviceProfileIndexReq struct { func (x *DeviceProfileIndexReq) Reset() { *x = DeviceProfileIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[148] + mi := &file_proto_dm_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10952,7 +11030,7 @@ func (x *DeviceProfileIndexReq) String() string { func (*DeviceProfileIndexReq) ProtoMessage() {} func (x *DeviceProfileIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[148] + mi := &file_proto_dm_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10965,7 +11043,7 @@ func (x *DeviceProfileIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceProfileIndexReq.ProtoReflect.Descriptor instead. func (*DeviceProfileIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{148} + return file_proto_dm_proto_rawDescGZIP(), []int{149} } func (x *DeviceProfileIndexReq) GetDevice() *DeviceCore { @@ -10993,7 +11071,7 @@ type DeviceProfileIndexResp struct { func (x *DeviceProfileIndexResp) Reset() { *x = DeviceProfileIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[149] + mi := &file_proto_dm_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11006,7 +11084,7 @@ func (x *DeviceProfileIndexResp) String() string { func (*DeviceProfileIndexResp) ProtoMessage() {} func (x *DeviceProfileIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[149] + mi := &file_proto_dm_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11019,7 +11097,7 @@ func (x *DeviceProfileIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceProfileIndexResp.ProtoReflect.Descriptor instead. func (*DeviceProfileIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{149} + return file_proto_dm_proto_rawDescGZIP(), []int{150} } func (x *DeviceProfileIndexResp) GetProfiles() []*DeviceProfile { @@ -11042,7 +11120,7 @@ type DeviceCountReq struct { func (x *DeviceCountReq) Reset() { *x = DeviceCountReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[150] + mi := &file_proto_dm_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11055,7 +11133,7 @@ func (x *DeviceCountReq) String() string { func (*DeviceCountReq) ProtoMessage() {} func (x *DeviceCountReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[150] + mi := &file_proto_dm_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11068,7 +11146,7 @@ func (x *DeviceCountReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceCountReq.ProtoReflect.Descriptor instead. func (*DeviceCountReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{150} + return file_proto_dm_proto_rawDescGZIP(), []int{151} } func (x *DeviceCountReq) GetCountTypes() []string { @@ -11103,7 +11181,7 @@ type DeviceCountResp struct { func (x *DeviceCountResp) Reset() { *x = DeviceCountResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[151] + mi := &file_proto_dm_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11116,7 +11194,7 @@ func (x *DeviceCountResp) String() string { func (*DeviceCountResp) ProtoMessage() {} func (x *DeviceCountResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[151] + mi := &file_proto_dm_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11129,7 +11207,7 @@ func (x *DeviceCountResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceCountResp.ProtoReflect.Descriptor instead. func (*DeviceCountResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{151} + return file_proto_dm_proto_rawDescGZIP(), []int{152} } func (x *DeviceCountResp) GetList() []*DeviceCountInfo { @@ -11151,7 +11229,7 @@ type DeviceCountInfo struct { func (x *DeviceCountInfo) Reset() { *x = DeviceCountInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[152] + mi := &file_proto_dm_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11164,7 +11242,7 @@ func (x *DeviceCountInfo) String() string { func (*DeviceCountInfo) ProtoMessage() {} func (x *DeviceCountInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[152] + mi := &file_proto_dm_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11177,7 +11255,7 @@ func (x *DeviceCountInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceCountInfo.ProtoReflect.Descriptor instead. func (*DeviceCountInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{152} + return file_proto_dm_proto_rawDescGZIP(), []int{153} } func (x *DeviceCountInfo) GetRangeID() int64 { @@ -11207,7 +11285,7 @@ type DeviceInfoCountReq struct { func (x *DeviceInfoCountReq) Reset() { *x = DeviceInfoCountReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[153] + mi := &file_proto_dm_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11220,7 +11298,7 @@ func (x *DeviceInfoCountReq) String() string { func (*DeviceInfoCountReq) ProtoMessage() {} func (x *DeviceInfoCountReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[153] + mi := &file_proto_dm_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11233,7 +11311,7 @@ func (x *DeviceInfoCountReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoCountReq.ProtoReflect.Descriptor instead. func (*DeviceInfoCountReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{153} + return file_proto_dm_proto_rawDescGZIP(), []int{154} } func (x *DeviceInfoCountReq) GetTimeRange() *TimeRange { @@ -11270,7 +11348,7 @@ type DeviceTypeCountReq struct { func (x *DeviceTypeCountReq) Reset() { *x = DeviceTypeCountReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[154] + mi := &file_proto_dm_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11283,7 +11361,7 @@ func (x *DeviceTypeCountReq) String() string { func (*DeviceTypeCountReq) ProtoMessage() {} func (x *DeviceTypeCountReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[154] + mi := &file_proto_dm_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11296,7 +11374,7 @@ func (x *DeviceTypeCountReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceTypeCountReq.ProtoReflect.Descriptor instead. func (*DeviceTypeCountReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{154} + return file_proto_dm_proto_rawDescGZIP(), []int{155} } func (x *DeviceTypeCountReq) GetTimeRange() *TimeRange { @@ -11335,7 +11413,7 @@ type DeviceInfoCount struct { func (x *DeviceInfoCount) Reset() { *x = DeviceInfoCount{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[155] + mi := &file_proto_dm_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11348,7 +11426,7 @@ func (x *DeviceInfoCount) String() string { func (*DeviceInfoCount) ProtoMessage() {} func (x *DeviceInfoCount) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[155] + mi := &file_proto_dm_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11361,7 +11439,7 @@ func (x *DeviceInfoCount) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceInfoCount.ProtoReflect.Descriptor instead. func (*DeviceInfoCount) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{155} + return file_proto_dm_proto_rawDescGZIP(), []int{156} } func (x *DeviceInfoCount) GetOnline() int64 { @@ -11413,7 +11491,7 @@ type DeviceTypeCountResp struct { func (x *DeviceTypeCountResp) Reset() { *x = DeviceTypeCountResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[156] + mi := &file_proto_dm_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11426,7 +11504,7 @@ func (x *DeviceTypeCountResp) String() string { func (*DeviceTypeCountResp) ProtoMessage() {} func (x *DeviceTypeCountResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[156] + mi := &file_proto_dm_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11439,7 +11517,7 @@ func (x *DeviceTypeCountResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceTypeCountResp.ProtoReflect.Descriptor instead. func (*DeviceTypeCountResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{156} + return file_proto_dm_proto_rawDescGZIP(), []int{157} } func (x *DeviceTypeCountResp) GetDevice() int64 { @@ -11470,7 +11548,8 @@ func (x *DeviceTypeCountResp) GetUnknown() int64 { return 0 } -// 下面是ota固件管理模块的消息 +// +//下面是ota固件管理模块的消息 type Firmware struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -11491,7 +11570,7 @@ type Firmware struct { func (x *Firmware) Reset() { *x = Firmware{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[157] + mi := &file_proto_dm_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11504,7 +11583,7 @@ func (x *Firmware) String() string { func (*Firmware) ProtoMessage() {} func (x *Firmware) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[157] + mi := &file_proto_dm_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11517,7 +11596,7 @@ func (x *Firmware) ProtoReflect() protoreflect.Message { // Deprecated: Use Firmware.ProtoReflect.Descriptor instead. func (*Firmware) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{157} + return file_proto_dm_proto_rawDescGZIP(), []int{158} } func (x *Firmware) GetCreatedTime() int64 { @@ -11601,7 +11680,7 @@ type FirmwareResp struct { func (x *FirmwareResp) Reset() { *x = FirmwareResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[158] + mi := &file_proto_dm_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11614,7 +11693,7 @@ func (x *FirmwareResp) String() string { func (*FirmwareResp) ProtoMessage() {} func (x *FirmwareResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[158] + mi := &file_proto_dm_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11627,7 +11706,7 @@ func (x *FirmwareResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareResp.ProtoReflect.Descriptor instead. func (*FirmwareResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{158} + return file_proto_dm_proto_rawDescGZIP(), []int{159} } func (x *FirmwareResp) GetFirmwareID() int64 { @@ -11658,7 +11737,7 @@ type FirmwareInfo struct { func (x *FirmwareInfo) Reset() { *x = FirmwareInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[159] + mi := &file_proto_dm_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11671,7 +11750,7 @@ func (x *FirmwareInfo) String() string { func (*FirmwareInfo) ProtoMessage() {} func (x *FirmwareInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[159] + mi := &file_proto_dm_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11684,7 +11763,7 @@ func (x *FirmwareInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareInfo.ProtoReflect.Descriptor instead. func (*FirmwareInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{159} + return file_proto_dm_proto_rawDescGZIP(), []int{160} } func (x *FirmwareInfo) GetCreatedTime() int64 { @@ -11776,7 +11855,7 @@ type OtaFirmwareFile struct { func (x *OtaFirmwareFile) Reset() { *x = OtaFirmwareFile{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[160] + mi := &file_proto_dm_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11789,7 +11868,7 @@ func (x *OtaFirmwareFile) String() string { func (*OtaFirmwareFile) ProtoMessage() {} func (x *OtaFirmwareFile) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[160] + mi := &file_proto_dm_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11802,7 +11881,7 @@ func (x *OtaFirmwareFile) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareFile.ProtoReflect.Descriptor instead. func (*OtaFirmwareFile) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{160} + return file_proto_dm_proto_rawDescGZIP(), []int{161} } func (x *OtaFirmwareFile) GetFilePath() string { @@ -11830,7 +11909,7 @@ type FirmwareInfoDeleteReq struct { func (x *FirmwareInfoDeleteReq) Reset() { *x = FirmwareInfoDeleteReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[161] + mi := &file_proto_dm_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11843,7 +11922,7 @@ func (x *FirmwareInfoDeleteReq) String() string { func (*FirmwareInfoDeleteReq) ProtoMessage() {} func (x *FirmwareInfoDeleteReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[161] + mi := &file_proto_dm_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11856,7 +11935,7 @@ func (x *FirmwareInfoDeleteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareInfoDeleteReq.ProtoReflect.Descriptor instead. func (*FirmwareInfoDeleteReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{161} + return file_proto_dm_proto_rawDescGZIP(), []int{162} } func (x *FirmwareInfoDeleteReq) GetFirmwareID() int64 { @@ -11877,7 +11956,7 @@ type FirmwareInfoDeleteResp struct { func (x *FirmwareInfoDeleteResp) Reset() { *x = FirmwareInfoDeleteResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[162] + mi := &file_proto_dm_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11890,7 +11969,7 @@ func (x *FirmwareInfoDeleteResp) String() string { func (*FirmwareInfoDeleteResp) ProtoMessage() {} func (x *FirmwareInfoDeleteResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[162] + mi := &file_proto_dm_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11903,7 +11982,7 @@ func (x *FirmwareInfoDeleteResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareInfoDeleteResp.ProtoReflect.Descriptor instead. func (*FirmwareInfoDeleteResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{162} + return file_proto_dm_proto_rawDescGZIP(), []int{163} } func (x *FirmwareInfoDeleteResp) GetPaths() []string { @@ -11926,7 +12005,7 @@ type FirmwareInfoIndexReq struct { func (x *FirmwareInfoIndexReq) Reset() { *x = FirmwareInfoIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[163] + mi := &file_proto_dm_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11939,7 +12018,7 @@ func (x *FirmwareInfoIndexReq) String() string { func (*FirmwareInfoIndexReq) ProtoMessage() {} func (x *FirmwareInfoIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[163] + mi := &file_proto_dm_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11952,7 +12031,7 @@ func (x *FirmwareInfoIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareInfoIndexReq.ProtoReflect.Descriptor instead. func (*FirmwareInfoIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{163} + return file_proto_dm_proto_rawDescGZIP(), []int{164} } func (x *FirmwareInfoIndexReq) GetPage() *PageInfo { @@ -11988,7 +12067,7 @@ type FirmwareInfoIndexResp struct { func (x *FirmwareInfoIndexResp) Reset() { *x = FirmwareInfoIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[164] + mi := &file_proto_dm_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12001,7 +12080,7 @@ func (x *FirmwareInfoIndexResp) String() string { func (*FirmwareInfoIndexResp) ProtoMessage() {} func (x *FirmwareInfoIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[164] + mi := &file_proto_dm_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12014,7 +12093,7 @@ func (x *FirmwareInfoIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareInfoIndexResp.ProtoReflect.Descriptor instead. func (*FirmwareInfoIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{164} + return file_proto_dm_proto_rawDescGZIP(), []int{165} } func (x *FirmwareInfoIndexResp) GetList() []*FirmwareInfo { @@ -12042,7 +12121,7 @@ type FirmwareInfoReadReq struct { func (x *FirmwareInfoReadReq) Reset() { *x = FirmwareInfoReadReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[165] + mi := &file_proto_dm_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12055,7 +12134,7 @@ func (x *FirmwareInfoReadReq) String() string { func (*FirmwareInfoReadReq) ProtoMessage() {} func (x *FirmwareInfoReadReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[165] + mi := &file_proto_dm_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12068,7 +12147,7 @@ func (x *FirmwareInfoReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareInfoReadReq.ProtoReflect.Descriptor instead. func (*FirmwareInfoReadReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{165} + return file_proto_dm_proto_rawDescGZIP(), []int{166} } func (x *FirmwareInfoReadReq) GetFirmwareID() int64 { @@ -12096,7 +12175,7 @@ type OtaFirmwareFileReq struct { func (x *OtaFirmwareFileReq) Reset() { *x = OtaFirmwareFileReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[166] + mi := &file_proto_dm_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12109,7 +12188,7 @@ func (x *OtaFirmwareFileReq) String() string { func (*OtaFirmwareFileReq) ProtoMessage() {} func (x *OtaFirmwareFileReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[166] + mi := &file_proto_dm_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12122,7 +12201,7 @@ func (x *OtaFirmwareFileReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareFileReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareFileReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{166} + return file_proto_dm_proto_rawDescGZIP(), []int{167} } func (x *OtaFirmwareFileReq) GetFileID() int64 { @@ -12200,7 +12279,7 @@ type OtaFirmwareFileInfo struct { func (x *OtaFirmwareFileInfo) Reset() { *x = OtaFirmwareFileInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[167] + mi := &file_proto_dm_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12213,7 +12292,7 @@ func (x *OtaFirmwareFileInfo) String() string { func (*OtaFirmwareFileInfo) ProtoMessage() {} func (x *OtaFirmwareFileInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[167] + mi := &file_proto_dm_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12226,7 +12305,7 @@ func (x *OtaFirmwareFileInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareFileInfo.ProtoReflect.Descriptor instead. func (*OtaFirmwareFileInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{167} + return file_proto_dm_proto_rawDescGZIP(), []int{168} } func (x *OtaFirmwareFileInfo) GetFileID() int64 { @@ -12303,14 +12382,14 @@ type OtaFirmwareFileResp struct { FilePath string `protobuf:"bytes,4,opt,name=filePath,proto3" json:"filePath,omitempty"` Size int64 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` Storage string `protobuf:"bytes,6,opt,name=storage,proto3" json:"storage,omitempty"` - // string signMethod = 7; + //string signMethod = 7; Signature string `protobuf:"bytes,7,opt,name=signature,proto3" json:"signature,omitempty"` } func (x *OtaFirmwareFileResp) Reset() { *x = OtaFirmwareFileResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[168] + mi := &file_proto_dm_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12323,7 +12402,7 @@ func (x *OtaFirmwareFileResp) String() string { func (*OtaFirmwareFileResp) ProtoMessage() {} func (x *OtaFirmwareFileResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[168] + mi := &file_proto_dm_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12336,7 +12415,7 @@ func (x *OtaFirmwareFileResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareFileResp.ProtoReflect.Descriptor instead. func (*OtaFirmwareFileResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{168} + return file_proto_dm_proto_rawDescGZIP(), []int{169} } func (x *OtaFirmwareFileResp) GetFileID() int64 { @@ -12401,7 +12480,7 @@ type OtaFirmwareFileIndexReq struct { func (x *OtaFirmwareFileIndexReq) Reset() { *x = OtaFirmwareFileIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[169] + mi := &file_proto_dm_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12414,7 +12493,7 @@ func (x *OtaFirmwareFileIndexReq) String() string { func (*OtaFirmwareFileIndexReq) ProtoMessage() {} func (x *OtaFirmwareFileIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[169] + mi := &file_proto_dm_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12427,7 +12506,7 @@ func (x *OtaFirmwareFileIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareFileIndexReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareFileIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{169} + return file_proto_dm_proto_rawDescGZIP(), []int{170} } func (x *OtaFirmwareFileIndexReq) GetPage() *PageInfo { @@ -12463,7 +12542,7 @@ type OtaFirmwareFileIndexResp struct { func (x *OtaFirmwareFileIndexResp) Reset() { *x = OtaFirmwareFileIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[170] + mi := &file_proto_dm_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12476,7 +12555,7 @@ func (x *OtaFirmwareFileIndexResp) String() string { func (*OtaFirmwareFileIndexResp) ProtoMessage() {} func (x *OtaFirmwareFileIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[170] + mi := &file_proto_dm_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12489,7 +12568,7 @@ func (x *OtaFirmwareFileIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareFileIndexResp.ProtoReflect.Descriptor instead. func (*OtaFirmwareFileIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{170} + return file_proto_dm_proto_rawDescGZIP(), []int{171} } func (x *OtaFirmwareFileIndexResp) GetList() []*OtaFirmwareFileInfo { @@ -12527,7 +12606,7 @@ type FirmwareInfoReadResp struct { func (x *FirmwareInfoReadResp) Reset() { *x = FirmwareInfoReadResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[171] + mi := &file_proto_dm_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12540,7 +12619,7 @@ func (x *FirmwareInfoReadResp) String() string { func (*FirmwareInfoReadResp) ProtoMessage() {} func (x *FirmwareInfoReadResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[171] + mi := &file_proto_dm_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12553,7 +12632,7 @@ func (x *FirmwareInfoReadResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareInfoReadResp.ProtoReflect.Descriptor instead. func (*FirmwareInfoReadResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{171} + return file_proto_dm_proto_rawDescGZIP(), []int{172} } func (x *FirmwareInfoReadResp) GetCreatedTime() int64 { @@ -12648,7 +12727,7 @@ type FirmwareFile struct { func (x *FirmwareFile) Reset() { *x = FirmwareFile{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[172] + mi := &file_proto_dm_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12661,7 +12740,7 @@ func (x *FirmwareFile) String() string { func (*FirmwareFile) ProtoMessage() {} func (x *FirmwareFile) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[172] + mi := &file_proto_dm_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12674,7 +12753,7 @@ func (x *FirmwareFile) ProtoReflect() protoreflect.Message { // Deprecated: Use FirmwareFile.ProtoReflect.Descriptor instead. func (*FirmwareFile) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{172} + return file_proto_dm_proto_rawDescGZIP(), []int{173} } func (x *FirmwareFile) GetName() string { @@ -12719,20 +12798,20 @@ type OtaFirmwareInfoCreateReq struct { ProductID string `protobuf:"bytes,2,opt,name=productID,proto3" json:"productID,omitempty"` //产品id Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` //固件升级包名称 - // * - // 当前OTA升级包的版本号,仅支持英文字母、数字、半角句号(.)、短划线(-)和下划线(_)。长度限制为1~64个字符。 + //* + //当前OTA升级包的版本号,仅支持英文字母、数字、半角句号(.)、短划线(-)和下划线(_)。长度限制为1~64个字符。 Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` //版本号 - // * - // OTA升级包签名方法。取值: - // MD5(默认):MD5签名。 - // SHA256:SHA256签名。 + //* + //OTA升级包签名方法。取值: + //MD5(默认):MD5签名。 + //SHA256:SHA256签名。 SignMethod string `protobuf:"bytes,6,opt,name=signMethod,proto3" json:"signMethod,omitempty"` //签名方法 Desc string `protobuf:"bytes,9,opt,name=desc,proto3" json:"desc,omitempty"` //文件描述 - // * - // OTA升级包类型。可选: - // 0:整包升级包,您上传的升级包文件包含完整的升级包,将推送整包升级包给设备进行升级。 - // 1:差分升级包,您上传的升级包文件仅包含新版本升级包与之前版本的差异部分,仅推送差异部分给设备进行升级。 - // 不传入此参数,则默认值为0。 + //* + //OTA升级包类型。可选: + //0:整包升级包,您上传的升级包文件包含完整的升级包,将推送整包升级包给设备进行升级。 + //1:差分升级包,您上传的升级包文件仅包含新版本升级包与之前版本的差异部分,仅推送差异部分给设备进行升级。 + //不传入此参数,则默认值为0。 IsDiff int64 `protobuf:"varint,10,opt,name=isDiff,proto3" json:"isDiff,omitempty"` //升级包类型 SrcVersion string `protobuf:"bytes,12,opt,name=srcVersion,proto3" json:"srcVersion,omitempty"` IsNeedToVerify int64 `protobuf:"varint,13,opt,name=isNeedToVerify,proto3" json:"isNeedToVerify,omitempty"` //是否需要验证 @@ -12744,7 +12823,7 @@ type OtaFirmwareInfoCreateReq struct { func (x *OtaFirmwareInfoCreateReq) Reset() { *x = OtaFirmwareInfoCreateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[173] + mi := &file_proto_dm_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12757,7 +12836,7 @@ func (x *OtaFirmwareInfoCreateReq) String() string { func (*OtaFirmwareInfoCreateReq) ProtoMessage() {} func (x *OtaFirmwareInfoCreateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[173] + mi := &file_proto_dm_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12770,7 +12849,7 @@ func (x *OtaFirmwareInfoCreateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareInfoCreateReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareInfoCreateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{173} + return file_proto_dm_proto_rawDescGZIP(), []int{174} } func (x *OtaFirmwareInfoCreateReq) GetProductID() string { @@ -12864,7 +12943,7 @@ type OtaFirmwareInfoUpdateReq struct { func (x *OtaFirmwareInfoUpdateReq) Reset() { *x = OtaFirmwareInfoUpdateReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[174] + mi := &file_proto_dm_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12877,7 +12956,7 @@ func (x *OtaFirmwareInfoUpdateReq) String() string { func (*OtaFirmwareInfoUpdateReq) ProtoMessage() {} func (x *OtaFirmwareInfoUpdateReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[174] + mi := &file_proto_dm_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12890,7 +12969,7 @@ func (x *OtaFirmwareInfoUpdateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareInfoUpdateReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareInfoUpdateReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{174} + return file_proto_dm_proto_rawDescGZIP(), []int{175} } func (x *OtaFirmwareInfoUpdateReq) GetId() int64 { @@ -12934,7 +13013,7 @@ type OtaFirmwareInfoIndexReq struct { func (x *OtaFirmwareInfoIndexReq) Reset() { *x = OtaFirmwareInfoIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[175] + mi := &file_proto_dm_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12947,7 +13026,7 @@ func (x *OtaFirmwareInfoIndexReq) String() string { func (*OtaFirmwareInfoIndexReq) ProtoMessage() {} func (x *OtaFirmwareInfoIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[175] + mi := &file_proto_dm_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12960,7 +13039,7 @@ func (x *OtaFirmwareInfoIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareInfoIndexReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareInfoIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{175} + return file_proto_dm_proto_rawDescGZIP(), []int{176} } func (x *OtaFirmwareInfoIndexReq) GetPage() *PageInfo { @@ -12996,7 +13075,7 @@ type OtaFirmwareInfoIndexResp struct { func (x *OtaFirmwareInfoIndexResp) Reset() { *x = OtaFirmwareInfoIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[176] + mi := &file_proto_dm_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13009,7 +13088,7 @@ func (x *OtaFirmwareInfoIndexResp) String() string { func (*OtaFirmwareInfoIndexResp) ProtoMessage() {} func (x *OtaFirmwareInfoIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[176] + mi := &file_proto_dm_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13022,7 +13101,7 @@ func (x *OtaFirmwareInfoIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareInfoIndexResp.ProtoReflect.Descriptor instead. func (*OtaFirmwareInfoIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{176} + return file_proto_dm_proto_rawDescGZIP(), []int{177} } func (x *OtaFirmwareInfoIndexResp) GetList() []*OtaFirmwareInfo { @@ -13063,7 +13142,7 @@ type OtaFirmwareInfo struct { func (x *OtaFirmwareInfo) Reset() { *x = OtaFirmwareInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[177] + mi := &file_proto_dm_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13076,7 +13155,7 @@ func (x *OtaFirmwareInfo) String() string { func (*OtaFirmwareInfo) ProtoMessage() {} func (x *OtaFirmwareInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[177] + mi := &file_proto_dm_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13089,7 +13168,7 @@ func (x *OtaFirmwareInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareInfo.ProtoReflect.Descriptor instead. func (*OtaFirmwareInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{177} + return file_proto_dm_proto_rawDescGZIP(), []int{178} } func (x *OtaFirmwareInfo) GetId() int64 { @@ -13200,33 +13279,37 @@ type OtaFirmwareJobInfo struct { Type int64 `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"` // 升级包所属产品的JobType。 验证升级包:1 批量升级:2 Status int64 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` // 批次状态,计划中:1 执行中:2 已完成:3 已取消:4 UpgradeType int64 `protobuf:"varint,5,opt,name=upgradeType,proto3" json:"upgradeType,omitempty"` // 升级策略,1-静态,2-动态 - // 待升级版本号列表。 - // 发起全量升级(TargetSelection=ALL)和灰度升级(TargetSelection=GRAY)任务时,可以传入该参数。 - // 使用差分升级包发起全量升级和灰度升级任务时,该参数值需指定为差分升级包的待升级版本号(SrcVersion)。 - // 发起定向升级(TargetSelection=SPECIFIC)或分组升级(TargetSelection=GROUP)任务时,不能传入该参数。 - // 可以调用 QueryDeviceDetail ,查看设备 OTA 模块版本号(FirmwareVersion)。 - // 列表中不能有重复的版本号。 - // 最多可传入 10 个版本号。 + // + //待升级版本号列表。 + //发起全量升级(TargetSelection=ALL)和灰度升级(TargetSelection=GRAY)任务时,可以传入该参数。 + //使用差分升级包发起全量升级和灰度升级任务时,该参数值需指定为差分升级包的待升级版本号(SrcVersion)。 + //发起定向升级(TargetSelection=SPECIFIC)或分组升级(TargetSelection=GROUP)任务时,不能传入该参数。 + //可以调用 QueryDeviceDetail ,查看设备 OTA 模块版本号(FirmwareVersion)。 + //列表中不能有重复的版本号。 + //最多可传入 10 个版本号。 SrcVersions []string `protobuf:"bytes,6,rep,name=srcVersions,proto3" json:"srcVersions,omitempty"` // 待升级版本号列表。最多可传入10个版本号。用逗号分隔多个版本号 RetryInterval int64 `protobuf:"varint,7,opt,name=retryInterval,proto3" json:"retryInterval,omitempty"` // 设备升级失败后,自动重试的时间间隔,单位为分钟。 动态升级 静态升级 -1 为不重试 RetryCount int64 `protobuf:"varint,8,opt,name=retryCount,proto3" json:"retryCount,omitempty"` // 自动重试次数。1/2/5次 动态升级 静态升级 TimeoutInMinutes int64 `protobuf:"varint,9,opt,name=timeoutInMinutes,proto3" json:"timeoutInMinutes,omitempty"` // 设备升级超时时间,单位为分钟。 动态升级 静态升级 MaximumPerMinute int64 `protobuf:"varint,10,opt,name=maximumPerMinute,proto3" json:"maximumPerMinute,omitempty"` // 每分钟最多向多少个设备推送升级包下载URL。 动态升级 静态升级 - // 是否覆盖之前的升级任务。取值: // - // 2(默认):不覆盖。若设备已有升级任务,则只执行已有任务。 - // 1:覆盖。设备只执行新的升级任务。此时 MultiModuleMode 不能传入 true。 - // 动态升级 静态升级 + //是否覆盖之前的升级任务。取值: + // + //2(默认):不覆盖。若设备已有升级任务,则只执行已有任务。 + //1:覆盖。设备只执行新的升级任务。此时 MultiModuleMode 不能传入 true。 + //动态升级 静态升级 IsOverwriteMode int64 `protobuf:"varint,11,opt,name=isOverwriteMode,proto3" json:"isOverwriteMode,omitempty"` // 是否覆盖之前的升级任务。取值:1(不覆盖)、2(覆盖)。 - // 物联网平台是否主动向设备推送升级任务。 - // 1(默认):是。批次任务创建完成后,物联网平台主动将升级任务,直接推送给升级范围内的在线设备。 - // 此时,设备仍可主动向物联网平台发起请求,来获取 OTA 升级任务信息。 - // 2:否。设备必须通过向物联网平台发起请求,来获取 OTA 升级任务信息。 - // 动态升级 + // + //物联网平台是否主动向设备推送升级任务。 + //1(默认):是。批次任务创建完成后,物联网平台主动将升级任务,直接推送给升级范围内的在线设备。 + //此时,设备仍可主动向物联网平台发起请求,来获取 OTA 升级任务信息。 + //2:否。设备必须通过向物联网平台发起请求,来获取 OTA 升级任务信息。 + //动态升级 IsNeedPush int64 `protobuf:"varint,12,opt,name=isNeedPush,proto3" json:"isNeedPush,omitempty"` // 物联网平台是否主动向设备推送升级任务。 - // 如需自主控制设备 OTA 升级时,可配置此参数,通过手机 App 来控制,设备是否可进行 OTA 升级。手机 App 需您自行开发。 - // 2(默认):否。直接按照 NeedPush 设置,获取 OTA 升级任务信息。 - // 1:是。设备无法获取 OTA 升级任务,需 App 侧确认 OTA 升级后,才能按照 NeedPush 设置,获取 OTA 升级任务信息。 + // + //如需自主控制设备 OTA 升级时,可配置此参数,通过手机 App 来控制,设备是否可进行 OTA 升级。手机 App 需您自行开发。 + //2(默认):否。直接按照 NeedPush 设置,获取 OTA 升级任务信息。 + //1:是。设备无法获取 OTA 升级任务,需 App 侧确认 OTA 升级后,才能按照 NeedPush 设置,获取 OTA 升级任务信息。 IsNeedConfirm int64 `protobuf:"varint,13,opt,name=isNeedConfirm,proto3" json:"isNeedConfirm,omitempty"` TargetSelection int64 `protobuf:"varint,14,opt,name=targetSelection,proto3" json:"targetSelection,omitempty"` //升级范围。 1:全量升级。 2:定向升级。 3:灰度升级。 4:分组升级(不做) 5: 区域升级(不做) Dynamic *OtaJobDynamicInfo `protobuf:"bytes,15,opt,name=dynamic,proto3" json:"dynamic,omitempty"` @@ -13239,7 +13322,7 @@ type OtaFirmwareJobInfo struct { func (x *OtaFirmwareJobInfo) Reset() { *x = OtaFirmwareJobInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[178] + mi := &file_proto_dm_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13252,7 +13335,7 @@ func (x *OtaFirmwareJobInfo) String() string { func (*OtaFirmwareJobInfo) ProtoMessage() {} func (x *OtaFirmwareJobInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[178] + mi := &file_proto_dm_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13265,7 +13348,7 @@ func (x *OtaFirmwareJobInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareJobInfo.ProtoReflect.Descriptor instead. func (*OtaFirmwareJobInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{178} + return file_proto_dm_proto_rawDescGZIP(), []int{179} } func (x *OtaFirmwareJobInfo) GetId() int64 { @@ -13406,17 +13489,18 @@ type OtaJobDynamicInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // 动态升级模式。取值范围: - // 1(默认):除了升级当前满足升级条件的设备,还将持续检查设备是否满足升级条件,对满足升级条件的设备进行升级。 - // 2:仅对后续上报新版本号的设备生效。 - // 动态升级 + // + //动态升级模式。取值范围: + //1(默认):除了升级当前满足升级条件的设备,还将持续检查设备是否满足升级条件,对满足升级条件的设备进行升级。 + //2:仅对后续上报新版本号的设备生效。 + //动态升级 DynamicMode int64 `protobuf:"varint,1,opt,name=dynamicMode,proto3" json:"dynamicMode,omitempty"` // } func (x *OtaJobDynamicInfo) Reset() { *x = OtaJobDynamicInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[179] + mi := &file_proto_dm_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13429,7 +13513,7 @@ func (x *OtaJobDynamicInfo) String() string { func (*OtaJobDynamicInfo) ProtoMessage() {} func (x *OtaJobDynamicInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[179] + mi := &file_proto_dm_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13442,7 +13526,7 @@ func (x *OtaJobDynamicInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaJobDynamicInfo.ProtoReflect.Descriptor instead. func (*OtaJobDynamicInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{179} + return file_proto_dm_proto_rawDescGZIP(), []int{180} } func (x *OtaJobDynamicInfo) GetDynamicMode() int64 { @@ -13457,23 +13541,26 @@ type OtaJobStaticInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // 定向升级的设备名称列表。 - // 使用差分升级包进行定向升级时,要升级的设备的当前 OTA 模块版本号需与差分升级包的待升级版本号(SrcVersion)相同。 - // 可以调用 QueryDeviceDetail ,查看设备 OTA 模块版本号(FirmwareVersion)。 - // 列表中的设备所属的产品必须与升级包所属产品一致。 - // 列表中不能有重复的设备名称。 - // 最多可传入 200 个设备名称。 - // 静态升级 + // + //定向升级的设备名称列表。 + //使用差分升级包进行定向升级时,要升级的设备的当前 OTA 模块版本号需与差分升级包的待升级版本号(SrcVersion)相同。 + //可以调用 QueryDeviceDetail ,查看设备 OTA 模块版本号(FirmwareVersion)。 + //列表中的设备所属的产品必须与升级包所属产品一致。 + //列表中不能有重复的设备名称。 + //最多可传入 200 个设备名称。 + //静态升级 TargetDeviceNames []string `protobuf:"bytes,1,rep,name=targetDeviceNames,proto3" json:"targetDeviceNames,omitempty"` // 定向升级的设备名称列表。最多可传入200个设备名称。以逗号分隔 - // 指定结束升级的时间。 - // 结束时间距发起时间(ScheduleTime)最少 1 小时,最多为 30 天。取值为 13 位毫秒值时间戳。 - // 不传入该参数,则表示不会强制结束升级。 - // 静态升级 + // + //指定结束升级的时间。 + //结束时间距发起时间(ScheduleTime)最少 1 小时,最多为 30 天。取值为 13 位毫秒值时间戳。 + //不传入该参数,则表示不会强制结束升级。 + //静态升级 ScheduleFinishTime int64 `protobuf:"varint,2,opt,name=scheduleFinishTime,proto3" json:"scheduleFinishTime,omitempty"` // 指定结束升级的时间,单位为毫秒。 - // 指定发起 OTA 升级的时间。 - // 定时时间范围需为当前时间的 5 分钟后至 7 天内。取值为秒时间戳。 - // 不传入该参数,则表示立即升级。 - // 静态升级 + // + //指定发起 OTA 升级的时间。 + //定时时间范围需为当前时间的 5 分钟后至 7 天内。取值为秒时间戳。 + //不传入该参数,则表示立即升级。 + //静态升级 ScheduleTime int64 `protobuf:"varint,3,opt,name=scheduleTime,proto3" json:"scheduleTime,omitempty"` GrayPercent int64 `protobuf:"varint,4,opt,name=grayPercent,proto3" json:"grayPercent,omitempty"` //灰度的范围,小数点后两位, 1.23%为 123 } @@ -13481,7 +13568,7 @@ type OtaJobStaticInfo struct { func (x *OtaJobStaticInfo) Reset() { *x = OtaJobStaticInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[180] + mi := &file_proto_dm_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13494,7 +13581,7 @@ func (x *OtaJobStaticInfo) String() string { func (*OtaJobStaticInfo) ProtoMessage() {} func (x *OtaJobStaticInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[180] + mi := &file_proto_dm_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13507,7 +13594,7 @@ func (x *OtaJobStaticInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaJobStaticInfo.ProtoReflect.Descriptor instead. func (*OtaJobStaticInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{180} + return file_proto_dm_proto_rawDescGZIP(), []int{181} } func (x *OtaJobStaticInfo) GetTargetDeviceNames() []string { @@ -13552,7 +13639,7 @@ type OtaFirmwareJobIndexReq struct { func (x *OtaFirmwareJobIndexReq) Reset() { *x = OtaFirmwareJobIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[181] + mi := &file_proto_dm_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13565,7 +13652,7 @@ func (x *OtaFirmwareJobIndexReq) String() string { func (*OtaFirmwareJobIndexReq) ProtoMessage() {} func (x *OtaFirmwareJobIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[181] + mi := &file_proto_dm_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13578,7 +13665,7 @@ func (x *OtaFirmwareJobIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareJobIndexReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareJobIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{181} + return file_proto_dm_proto_rawDescGZIP(), []int{182} } func (x *OtaFirmwareJobIndexReq) GetPage() *PageInfo { @@ -13621,7 +13708,7 @@ type OtaFirmwareJobIndexResp struct { func (x *OtaFirmwareJobIndexResp) Reset() { *x = OtaFirmwareJobIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[182] + mi := &file_proto_dm_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13634,7 +13721,7 @@ func (x *OtaFirmwareJobIndexResp) String() string { func (*OtaFirmwareJobIndexResp) ProtoMessage() {} func (x *OtaFirmwareJobIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[182] + mi := &file_proto_dm_proto_msgTypes[183] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13647,7 +13734,7 @@ func (x *OtaFirmwareJobIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareJobIndexResp.ProtoReflect.Descriptor instead. func (*OtaFirmwareJobIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{182} + return file_proto_dm_proto_rawDescGZIP(), []int{183} } func (x *OtaFirmwareJobIndexResp) GetList() []*OtaFirmwareJobInfo { @@ -13678,7 +13765,7 @@ type OtaJobByDeviceIndexReq struct { func (x *OtaJobByDeviceIndexReq) Reset() { *x = OtaJobByDeviceIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[183] + mi := &file_proto_dm_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13691,7 +13778,7 @@ func (x *OtaJobByDeviceIndexReq) String() string { func (*OtaJobByDeviceIndexReq) ProtoMessage() {} func (x *OtaJobByDeviceIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[183] + mi := &file_proto_dm_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13704,7 +13791,7 @@ func (x *OtaJobByDeviceIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaJobByDeviceIndexReq.ProtoReflect.Descriptor instead. func (*OtaJobByDeviceIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{183} + return file_proto_dm_proto_rawDescGZIP(), []int{184} } func (x *OtaJobByDeviceIndexReq) GetPageInfo() *PageInfo { @@ -13749,7 +13836,7 @@ type OtaFirmwareDeviceIndexReq struct { func (x *OtaFirmwareDeviceIndexReq) Reset() { *x = OtaFirmwareDeviceIndexReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[184] + mi := &file_proto_dm_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13762,7 +13849,7 @@ func (x *OtaFirmwareDeviceIndexReq) String() string { func (*OtaFirmwareDeviceIndexReq) ProtoMessage() {} func (x *OtaFirmwareDeviceIndexReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[184] + mi := &file_proto_dm_proto_msgTypes[185] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13775,7 +13862,7 @@ func (x *OtaFirmwareDeviceIndexReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareDeviceIndexReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareDeviceIndexReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{184} + return file_proto_dm_proto_rawDescGZIP(), []int{185} } func (x *OtaFirmwareDeviceIndexReq) GetPage() *PageInfo { @@ -13829,7 +13916,7 @@ type OtaFirmwareDeviceInfo struct { func (x *OtaFirmwareDeviceInfo) Reset() { *x = OtaFirmwareDeviceInfo{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[185] + mi := &file_proto_dm_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13842,7 +13929,7 @@ func (x *OtaFirmwareDeviceInfo) String() string { func (*OtaFirmwareDeviceInfo) ProtoMessage() {} func (x *OtaFirmwareDeviceInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[185] + mi := &file_proto_dm_proto_msgTypes[186] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13855,7 +13942,7 @@ func (x *OtaFirmwareDeviceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareDeviceInfo.ProtoReflect.Descriptor instead. func (*OtaFirmwareDeviceInfo) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{185} + return file_proto_dm_proto_rawDescGZIP(), []int{186} } func (x *OtaFirmwareDeviceInfo) GetId() int64 { @@ -13961,7 +14048,7 @@ type OtaFirmwareDeviceIndexResp struct { func (x *OtaFirmwareDeviceIndexResp) Reset() { *x = OtaFirmwareDeviceIndexResp{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[186] + mi := &file_proto_dm_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13974,7 +14061,7 @@ func (x *OtaFirmwareDeviceIndexResp) String() string { func (*OtaFirmwareDeviceIndexResp) ProtoMessage() {} func (x *OtaFirmwareDeviceIndexResp) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[186] + mi := &file_proto_dm_proto_msgTypes[187] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13987,7 +14074,7 @@ func (x *OtaFirmwareDeviceIndexResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareDeviceIndexResp.ProtoReflect.Descriptor instead. func (*OtaFirmwareDeviceIndexResp) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{186} + return file_proto_dm_proto_rawDescGZIP(), []int{187} } func (x *OtaFirmwareDeviceIndexResp) GetList() []*OtaFirmwareDeviceInfo { @@ -14017,7 +14104,7 @@ type OtaFirmwareDeviceCancelReq struct { func (x *OtaFirmwareDeviceCancelReq) Reset() { *x = OtaFirmwareDeviceCancelReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[187] + mi := &file_proto_dm_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14030,7 +14117,7 @@ func (x *OtaFirmwareDeviceCancelReq) String() string { func (*OtaFirmwareDeviceCancelReq) ProtoMessage() {} func (x *OtaFirmwareDeviceCancelReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[187] + mi := &file_proto_dm_proto_msgTypes[188] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14043,7 +14130,7 @@ func (x *OtaFirmwareDeviceCancelReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareDeviceCancelReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareDeviceCancelReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{187} + return file_proto_dm_proto_rawDescGZIP(), []int{188} } func (x *OtaFirmwareDeviceCancelReq) GetFirmwareID() int64 { @@ -14080,7 +14167,7 @@ type OtaFirmwareDeviceRetryReq struct { func (x *OtaFirmwareDeviceRetryReq) Reset() { *x = OtaFirmwareDeviceRetryReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[188] + mi := &file_proto_dm_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14093,7 +14180,7 @@ func (x *OtaFirmwareDeviceRetryReq) String() string { func (*OtaFirmwareDeviceRetryReq) ProtoMessage() {} func (x *OtaFirmwareDeviceRetryReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[188] + mi := &file_proto_dm_proto_msgTypes[189] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14106,7 +14193,7 @@ func (x *OtaFirmwareDeviceRetryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareDeviceRetryReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareDeviceRetryReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{188} + return file_proto_dm_proto_rawDescGZIP(), []int{189} } func (x *OtaFirmwareDeviceRetryReq) GetFirmwareID() int64 { @@ -14142,7 +14229,7 @@ type OtaFirmwareDeviceConfirmReq struct { func (x *OtaFirmwareDeviceConfirmReq) Reset() { *x = OtaFirmwareDeviceConfirmReq{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[189] + mi := &file_proto_dm_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14155,7 +14242,7 @@ func (x *OtaFirmwareDeviceConfirmReq) String() string { func (*OtaFirmwareDeviceConfirmReq) ProtoMessage() {} func (x *OtaFirmwareDeviceConfirmReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[189] + mi := &file_proto_dm_proto_msgTypes[190] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14168,7 +14255,7 @@ func (x *OtaFirmwareDeviceConfirmReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OtaFirmwareDeviceConfirmReq.ProtoReflect.Descriptor instead. func (*OtaFirmwareDeviceConfirmReq) Descriptor() ([]byte, []int) { - return file_proto_dm_proto_rawDescGZIP(), []int{189} + return file_proto_dm_proto_rawDescGZIP(), []int{190} } func (x *OtaFirmwareDeviceConfirmReq) GetProductID() string { @@ -14190,16 +14277,16 @@ type PageInfo_OrderBy struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // 排序的字段名 + //排序的字段名 Field string `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"` - // 排序方式:1 从小到大, 2 从大到小 + //排序方式:1 从小到大, 2 从大到小 Sort int64 `protobuf:"varint,2,opt,name=sort,proto3" json:"sort,omitempty"` } func (x *PageInfo_OrderBy) Reset() { *x = PageInfo_OrderBy{} if protoimpl.UnsafeEnabled { - mi := &file_proto_dm_proto_msgTypes[190] + mi := &file_proto_dm_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14212,7 +14299,7 @@ func (x *PageInfo_OrderBy) String() string { func (*PageInfo_OrderBy) ProtoMessage() {} func (x *PageInfo_OrderBy) ProtoReflect() protoreflect.Message { - mi := &file_proto_dm_proto_msgTypes[190] + mi := &file_proto_dm_proto_msgTypes[191] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14446,2331 +14533,2345 @@ var file_proto_dm_proto_rawDesc = []byte{ 0x50, 0x65, 0x72, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x09, 0x53, 0x68, 0x61, 0x72, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x65, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x65, 0x72, 0x6d, - 0x22, 0x8a, 0x04, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, - 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x50, 0x65, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x6d, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x50, 0x65, 0x72, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x4c, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, - 0x65, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x6d, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x65, - 0x72, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, - 0x65, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, - 0x07, 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x1a, 0x4c, 0x0a, 0x0f, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50, 0x65, 0x72, 0x6d, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x50, 0x65, 0x72, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x4c, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x45, 0x6e, 0x74, + 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 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, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x6d, 0x67, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x22, 0x8f, 0x04, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x2d, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50, 0x65, 0x72, 0x6d, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, + 0x66, 0x6f, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50, 0x65, 0x72, 0x6d, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x4c, + 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x66, 0x6f, + 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x61, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x1a, 0x4c, 0x0a, 0x0f, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x50, 0x65, 0x72, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4c, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, + 0x6d, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x19, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0xbb, 0x01, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x22, 0x41, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x61, 0x76, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x22, 0xca, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x49, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x49, + 0x6d, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x65, + 0x61, 0x64, 0x49, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x49, 0x6d, 0x67, 0x12, 0x30, 0x0a, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x16, + 0x0a, 0x06, 0x69, 0x64, 0x50, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, + 0x69, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x4c, 0x65, 0x61, 0x66, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x73, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2f, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, + 0x6e, 0x22, 0x42, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x6d, 0x0a, 0x1d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x46, 0x61, 0x74, 0x68, + 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x46, 0x61, + 0x74, 0x68, 0x65, 0x72, 0x22, 0x73, 0x0a, 0x21, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x17, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x22, 0xa2, 0x01, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, + 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, + 0x6f, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x6f, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x4f, 0x0a, 0x17, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x59, 0x0a, + 0x18, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xb5, 0x01, 0x0a, 0x0f, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0xaf, 0x02, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, + 0x65, 0x73, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x74, 0x63, 0x64, 0x4b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x65, 0x74, 0x63, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x22, 0xaf, 0x01, 0x0a, + 0x12, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, + 0x65, 0x73, 0x63, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x50, 0x65, - 0x72, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, - 0x19, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbb, 0x01, 0x0a, 0x1d, 0x55, - 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, - 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, - 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x61, 0x76, - 0x65, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, - 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xca, 0x02, 0x0a, 0x0f, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x49, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x49, 0x6d, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x73, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x49, 0x6d, 0x67, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x49, 0x6d, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x64, 0x50, 0x61, 0x74, 0x68, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x69, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, - 0x06, 0x69, 0x73, 0x4c, 0x65, 0x61, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, - 0x73, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, - 0x72, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x08, - 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x42, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x6d, 0x0a, 0x1d, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a, - 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x77, - 0x69, 0x74, 0x68, 0x46, 0x61, 0x74, 0x68, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x77, 0x69, 0x74, 0x68, 0x46, 0x61, 0x74, 0x68, 0x65, 0x72, 0x22, 0x73, 0x0a, 0x21, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x20, - 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x22, 0x9b, 0x01, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x10, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x22, 0x59, - 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xa2, 0x01, 0x0a, 0x14, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x53, - 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x22, 0x4f, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, - 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x22, 0x59, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, - 0xb5, 0x01, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xaf, 0x02, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 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, 0x12, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x74, 0x63, 0x64, - 0x4b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x74, 0x63, 0x64, 0x4b, - 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, - 0x38, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x13, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, - 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, - 0x6f, 0x72, 0x74, 0x22, 0xaf, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, - 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x36, 0x0a, 0x0f, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x69, 0x0a, - 0x0b, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, - 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, - 0x74, 0x61, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x72, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x36, + 0x0a, 0x0f, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x23, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x69, 0x0a, 0x0b, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x22, 0x72, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x18, 0x0a, 0x07, 0x64, + 0x61, 0x74, 0x61, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x61, + 0x74, 0x61, 0x49, 0x44, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x13, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x46, 0x75, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x72, 0x67, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x66, + 0x69, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x6c, 0x12, + 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x73, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0x4c, 0x6f, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x73, 0x22, 0x5d, 0x0a, 0x0f, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, + 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, + 0x61, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x55, 0x0a, 0x14, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x22, 0xda, 0x01, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, + 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x70, 0x0a, + 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, + 0x4f, 0x0a, 0x11, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x22, 0x92, 0x02, 0x0a, 0x0e, 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x49, 0x44, 0x22, 0x4b, 0x0a, 0x0f, 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, + 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, + 0x6d, 0x2e, 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x22, 0xec, 0x01, 0x0a, 0x0a, 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x20, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, + 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x51, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 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, + 0x22, 0xfb, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x18, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x73, 0x22, 0x93, 0x01, 0x0a, - 0x19, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, - 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, - 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, - 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, - 0x74, 0x61, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x46, - 0x75, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x72, 0x67, 0x46, 0x75, - 0x6e, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x66, 0x69, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x73, 0x0a, 0x19, - 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x49, - 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, - 0x73, 0x22, 0x5d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x55, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, - 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xda, 0x01, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x22, 0x70, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4f, 0x0a, 0x11, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, - 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x92, 0x02, 0x0a, 0x0e, 0x48, 0x75, 0x62, 0x4c, - 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, - 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, - 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x22, 0x4b, 0x0a, 0x0f, - 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xec, 0x01, 0x0a, 0x0a, 0x48, 0x75, - 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, - 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, - 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x70, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, - 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x45, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, + 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, + 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, + 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x9f, 0x02, + 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x16, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x49, 0x44, 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, + 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, + 0xc4, 0x01, 0x0a, 0x0e, 0x53, 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x51, - 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, - 0x74, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0xfb, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, - 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, - 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, - 0x64, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x4b, 0x0a, 0x0f, 0x53, 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, - 0x23, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x6c, 0x69, 0x73, 0x74, 0x22, 0x9f, 0x02, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x44, 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, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, - 0x74, 0x61, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, 0x61, - 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 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, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x0e, 0x53, 0x64, 0x6b, 0x4c, 0x6f, - 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, - 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x4b, 0x0a, - 0x0f, 0x53, 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x64, 0x6b, 0x4c, 0x6f, 0x67, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x0a, 0x53, 0x64, - 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xcd, 0x01, 0x0a, - 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x1a, 0x0a, 0x08, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, - 0x41, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, - 0x73, 0x79, 0x6e, 0x63, 0x12, 0x26, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x76, 0x0a, 0x0e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, - 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x22, 0x67, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x70, 0x52, 0x65, 0x61, 0x64, - 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 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, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xff, 0x01, - 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x31, 0x0a, 0x0b, 0x77, 0x69, - 0x74, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, - 0x39, 0x0a, 0x0b, 0x57, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0d, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, + 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x64, 0x6d, 0x2e, 0x53, 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, + 0x69, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x0a, 0x53, 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xcd, 0x01, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x26, 0x0a, + 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x76, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x67, 0x0a, + 0x0b, 0x52, 0x65, 0x73, 0x70, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, - 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, - 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x22, 0x5b, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, - 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x0a, - 0x12, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, - 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 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, 0x22, 0x74, 0x0a, 0x18, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, - 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, - 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x0a, 0x73, 0x75, 0x62, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x64, 0x4d, - 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x22, 0xaf, 0x02, 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x24, - 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x73, - 0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x73, 0x79, - 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xca, 0x01, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, - 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, + 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xff, 0x01, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, - 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x4d, 0x73, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x79, 0x73, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x79, 0x73, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x79, 0x73, 0x43, - 0x6f, 0x64, 0x65, 0x22, 0x4e, 0x0a, 0x1c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x22, 0x7f, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, - 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, - 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x5a, 0x0a, - 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x36, 0x0a, 0x16, 0x52, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x73, 0x68, 0x41, 0x6c, 0x6c, - 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 0x22, 0x37, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, + 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, + 0x73, 0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x73, + 0x79, 0x6e, 0x63, 0x12, 0x31, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x79, 0x6e, + 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x39, 0x0a, 0x0b, 0x57, 0x69, 0x74, 0x68, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x44, 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, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x22, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x5b, 0x0a, 0x17, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, + 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x73, + 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x0a, 0x12, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x47, 0x0a, 0x18, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, - 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x69, - 0x6e, 0x66, 0x6f, 0x22, 0x34, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x92, 0x02, 0x0a, 0x0d, 0x50, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x0f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x53, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x41, - 0x75, 0x74, 0x68, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x69, 0x63, - 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x22, 0x41, - 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x74, 0x0a, 0x18, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x53, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x2e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x43, 0x6f, 0x72, 0x65, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x22, 0x3c, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x0d, + 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0xaf, 0x02, + 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x29, 0x0a, 0x04, 0x73, - 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, - 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, - 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, - 0x6f, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x22, 0xba, 0x01, 0x0a, 0x1b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x28, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, - 0x65, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, - 0x4e, 0x6f, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x1e, 0x0a, 0x0a, - 0x69, 0x73, 0x41, 0x75, 0x74, 0x68, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x69, 0x73, 0x41, 0x75, 0x74, 0x68, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x2f, 0x0a, 0x04, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x69, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x91, 0x01, - 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x09, 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x22, 0x52, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x8b, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x20, 0x0a, - 0x0b, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, - 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x22, 0x42, 0x0a, 0x16, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x61, - 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, - 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, + 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x6b, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0xec, 0x03, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x20, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2b, - 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, - 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x4c, 0x65, 0x61, - 0x66, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x73, 0x4c, 0x65, 0x61, 0x66, 0x12, - 0x29, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, - 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, - 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, - 0x65, 0x61, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, - 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x64, 0x65, 0x73, 0x63, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, - 0x65, 0x61, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, - 0x49, 0x44, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x49, 0x44, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, - 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x4d, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x22, 0xd9, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 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, 0x12, 0x0a, 0x04, - 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, - 0x12, 0x34, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x44, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, - 0x17, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x44, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, - 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, - 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, + 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, + 0x61, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, + 0xca, 0x01, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x59, 0x0a, 0x19, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x44, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, - 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x41, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, - 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x22, 0xcc, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x22, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, - 0x72, 0x65, 0x61, 0x49, 0x44, 0x50, 0x61, 0x74, 0x68, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 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, 0x20, 0x0a, - 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, - 0x6d, 0x65, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6d, 0x65, 0x69, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, - 0x63, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x61, 0x72, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x61, 0x72, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x25, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x34, 0x0a, 0x06, 0x61, 0x64, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, - 0x61, 0x64, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x10, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x18, 0x25, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x6f, 0x62, 0x69, - 0x6c, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0e, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x32, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x63, 0x63, 0x69, 0x64, 0x18, 0x18, 0x20, + 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, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x1a, + 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6d, 0x73, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, + 0x73, 0x4d, 0x73, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x73, 0x4d, + 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x79, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x79, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4e, 0x0a, 0x1c, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x04, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, + 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x7f, 0x0a, 0x13, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4f, 0x0a, + 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x56, + 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x5a, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x22, 0x36, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x50, 0x75, 0x73, 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x37, 0x0a, 0x17, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, + 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x44, 0x22, 0x47, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x2b, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x34, 0x0a, 0x14, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x61, + 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x22, 0x92, 0x02, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x61, 0x6e, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x61, + 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x53, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x6c, 0x6f, + 0x67, 0x69, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x69, 0x63, 0x63, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x72, - 0x73, 0x73, 0x69, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x1e, 0x0a, 0x0a, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0c, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x18, 0x1d, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, - 0x6e, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1e, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x18, - 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x49, 0x44, 0x50, 0x61, 0x74, - 0x68, 0x57, 0x69, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x2a, 0x0a, 0x10, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x4a, 0x6f, - 0x62, 0x49, 0x44, 0x18, 0x27, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x4e, 0x65, 0x65, 0x64, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x4a, 0x6f, 0x62, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x4e, - 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x29, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, - 0x67, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, - 0x44, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x2e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x1a, 0x37, 0x0a, + 0x65, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x69, + 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x22, 0x41, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x1c, 0x0a, 0x09, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x69, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 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, 0x29, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x22, + 0x87, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, + 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x1b, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x07, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x41, 0x75, 0x74, 0x68, 0x53, + 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x75, 0x74, + 0x68, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, + 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, + 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x09, + 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, + 0x09, 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x52, 0x0a, 0x16, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, + 0x72, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x8b, + 0x01, 0x0a, 0x19, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x07, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4e, + 0x6f, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x42, 0x0a, 0x16, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x22, 0x6b, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x61, 0x6e, 0x42, 0x69, + 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x0a, 0x73, + 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, + 0x0a, 0x73, 0x75, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xec, 0x03, + 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, + 0x61, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, + 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, + 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x4c, 0x65, 0x61, 0x66, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x69, 0x73, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x29, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x72, 0x65, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, 0x01, 0x0a, + 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, 0xeb, 0x01, + 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x33, 0x0a, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x6d, + 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x71, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4d, 0x0a, 0x12, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x21, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xd9, 0x01, 0x0a, 0x12, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x2e, + 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x94, 0x08, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x74, - 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x75, 0x74, - 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, - 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, - 0x63, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, - 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, - 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2f, - 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, - 0x45, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x18, - 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, - 0x6f, 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x39, 0x0a, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x55, 0x69, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x55, 0x69, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x55, 0x69, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x50, 0x0a, 0x0d, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, 0x69, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x55, 0x69, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5f, - 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, - 0x69, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x69, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x69, 0x22, - 0x34, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x7a, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x69, 0x74, - 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x22, 0x0a, - 0x0c, 0x77, 0x69, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x22, 0x8b, 0x06, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x20, 0x0a, - 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 0x12, - 0x35, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, - 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x69, 0x74, - 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x22, 0x0a, - 0x0c, 0x77, 0x69, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x11, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, - 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, - 0x61, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, - 0x44, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x49, 0x44, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, - 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, 0x6e, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x17, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x04, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, + 0x8f, 0x01, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 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, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x22, 0x59, 0x0a, 0x19, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x41, + 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, + 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, + 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x22, 0xcc, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x22, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x1a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x1c, + 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, + 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, + 0x65, 0x61, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x50, 0x61, + 0x74, 0x68, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 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, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x63, 0x65, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6d, 0x65, 0x69, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x69, 0x6d, 0x65, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, + 0x0a, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x08, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x64, + 0x6d, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x61, 0x64, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x64, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x2c, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x18, 0x25, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6d, 0x6f, 0x62, 0x69, 0x6c, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x05, 0x70, 0x68, 0x6f, + 0x6e, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x32, 0x0a, + 0x05, 0x69, 0x63, 0x63, 0x69, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x63, 0x63, 0x69, + 0x64, 0x12, 0x41, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, + 0x77, 0x65, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x6d, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x1f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x21, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x64, 0x6d, 0x2e, 0x49, 0x44, 0x50, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, + 0x72, 0x12, 0x35, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x26, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x07, 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x4e, 0x65, 0x65, 0x64, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x4a, 0x6f, 0x62, 0x49, 0x44, 0x18, 0x27, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x10, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x4a, + 0x6f, 0x62, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x29, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x07, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x51, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x22, 0x4d, 0x0a, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x12, 0x32, 0x0a, - 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x64, 0x6d, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, 0x69, 0x78, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x22, 0x78, 0x0a, 0x14, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, - 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, 0x69, 0x78, 0x12, 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x41, 0x74, 0x22, 0x53, 0x0a, 0x13, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, - 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, - 0x22, 0x4a, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x71, 0x0a, 0x0b, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, - 0x73, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x44, 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, 0x20, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x22, 0xee, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, - 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x13, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x13, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x64, - 0x6d, 0x2e, 0x49, 0x44, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, - 0x77, 0x65, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x50, 0x6f, 0x77, 0x65, 0x72, 0x22, 0xfc, 0x08, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 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, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x34, - 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x07, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x19, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, - 0x6f, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0b, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, - 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x41, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x1d, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x41, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x2c, 0x0a, - 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x49, 0x44, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0b, - 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x77, 0x65, - 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, - 0x70, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x4f, 0x77, 0x6e, 0x65, - 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x68, 0x61, 0x73, 0x4f, 0x77, 0x6e, 0x65, - 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x1f, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x07, 0x65, 0x78, 0x70, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x07, 0x65, 0x78, - 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x63, 0x63, 0x69, 0x64, 0x18, 0x28, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x63, 0x63, 0x69, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x3e, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x3f, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x94, 0x08, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x18, + 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x73, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, + 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x08, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x12, + 0x39, 0x0a, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x26, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, + 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x39, 0x0a, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, 0x69, 0x18, 0x15, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, 0x69, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, 0x69, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x94, 0x01, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x15, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, - 0x41, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, - 0x66, 0x6f, 0x22, 0xfe, 0x04, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, - 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, - 0x13, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x77, 0x69, 0x74, 0x68, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, - 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x3c, 0x0a, - 0x19, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x57, 0x69, 0x74, 0x68, 0x46, 0x61, 0x74, 0x68, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x19, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x57, 0x69, 0x74, 0x68, 0x46, 0x61, 0x74, 0x68, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x69, - 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x75, 0x6e, - 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x75, - 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, - 0x65, 0x72, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, - 0x65, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, - 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, - 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x6f, 0x64, - 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x22, 0x57, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x04, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x6d, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xb9, 0x04, 0x0a, - 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, - 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x1c, 0x0a, - 0x09, 0x69, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x69, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x61, - 0x66, 0x66, 0x6f, 0x72, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x61, - 0x66, 0x66, 0x6f, 0x72, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, - 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x41, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x43, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x12, 0x29, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x66, 0x0a, - 0x1b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, - 0x29, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x56, 0x0a, 0x16, 0x50, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x43, 0x6f, 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x50, 0x0a, 0x0d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, + 0x69, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, 0x69, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5f, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x55, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x69, 0x22, 0x34, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x7a, + 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, + 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, 0x69, + 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x8b, 0x06, 0x0a, 0x13, 0x50, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x2e, + 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, + 0x4d, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x2e, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x22, + 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, 0x69, + 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, + 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x65, 0x6e, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, + 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, + 0x28, 0x03, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, + 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, + 0x03, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x73, 0x1a, 0x37, + 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x23, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x4d, 0x0a, 0x17, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x12, 0x32, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, 0x69, + 0x78, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x78, 0x0a, 0x14, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, + 0x69, 0x78, 0x12, 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, + 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, + 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, + 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x41, 0x74, 0x22, 0x53, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x4a, 0x0a, 0x0a, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x71, 0x0a, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x22, 0xf7, 0x02, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x03, 0x52, - 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, + 0x49, 0x44, 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, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x73, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x20, 0x0a, 0x0b, 0x77, + 0x69, 0x74, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0xee, 0x01, + 0x0a, 0x18, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x52, 0x13, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, + 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, + 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x49, 0x44, 0x50, 0x61, 0x74, + 0x68, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x1e, + 0x0a, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x22, 0xfc, + 0x08, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x73, 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, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x2e, 0x54, 0x61, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x72, + 0x65, 0x61, 0x49, 0x44, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x61, 0x72, 0x65, + 0x61, 0x49, 0x44, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, + 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, + 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x69, + 0x74, 0x68, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x77, 0x69, 0x74, 0x68, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x69, + 0x74, 0x68, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0b, 0x77, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, + 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x18, + 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x6f, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x41, + 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x6f, 0x74, + 0x41, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x64, 0x6d, + 0x2e, 0x49, 0x44, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x0a, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x74, + 0x36, 0x34, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x68, 0x61, 0x73, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x68, 0x61, 0x73, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x44, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x26, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x07, 0x65, 0x78, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x63, 0x63, 0x69, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, + 0x63, 0x63, 0x69, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, + 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x94, + 0x01, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x28, + 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, + 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x41, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xfe, 0x04, 0x0a, 0x14, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x13, 0x77, 0x69, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x3c, 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x57, 0x69, 0x74, 0x68, 0x46, 0x61, 0x74, + 0x68, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x57, 0x69, 0x74, 0x68, 0x46, 0x61, + 0x74, 0x68, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, + 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, + 0x65, 0x61, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1a, + 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x03, + 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x57, 0x0a, 0x15, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xb9, 0x04, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x30, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, + 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x59, 0x0a, 0x16, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x97, 0x04, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, + 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x69, 0x73, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x66, 0x66, 0x6f, 0x72, 0x64, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x61, 0x66, 0x66, 0x6f, 0x72, 0x64, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x41, + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x11, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x22, 0x43, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x04, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x66, 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x44, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x43, + 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, + 0x6e, 0x66, 0x6f, 0x22, 0x56, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x74, 0x61, - 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, - 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x69, 0x73, - 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x69, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x66, 0x66, - 0x6f, 0x72, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x61, 0x66, 0x66, - 0x6f, 0x72, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x22, 0x4b, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, - 0x74, 0x73, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x73, 0x6c, 0x22, 0x37, - 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, - 0x73, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x2c, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xf7, 0x02, 0x0a, 0x15, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x74, 0x61, + 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, + 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x12, + 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, + 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x59, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x29, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x22, 0x97, 0x04, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1a, + 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x73, + 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x69, 0x73, 0x43, 0x61, 0x6e, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x75, 0x6e, + 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, + 0x72, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x50, 0x65, + 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, + 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x69, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x66, 0x66, 0x6f, 0x72, 0x64, 0x61, 0x6e, 0x63, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x61, 0x66, 0x66, 0x6f, 0x72, 0x64, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x4b, 0x0a, 0x19, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x49, 0x6d, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x73, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x74, 0x73, 0x6c, 0x22, 0x37, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x73, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x74, 0x73, 0x6c, 0x22, 0x63, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, - 0x65, 0x71, 0x12, 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, - 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3e, - 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x61, 0x6e, 0x42, - 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x5a, - 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x22, 0x3e, 0x0a, 0x17, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x69, 0x6e, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x04, 0x65, 0x72, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x04, 0x65, 0x72, 0x72, 0x73, 0x22, 0x77, 0x0a, 0x11, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, + 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 0x22, 0x2c, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x54, 0x73, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, + 0x74, 0x73, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x73, 0x6c, 0x22, 0x63, + 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, - 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, - 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, - 0x6f, 0x64, 0x65, 0x22, 0x55, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x06, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x16, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x22, 0x6a, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x44, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x44, 0x73, 0x22, - 0x3a, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x0f, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x18, 0x0a, 0x07, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, - 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x77, 0x0a, 0x12, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, - 0x2b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x61, - 0x72, 0x65, 0x61, 0x49, 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x44, 0x73, 0x22, 0x77, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x06, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3e, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, + 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, + 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x5a, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, + 0x72, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x72, 0x65, + 0x61, 0x49, 0x44, 0x22, 0x3e, 0x0a, 0x17, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, + 0x0a, 0x04, 0x65, 0x72, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, + 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x04, 0x65, + 0x72, 0x72, 0x73, 0x22, 0x77, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x55, 0x0a, 0x15, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, + 0x64, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x6a, 0x0a, 0x0e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x44, 0x73, 0x22, 0x3a, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x6c, 0x69, 0x73, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x49, 0x44, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x77, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x2b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x0f, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, - 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x79, 0x0a, - 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x22, 0xe5, 0x02, 0x0a, 0x08, 0x46, 0x69, 0x72, - 0x6d, 0x77, 0x61, 0x72, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, - 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, - 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x1e, 0x0a, 0x0a, 0x73, - 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, - 0x07, 0x65, 0x78, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x78, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, - 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x22, 0x2e, 0x0a, 0x0c, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x01, + 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x77, 0x0a, 0x12, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x12, 0x2b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x07, 0x61, 0x72, 0x65, 0x61, 0x49, 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x44, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x79, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, + 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x22, 0xe5, 0x02, 0x0a, 0x08, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, - 0x22, 0x8b, 0x03, 0x0a, 0x0c, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, - 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, - 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, - 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, - 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x73, + 0x44, 0x69, 0x66, 0x66, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x65, - 0x78, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x78, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, - 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x41, - 0x0a, 0x0f, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x37, 0x0a, 0x15, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x22, 0x2e, 0x0a, 0x16, 0x46, 0x69, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x78, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, + 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x2e, 0x0a, 0x0c, 0x46, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x22, 0x8b, 0x03, 0x0a, 0x0c, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, + 0x44, 0x69, 0x66, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x73, 0x44, 0x69, + 0x66, 0x66, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, + 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x78, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x05, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, + 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x0f, 0x4f, 0x74, 0x61, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x15, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x76, 0x0a, 0x14, 0x46, 0x69, - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x49, 0x44, 0x22, 0x2e, 0x0a, 0x16, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, + 0x74, 0x68, 0x73, 0x22, 0x76, 0x0a, 0x14, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x22, 0x53, 0x0a, 0x15, 0x46, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x22, 0x35, 0x0a, 0x13, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x22, 0xdc, 0x01, 0x0a, 0x12, 0x4f, 0x74, 0x61, 0x46, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, + 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xfd, 0x01, 0x0a, 0x13, 0x4f, 0x74, 0x61, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, + 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, + 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x13, 0x4f, 0x74, 0x61, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x4f, 0x74, 0x61, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x44, 0x22, 0x53, 0x0a, 0x15, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x46, - 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x35, 0x0a, 0x13, 0x46, 0x69, 0x72, 0x6d, 0x77, - 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1e, - 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x22, 0xdc, - 0x01, 0x0a, 0x12, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xfd, 0x01, - 0x0a, 0x13, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, - 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xbd, 0x01, - 0x0a, 0x13, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x8c, 0x01, - 0x0a, 0x17, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, - 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, - 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x5d, 0x0a, 0x18, - 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, - 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x97, 0x03, 0x0a, 0x14, - 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x72, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x5d, 0x0a, 0x18, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x97, 0x03, 0x0a, 0x14, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, + 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x78, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x2d, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x8a, + 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, + 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x22, 0xec, 0x02, 0x0a, 0x18, + 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x1e, 0x0a, 0x0a, - 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x30, 0x0a, 0x04, - 0x64, 0x65, 0x73, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x36, - 0x0a, 0x07, 0x65, 0x78, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, - 0x78, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, - 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x52, 0x05, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, - 0x4d, 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, - 0x64, 0x35, 0x22, 0xec, 0x02, 0x0a, 0x18, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, - 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, - 0x16, 0x0a, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x72, 0x63, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x4e, 0x65, 0x65, - 0x64, 0x54, 0x6f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0e, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x54, 0x6f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x44, 0x69, + 0x66, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x54, 0x6f, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, + 0x54, 0x6f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1c, 0x0a, 0x09, + 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x4f, + 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 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, 0x12, 0x0a, 0x04, 0x64, + 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, - 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x64, - 0x65, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x6d, 0x0a, 0x17, 0x4f, 0x74, - 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x18, 0x4f, 0x74, 0x61, - 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xa1, 0x03, 0x0a, 0x0f, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 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, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x64, 0x65, 0x73, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x2c, 0x0a, 0x08, 0x66, 0x69, - 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, - 0x6d, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x44, 0x69, - 0x66, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, - 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x54, 0x6f, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, - 0x54, 0x6f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xa7, 0x05, 0x0a, 0x12, 0x4f, 0x74, 0x61, - 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x75, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0b, 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x49, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, - 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x65, 0x72, 0x4d, - 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, - 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x12, 0x28, 0x0a, + 0x74, 0x72, 0x61, 0x22, 0x6d, 0x0a, 0x17, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, + 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, + 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x18, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, + 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, + 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xa1, 0x03, + 0x0a, 0x0f, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, + 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x12, 0x2c, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x69, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x4e, + 0x65, 0x65, 0x64, 0x54, 0x6f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0e, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x54, 0x6f, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0xa7, 0x05, 0x0a, 0x12, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x72, 0x63, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, + 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1e, + 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, + 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x49, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x65, 0x72, + 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x73, 0x4f, 0x76, 0x65, 0x72, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x4e, 0x65, 0x65, - 0x64, 0x50, 0x75, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x73, 0x4e, - 0x65, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x4e, 0x65, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x28, 0x0a, + 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, + 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, + 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x73, 0x4e, 0x65, 0x65, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, - 0x61, 0x4a, 0x6f, 0x62, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, - 0x61, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x20, - 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x12, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, - 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x11, 0x4f, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x44, 0x79, 0x6e, 0x61, - 0x6d, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x79, - 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x10, 0x4f, 0x74, - 0x61, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, - 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x16, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, - 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x5b, 0x0a, - 0x17, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, - 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x4f, - 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x42, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x93, 0x01, - 0x0a, 0x19, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, - 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, - 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, - 0x62, 0x49, 0x44, 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, 0x22, 0x87, 0x03, 0x0a, 0x15, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, - 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, - 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, - 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, - 0x62, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 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, 0x1e, 0x0a, 0x0a, 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x61, 0x0a, - 0x1a, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, - 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x22, 0x74, 0x0a, 0x1a, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1e, - 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x14, - 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, - 0x6f, 0x62, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x73, 0x0a, 0x19, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, - 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, - 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x1b, 0x4f, - 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x32, 0xaa, 0x0d, 0x0a, 0x0c, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x09, 0x72, 0x6f, 0x6f, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x6f, 0x6f, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0x3e, 0x0a, 0x14, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, - 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, 0x69, 0x78, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0x36, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, - 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x12, 0x2f, 0x0a, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x44, 0x79, 0x6e, + 0x61, 0x6d, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x11, 0x4f, + 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x6f, + 0x64, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x10, 0x4f, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x12, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x72, 0x61, + 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x67, 0x72, 0x61, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x16, + 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x5b, 0x0a, 0x17, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x4f, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x42, 0x79, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x28, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 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, 0x22, 0x93, 0x01, 0x0a, 0x19, 0x4f, 0x74, 0x61, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, + 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 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, 0x22, 0x87, 0x03, 0x0a, + 0x15, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, + 0x72, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 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, 0x1e, 0x0a, 0x0a, + 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x61, 0x0a, 0x1a, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, + 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x74, 0x0a, 0x1a, 0x4f, 0x74, 0x61, + 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, + 0x73, 0x0a, 0x19, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, + 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, + 0x6a, 0x6f, 0x62, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, + 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x1b, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, + 0x44, 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, 0x32, 0xaa, 0x0d, 0x0a, 0x0c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x12, 0x28, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, + 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x10, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x10, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, + 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x14, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, + 0x69, 0x78, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, 0x69, 0x78, 0x52, 0x65, 0x71, 0x1a, + 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x10, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x17, + 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, + 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, + 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, + 0x71, 0x1a, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x32, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, + 0x69, 0x6e, 0x64, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4e, 0x0a, 0x13, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x2e, 0x64, + 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x69, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, + 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, + 0x2d, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x6e, 0x62, + 0x69, 0x6e, 0x64, 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, + 0x6f, 0x72, 0x65, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x32, + 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x76, 0x65, + 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x76, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x52, + 0x0a, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, + 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, + 0x20, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x46, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, + 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, + 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x44, 0x0a, 0x18, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x37, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, - 0x64, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, - 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4e, 0x0a, 0x13, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, - 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, - 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x11, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, - 0x64, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x72, 0x65, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, - 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, - 0x12, 0x1e, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, - 0x1a, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x18, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x44, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, - 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x0f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, - 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x64, - 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, - 0x64, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x13, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, - 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x09, 0x2e, - 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x12, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, - 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x73, 0x70, 0x32, 0xd6, 0x0c, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x2e, 0x64, 0x6d, - 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, - 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0x45, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x18, + 0x4b, 0x0a, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, + 0x1a, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x18, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, + 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, + 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, + 0x0a, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x61, 0x64, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, + 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x3a, 0x0a, 0x13, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, + 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x13, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x4b, 0x0a, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x32, 0xd6, + 0x0c, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x12, + 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x69, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x12, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, + 0x2f, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x38, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x12, 0x16, 0x2e, 0x64, 0x6d, - 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, - 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x6d, - 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x3a, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x61, 0x64, 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x64, + 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, + 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x46, 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, - 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, - 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1d, 0x2e, - 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x54, 0x73, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, - 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x12, - 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, - 0x73, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x11, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x61, 0x64, 0x12, - 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x33, 0x0a, 0x13, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0x38, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x1a, - 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x37, 0x0a, 0x15, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, - 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3e, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x61, 0x64, 0x12, 0x12, - 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, - 0x65, 0x6e, 0x1a, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x63, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x20, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x25, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x54, 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, - 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x54, 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x64, - 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0xa7, - 0x02, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, - 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, - 0x6e, 0x69, 0x74, 0x12, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x12, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, - 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x72, 0x65, + 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, + 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x18, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x48, - 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, - 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x32, 0xe0, 0x03, 0x0a, 0x0e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, + 0x79, 0x12, 0x3c, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, + 0x4b, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, + 0x1a, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x16, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x73, 0x6c, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x51, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x54, 0x73, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x52, 0x65, + 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x73, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x61, 0x64, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x33, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x64, + 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, + 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x15, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x49, 0x44, 0x12, 0x37, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, + 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2e, 0x0a, + 0x15, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, + 0x14, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x3e, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x61, 0x64, 0x12, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, + 0x68, 0x49, 0x44, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x1a, 0x13, 0x2e, 0x64, 0x6d, + 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x12, 0x63, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, + 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, + 0x71, 0x1a, 0x22, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x54, 0x0a, 0x20, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, + 0x25, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, + 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x54, 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, + 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0xa7, 0x02, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x09, 0x2e, 0x64, + 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3a, + 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, + 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x2e, 0x64, + 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x32, 0xe0, 0x03, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x57, - 0x69, 0x74, 0x68, 0x49, 0x44, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x0a, 0x12, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x12, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, - 0x31, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, - 0x74, 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x37, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x09, 0x2e, - 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, + 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x61, 0x64, 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x43, 0x6f, + 0x64, 0x65, 0x1a, 0x10, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x10, 0x2e, 0x64, 0x6d, 0x2e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0a, 0x2e, 0x64, + 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x31, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x10, + 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x12, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, - 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, + 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x12, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x2e, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, + 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x51, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, - 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x32, 0x96, 0x04, 0x0a, 0x0b, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2c, 0x0a, 0x0f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x0d, - 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0a, 0x2e, - 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x3f, 0x0a, 0x0e, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x15, 0x2e, 0x64, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x32, 0x96, 0x04, 0x0a, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2c, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, + 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x49, 0x44, 0x12, 0x3f, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, - 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x0d, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x12, 0x12, 0x2e, 0x64, 0x6d, - 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x1a, - 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, - 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, - 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, - 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, - 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x2e, - 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x42, 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, + 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x61, 0x64, 0x12, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, + 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x1a, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x2e, 0x64, 0x6d, 0x2e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, + 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, + 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, + 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x61, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x40, 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x32, 0xa5, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0x48, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, - 0x1a, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x13, 0x52, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x73, 0x68, 0x41, - 0x6c, 0x6c, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x73, 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x14, 0x52, 0x65, 0x6d, + 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, + 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x16, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0xa5, 0x02, + 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, + 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x73, 0x68, 0x41, 0x6c, 0x6c, 0x12, 0x1a, 0x2e, 0x64, 0x6d, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x73, + 0x68, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x51, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x73, 0x74, + 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, - 0x64, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1c, - 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x32, 0xe2, 0x04, 0x0a, - 0x09, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x64, - 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x53, - 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, - 0x64, 0x6d, 0x2e, 0x53, 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0b, 0x68, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x48, 0x75, 0x62, 0x4c, 0x6f, - 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0c, 0x73, 0x65, - 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x13, 0x2e, 0x64, 0x6d, 0x2e, - 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, - 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3f, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, - 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x16, - 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, - 0x67, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x32, 0xe2, 0x04, 0x0a, 0x09, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x4d, 0x73, 0x67, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x64, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x64, 0x6b, 0x4c, + 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0b, 0x68, + 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x2e, 0x64, 0x6d, 0x2e, + 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x13, + 0x2e, 0x64, 0x6d, 0x2e, 0x48, 0x75, 0x62, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x65, + 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3f, + 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x51, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x45, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, + 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x10, 0x70, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x2e, - 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x3c, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x14, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, - 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x2e, - 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x64, - 0x6d, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x4e, 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x61, 0x6e, 0x42, - 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x61, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0d, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x2e, 0x64, 0x6d, 0x2e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, + 0x1a, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, - 0x70, 0x32, 0x96, 0x05, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x61, 0x63, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x6e, 0x64, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0a, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x12, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x73, - 0x70, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0a, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, - 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x54, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6e, - 0x64, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, - 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, - 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x71, 0x1a, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5d, - 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, - 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x64, 0x6d, - 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, - 0x13, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x52, 0x65, 0x61, 0x64, 0x12, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x65, - 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x0e, 0x2e, - 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, - 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, - 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x75, 0x6e, - 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, - 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x15, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6e, - 0x64, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, - 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0x96, 0x09, 0x0a, 0x09, 0x4f, - 0x74, 0x61, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x41, 0x0a, 0x15, 0x6f, 0x74, 0x61, 0x46, - 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x41, 0x0a, 0x15, 0x6f, - 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, - 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x2e, - 0x0a, 0x15, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, - 0x0a, 0x14, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, - 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x36, 0x0a, 0x13, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, - 0x74, 0x68, 0x49, 0x44, 0x1a, 0x13, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, - 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x14, 0x6f, 0x74, 0x61, - 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, - 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x4e, 0x0a, 0x13, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x2e, 0x64, - 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, - 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x12, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x61, 0x64, 0x12, 0x0a, 0x2e, 0x64, 0x6d, - 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, - 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x39, 0x0a, 0x14, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, - 0x62, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, - 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x1a, - 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x57, 0x0a, 0x16, 0x6f, 0x74, - 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, - 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x17, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x1e, - 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x16, 0x6f, 0x74, 0x61, - 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x74, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, - 0x18, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, - 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x13, 0x6f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x64, - 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, - 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x33, 0x0a, 0x13, 0x6f, - 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x2c, 0x0a, 0x13, 0x6f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4b, - 0x0a, 0x12, 0x6f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, - 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x11, 0x6f, - 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, - 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x43, 0x6f, 0x64, 0x65, - 0x1a, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x32, 0xb7, 0x07, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x44, 0x0a, 0x1c, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x61, 0x76, 0x65, 0x1a, 0x09, 0x2e, - 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x44, 0x0a, 0x1c, 0x75, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, - 0x61, 0x76, 0x65, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3e, - 0x0a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x61, 0x76, 0x65, 0x12, 0x3c, - 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x3b, 0x0a, 0x15, - 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x15, 0x75, 0x73, 0x65, - 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, - 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x1a, 0x75, 0x73, 0x65, - 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x2e, - 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4a, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, - 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x64, 0x6d, + 0x78, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x61, + 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, + 0x64, 0x6d, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x61, 0x6e, 0x42, 0x69, 0x6e, + 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x32, 0x96, 0x05, 0x0a, 0x0e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x12, 0x33, 0x0a, + 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x11, 0x2e, 0x64, 0x6d, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, + 0x2e, 0x64, 0x6d, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x64, + 0x12, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, + 0x71, 0x1a, 0x12, 0x2e, 0x64, 0x6d, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x54, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1a, + 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5d, 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, + 0x65, 0x6e, 0x64, 0x12, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x12, 0x0f, 0x2e, + 0x64, 0x6d, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1b, + 0x2e, 0x64, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x07, 0x73, + 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x64, 0x6d, 0x2e, 0x53, 0x65, 0x6e, 0x64, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x16, + 0x2e, 0x64, 0x6d, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x65, 0x74, 0x46, 0x6f, + 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x40, 0x0a, 0x15, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x42, 0x69, 0x6e, + 0x64, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x32, 0x96, 0x09, 0x0a, 0x09, 0x4f, 0x74, 0x61, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x12, 0x41, 0x0a, 0x15, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, + 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x49, 0x44, 0x12, 0x41, 0x0a, 0x15, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, + 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x15, 0x6f, 0x74, 0x61, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, + 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x14, 0x6f, 0x74, 0x61, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, + 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x13, 0x6f, 0x74, + 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, + 0x64, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x13, 0x2e, + 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x14, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x4a, 0x6f, 0x62, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, + 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, + 0x66, 0x6f, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x4e, + 0x0a, 0x13, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, + 0x71, 0x1a, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, + 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, + 0x0a, 0x12, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x61, 0x64, 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, + 0x1a, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x14, 0x6f, 0x74, 0x61, 0x46, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4a, 0x6f, 0x62, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x12, 0x16, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x57, 0x0a, 0x16, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, + 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x2e, + 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x64, + 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x17, + 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x1e, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, + 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x42, 0x0a, 0x16, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x64, + 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x18, 0x6f, 0x74, 0x61, 0x46, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x12, 0x1f, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x46, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x34, + 0x0a, 0x13, 0x6f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x49, 0x44, 0x12, 0x33, 0x0a, 0x13, 0x6f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x64, 0x6d, + 0x2e, 0x4f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, + 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x13, 0x6f, 0x74, 0x61, + 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x49, 0x44, 0x1a, 0x09, 0x2e, 0x64, + 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x12, 0x6f, 0x74, 0x61, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x2e, + 0x64, 0x6d, 0x2e, 0x4f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, 0x74, + 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x11, 0x6f, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x61, 0x64, 0x12, 0x0e, 0x2e, 0x64, 0x6d, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x49, 0x44, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x11, 0x2e, 0x64, 0x6d, 0x2e, 0x4f, + 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x32, 0xb7, 0x07, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x1c, 0x75, + 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x53, 0x61, 0x76, 0x65, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x44, 0x0a, 0x1c, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x12, 0x19, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x61, 0x76, 0x65, 0x1a, 0x09, 0x2e, 0x64, + 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x64, + 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x53, 0x61, 0x76, 0x65, 0x12, 0x3c, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0a, 0x2e, 0x64, 0x6d, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x49, 0x44, 0x12, 0x3b, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x17, + 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x1a, - 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x58, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, 0x44, - 0x65, 0x69, 0x76, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x1a, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x21, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, + 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x4a, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x61, + 0x64, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, + 0x12, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x64, 0x6d, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x1a, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x4a, 0x0a, 0x1a, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x69, 0x76, 0x63, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, - 0x21, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x07, 0x5a, - 0x05, 0x70, 0x62, 0x2f, 0x64, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x1a, 0x1d, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x58, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x69, 0x76, 0x63, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x2e, + 0x64, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x1c, 0x2e, 0x64, + 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x1a, 0x75, 0x73, + 0x65, 0x72, 0x44, 0x65, 0x69, 0x76, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x21, 0x2e, 0x64, 0x6d, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x64, 0x6d, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x07, 0x5a, 0x05, 0x70, 0x62, 0x2f, 0x64, 0x6d, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -16785,7 +16886,7 @@ func file_proto_dm_proto_rawDescGZIP() []byte { return file_proto_dm_proto_rawDescData } -var file_proto_dm_proto_msgTypes = make([]protoimpl.MessageInfo, 209) +var file_proto_dm_proto_msgTypes = make([]protoimpl.MessageInfo, 210) var file_proto_dm_proto_goTypes = []interface{}{ (*Empty)(nil), // 0: dm.Empty (*TimeRange)(nil), // 1: dm.TimeRange @@ -16814,629 +16915,631 @@ var file_proto_dm_proto_goTypes = []interface{}{ (*UserDeviceShareMultiDeleteReq)(nil), // 24: dm.UserDeviceShareMultiDeleteReq (*UserDeviceShareInfo)(nil), // 25: dm.UserDeviceShareInfo (*SharePerm)(nil), // 26: dm.SharePerm - (*UserDeviceShareMultiInfo)(nil), // 27: dm.UserDeviceShareMultiInfo - (*UserDeviceShareMultiToken)(nil), // 28: dm.UserDeviceShareMultiToken - (*UserDeviceShareMultiAcceptReq)(nil), // 29: dm.UserDeviceShareMultiAcceptReq - (*UserDeviceCollectSave)(nil), // 30: dm.UserDeviceCollectSave - (*ProductCategory)(nil), // 31: dm.ProductCategory - (*ProductCategorySchemaIndexResp)(nil), // 32: dm.ProductCategorySchemaIndexResp - (*ProductCategorySchemaIndexReq)(nil), // 33: dm.ProductCategorySchemaIndexReq - (*ProductCategorySchemaMultiSaveReq)(nil), // 34: dm.ProductCategorySchemaMultiSaveReq - (*ProductCategoryIndexReq)(nil), // 35: dm.ProductCategoryIndexReq - (*ProductCategoryIndexResp)(nil), // 36: dm.ProductCategoryIndexResp - (*ProtocolInfoIndexReq)(nil), // 37: dm.ProtocolInfoIndexReq - (*ProtocolInfoIndexResp)(nil), // 38: dm.ProtocolInfoIndexResp - (*ProtocolServiceIndexReq)(nil), // 39: dm.ProtocolServiceIndexReq - (*ProtocolServiceIndexResp)(nil), // 40: dm.ProtocolServiceIndexResp - (*ProtocolService)(nil), // 41: dm.ProtocolService - (*ProtocolInfo)(nil), // 42: dm.ProtocolInfo - (*ProtocolConfigField)(nil), // 43: dm.ProtocolConfigField - (*ProtocolConfigInfo)(nil), // 44: dm.ProtocolConfigInfo - (*ShadowIndexResp)(nil), // 45: dm.ShadowIndexResp - (*ShadowIndex)(nil), // 46: dm.ShadowIndex - (*PropertyGetReportSendReq)(nil), // 47: dm.PropertyGetReportSendReq - (*PropertyGetReportSendResp)(nil), // 48: dm.PropertyGetReportSendResp - (*PropertyLogIndexReq)(nil), // 49: dm.PropertyLogIndexReq - (*PropertyLogLatestIndexReq)(nil), // 50: dm.PropertyLogLatestIndexReq - (*PropertyLogInfo)(nil), // 51: dm.PropertyLogInfo - (*PropertyLogIndexResp)(nil), // 52: dm.PropertyLogIndexResp - (*EventLogIndexReq)(nil), // 53: dm.EventLogIndexReq - (*EventLogInfo)(nil), // 54: dm.EventLogInfo - (*EventLogIndexResp)(nil), // 55: dm.EventLogIndexResp - (*HubLogIndexReq)(nil), // 56: dm.HubLogIndexReq - (*HubLogIndexResp)(nil), // 57: dm.HubLogIndexResp - (*HubLogInfo)(nil), // 58: dm.HubLogInfo - (*StatusLogIndexReq)(nil), // 59: dm.StatusLogIndexReq - (*StatusLogIndexResp)(nil), // 60: dm.StatusLogIndexResp - (*StatusLogInfo)(nil), // 61: dm.StatusLogInfo - (*SendLogIndexReq)(nil), // 62: dm.SendLogIndexReq - (*SendLogIndexResp)(nil), // 63: dm.SendLogIndexResp - (*SendLogInfo)(nil), // 64: dm.SendLogInfo - (*SdkLogIndexReq)(nil), // 65: dm.SdkLogIndexReq - (*SdkLogIndexResp)(nil), // 66: dm.SdkLogIndexResp - (*SdkLogInfo)(nil), // 67: dm.SdkLogInfo - (*ActionSendReq)(nil), // 68: dm.ActionSendReq - (*ActionSendResp)(nil), // 69: dm.ActionSendResp - (*RespReadReq)(nil), // 70: dm.RespReadReq - (*PropertyControlSendReq)(nil), // 71: dm.PropertyControlSendReq - (*WithProfile)(nil), // 72: dm.WithProfile - (*ActionRespReq)(nil), // 73: dm.ActionRespReq - (*PropertyControlSendResp)(nil), // 74: dm.PropertyControlSendResp - (*GatewayGetFoundReq)(nil), // 75: dm.GatewayGetFoundReq - (*GatewayNotifyBindSendReq)(nil), // 76: dm.GatewayNotifyBindSendReq - (*SendMsgReq)(nil), // 77: dm.SendMsgReq - (*SendMsgResp)(nil), // 78: dm.SendMsgResp - (*PropertyControlMultiSendReq)(nil), // 79: dm.PropertyControlMultiSendReq - (*PropertyControlSendMsg)(nil), // 80: dm.PropertyControlSendMsg - (*PropertyControlMultiSendResp)(nil), // 81: dm.PropertyControlMultiSendResp - (*ProductRemoteConfig)(nil), // 82: dm.ProductRemoteConfig - (*RemoteConfigCreateReq)(nil), // 83: dm.RemoteConfigCreateReq - (*RemoteConfigIndexReq)(nil), // 84: dm.RemoteConfigIndexReq - (*RemoteConfigIndexResp)(nil), // 85: dm.RemoteConfigIndexResp - (*RemoteConfigPushAllReq)(nil), // 86: dm.RemoteConfigPushAllReq - (*RemoteConfigLastReadReq)(nil), // 87: dm.RemoteConfigLastReadReq - (*RemoteConfigLastReadResp)(nil), // 88: dm.RemoteConfigLastReadResp - (*ProductCustomReadReq)(nil), // 89: dm.ProductCustomReadReq - (*ProductCustom)(nil), // 90: dm.ProductCustom - (*CustomTopic)(nil), // 91: dm.CustomTopic - (*DeviceGatewayBindDevice)(nil), // 92: dm.DeviceGatewayBindDevice - (*DeviceGatewaySign)(nil), // 93: dm.DeviceGatewaySign - (*DeviceGatewayMultiCreateReq)(nil), // 94: dm.DeviceGatewayMultiCreateReq - (*DeviceGatewayIndexReq)(nil), // 95: dm.DeviceGatewayIndexReq - (*DeviceGatewayIndexResp)(nil), // 96: dm.DeviceGatewayIndexResp - (*DeviceGatewayMultiSaveReq)(nil), // 97: dm.DeviceGatewayMultiSaveReq - (*GatewayCanBindIndexReq)(nil), // 98: dm.GatewayCanBindIndexReq - (*GatewayCanBindIndexResp)(nil), // 99: dm.GatewayCanBindIndexResp - (*GroupInfo)(nil), // 100: dm.GroupInfo - (*GroupInfoCreateReq)(nil), // 101: dm.GroupInfoCreateReq - (*GroupInfoIndexReq)(nil), // 102: dm.GroupInfoIndexReq - (*GroupInfoIndexResp)(nil), // 103: dm.GroupInfoIndexResp - (*GroupInfoUpdateReq)(nil), // 104: dm.GroupInfoUpdateReq - (*GroupDeviceMultiSaveReq)(nil), // 105: dm.GroupDeviceMultiSaveReq - (*GroupDeviceIndexReq)(nil), // 106: dm.GroupDeviceIndexReq - (*GroupDeviceIndexResp)(nil), // 107: dm.GroupDeviceIndexResp - (*GroupDeviceMultiDeleteReq)(nil), // 108: dm.GroupDeviceMultiDeleteReq - (*Point)(nil), // 109: dm.Point - (*DeviceInfo)(nil), // 110: dm.DeviceInfo - (*ProductInfo)(nil), // 111: dm.ProductInfo - (*ProductCustomUi)(nil), // 112: dm.ProductCustomUi - (*ProductInfoDeleteReq)(nil), // 113: dm.ProductInfoDeleteReq - (*ProductInfoReadReq)(nil), // 114: dm.ProductInfoReadReq - (*ProductInfoIndexReq)(nil), // 115: dm.ProductInfoIndexReq - (*ProductInfoIndexResp)(nil), // 116: dm.ProductInfoIndexResp - (*DeviceOnlineMultiFixReq)(nil), // 117: dm.deviceOnlineMultiFixReq - (*DeviceOnlineMultiFix)(nil), // 118: dm.deviceOnlineMultiFix - (*DeviceInfoDeleteReq)(nil), // 119: dm.DeviceInfoDeleteReq - (*DeviceCore)(nil), // 120: dm.DeviceCore - (*DeviceError)(nil), // 121: dm.DeviceError - (*DeviceInfoReadReq)(nil), // 122: dm.DeviceInfoReadReq - (*DeviceInfoMultiUpdateReq)(nil), // 123: dm.DeviceInfoMultiUpdateReq - (*DeviceInfoIndexReq)(nil), // 124: dm.DeviceInfoIndexReq - (*DeviceInfoIndexResp)(nil), // 125: dm.DeviceInfoIndexResp - (*RootCheckReq)(nil), // 126: dm.RootCheckReq - (*CommonSchemaUpdateReq)(nil), // 127: dm.CommonSchemaUpdateReq - (*CommonSchemaCreateReq)(nil), // 128: dm.CommonSchemaCreateReq - (*CommonSchemaIndexReq)(nil), // 129: dm.CommonSchemaIndexReq - (*CommonSchemaIndexResp)(nil), // 130: dm.CommonSchemaIndexResp - (*CommonSchemaInfo)(nil), // 131: dm.CommonSchemaInfo - (*ProductSchemaUpdateReq)(nil), // 132: dm.ProductSchemaUpdateReq - (*ProductSchemaMultiCreateReq)(nil), // 133: dm.ProductSchemaMultiCreateReq - (*ProductSchemaCreateReq)(nil), // 134: dm.ProductSchemaCreateReq - (*ProductSchemaDeleteReq)(nil), // 135: dm.ProductSchemaDeleteReq - (*ProductSchemaIndexReq)(nil), // 136: dm.ProductSchemaIndexReq - (*ProductSchemaIndexResp)(nil), // 137: dm.ProductSchemaIndexResp - (*ProductSchemaInfo)(nil), // 138: dm.ProductSchemaInfo - (*ProductSchemaTslImportReq)(nil), // 139: dm.ProductSchemaTslImportReq - (*ProductSchemaTslReadReq)(nil), // 140: dm.ProductSchemaTslReadReq - (*ProductSchemaTslReadResp)(nil), // 141: dm.ProductSchemaTslReadResp - (*DeviceProfile)(nil), // 142: dm.DeviceProfile - (*DeviceProfileReadReq)(nil), // 143: dm.DeviceProfileReadReq - (*DeviceInfoCanBindReq)(nil), // 144: dm.DeviceInfoCanBindReq - (*DeviceInfoMultiBindReq)(nil), // 145: dm.DeviceInfoMultiBindReq - (*DeviceInfoMultiBindResp)(nil), // 146: dm.DeviceInfoMultiBindResp - (*DeviceInfoBindReq)(nil), // 147: dm.DeviceInfoBindReq - (*DeviceProfileIndexReq)(nil), // 148: dm.DeviceProfileIndexReq - (*DeviceProfileIndexResp)(nil), // 149: dm.DeviceProfileIndexResp - (*DeviceCountReq)(nil), // 150: dm.DeviceCountReq - (*DeviceCountResp)(nil), // 151: dm.DeviceCountResp - (*DeviceCountInfo)(nil), // 152: dm.DeviceCountInfo - (*DeviceInfoCountReq)(nil), // 153: dm.DeviceInfoCountReq - (*DeviceTypeCountReq)(nil), // 154: dm.DeviceTypeCountReq - (*DeviceInfoCount)(nil), // 155: dm.DeviceInfoCount - (*DeviceTypeCountResp)(nil), // 156: dm.DeviceTypeCountResp - (*Firmware)(nil), // 157: dm.Firmware - (*FirmwareResp)(nil), // 158: dm.FirmwareResp - (*FirmwareInfo)(nil), // 159: dm.FirmwareInfo - (*OtaFirmwareFile)(nil), // 160: dm.OtaFirmwareFile - (*FirmwareInfoDeleteReq)(nil), // 161: dm.FirmwareInfoDeleteReq - (*FirmwareInfoDeleteResp)(nil), // 162: dm.FirmwareInfoDeleteResp - (*FirmwareInfoIndexReq)(nil), // 163: dm.FirmwareInfoIndexReq - (*FirmwareInfoIndexResp)(nil), // 164: dm.FirmwareInfoIndexResp - (*FirmwareInfoReadReq)(nil), // 165: dm.FirmwareInfoReadReq - (*OtaFirmwareFileReq)(nil), // 166: dm.OtaFirmwareFileReq - (*OtaFirmwareFileInfo)(nil), // 167: dm.OtaFirmwareFileInfo - (*OtaFirmwareFileResp)(nil), // 168: dm.OtaFirmwareFileResp - (*OtaFirmwareFileIndexReq)(nil), // 169: dm.OtaFirmwareFileIndexReq - (*OtaFirmwareFileIndexResp)(nil), // 170: dm.OtaFirmwareFileIndexResp - (*FirmwareInfoReadResp)(nil), // 171: dm.FirmwareInfoReadResp - (*FirmwareFile)(nil), // 172: dm.FirmwareFile - (*OtaFirmwareInfoCreateReq)(nil), // 173: dm.OtaFirmwareInfoCreateReq - (*OtaFirmwareInfoUpdateReq)(nil), // 174: dm.OtaFirmwareInfoUpdateReq - (*OtaFirmwareInfoIndexReq)(nil), // 175: dm.OtaFirmwareInfoIndexReq - (*OtaFirmwareInfoIndexResp)(nil), // 176: dm.OtaFirmwareInfoIndexResp - (*OtaFirmwareInfo)(nil), // 177: dm.OtaFirmwareInfo - (*OtaFirmwareJobInfo)(nil), // 178: dm.OtaFirmwareJobInfo - (*OtaJobDynamicInfo)(nil), // 179: dm.OtaJobDynamicInfo - (*OtaJobStaticInfo)(nil), // 180: dm.OtaJobStaticInfo - (*OtaFirmwareJobIndexReq)(nil), // 181: dm.OtaFirmwareJobIndexReq - (*OtaFirmwareJobIndexResp)(nil), // 182: dm.OtaFirmwareJobIndexResp - (*OtaJobByDeviceIndexReq)(nil), // 183: dm.OtaJobByDeviceIndexReq - (*OtaFirmwareDeviceIndexReq)(nil), // 184: dm.OtaFirmwareDeviceIndexReq - (*OtaFirmwareDeviceInfo)(nil), // 185: dm.OtaFirmwareDeviceInfo - (*OtaFirmwareDeviceIndexResp)(nil), // 186: dm.OtaFirmwareDeviceIndexResp - (*OtaFirmwareDeviceCancelReq)(nil), // 187: dm.OtaFirmwareDeviceCancelReq - (*OtaFirmwareDeviceRetryReq)(nil), // 188: dm.OtaFirmwareDeviceRetryReq - (*OtaFirmwareDeviceConfirmReq)(nil), // 189: dm.OtaFirmwareDeviceConfirmReq - (*PageInfo_OrderBy)(nil), // 190: dm.PageInfo.OrderBy - nil, // 191: dm.UserDeviceShareInfo.SchemaPermEntry - nil, // 192: dm.UserDeviceShareInfo.AccessPermEntry - nil, // 193: dm.UserDeviceShareMultiInfo.SchemaPermEntry - nil, // 194: dm.UserDeviceShareMultiInfo.AccessPermEntry - nil, // 195: dm.ProtocolConfigInfo.ConfigEntry - nil, // 196: dm.GroupInfo.TagsEntry - nil, // 197: dm.GroupInfoIndexReq.TagsEntry - nil, // 198: dm.GroupInfoUpdateReq.TagsEntry - nil, // 199: dm.DeviceInfo.TagsEntry - nil, // 200: dm.DeviceInfo.SchemaAliasEntry - nil, // 201: dm.DeviceInfo.ProtocolConfEntry - nil, // 202: dm.ProductInfo.TagsEntry - nil, // 203: dm.ProductInfo.ProtocolConfEntry - nil, // 204: dm.ProductInfo.CustomUiEntry - nil, // 205: dm.ProductInfoIndexReq.TagsEntry - nil, // 206: dm.ProductInfoIndexReq.ProtocolConfEntry - nil, // 207: dm.DeviceInfoIndexReq.TagsEntry - nil, // 208: dm.DeviceCountInfo.CountEntry - (*wrapperspb.Int64Value)(nil), // 209: google.protobuf.Int64Value - (*wrapperspb.StringValue)(nil), // 210: google.protobuf.StringValue + (*DeviceShareInfo)(nil), // 27: dm.DeviceShareInfo + (*UserDeviceShareMultiInfo)(nil), // 28: dm.UserDeviceShareMultiInfo + (*UserDeviceShareMultiToken)(nil), // 29: dm.UserDeviceShareMultiToken + (*UserDeviceShareMultiAcceptReq)(nil), // 30: dm.UserDeviceShareMultiAcceptReq + (*UserDeviceCollectSave)(nil), // 31: dm.UserDeviceCollectSave + (*ProductCategory)(nil), // 32: dm.ProductCategory + (*ProductCategorySchemaIndexResp)(nil), // 33: dm.ProductCategorySchemaIndexResp + (*ProductCategorySchemaIndexReq)(nil), // 34: dm.ProductCategorySchemaIndexReq + (*ProductCategorySchemaMultiSaveReq)(nil), // 35: dm.ProductCategorySchemaMultiSaveReq + (*ProductCategoryIndexReq)(nil), // 36: dm.ProductCategoryIndexReq + (*ProductCategoryIndexResp)(nil), // 37: dm.ProductCategoryIndexResp + (*ProtocolInfoIndexReq)(nil), // 38: dm.ProtocolInfoIndexReq + (*ProtocolInfoIndexResp)(nil), // 39: dm.ProtocolInfoIndexResp + (*ProtocolServiceIndexReq)(nil), // 40: dm.ProtocolServiceIndexReq + (*ProtocolServiceIndexResp)(nil), // 41: dm.ProtocolServiceIndexResp + (*ProtocolService)(nil), // 42: dm.ProtocolService + (*ProtocolInfo)(nil), // 43: dm.ProtocolInfo + (*ProtocolConfigField)(nil), // 44: dm.ProtocolConfigField + (*ProtocolConfigInfo)(nil), // 45: dm.ProtocolConfigInfo + (*ShadowIndexResp)(nil), // 46: dm.ShadowIndexResp + (*ShadowIndex)(nil), // 47: dm.ShadowIndex + (*PropertyGetReportSendReq)(nil), // 48: dm.PropertyGetReportSendReq + (*PropertyGetReportSendResp)(nil), // 49: dm.PropertyGetReportSendResp + (*PropertyLogIndexReq)(nil), // 50: dm.PropertyLogIndexReq + (*PropertyLogLatestIndexReq)(nil), // 51: dm.PropertyLogLatestIndexReq + (*PropertyLogInfo)(nil), // 52: dm.PropertyLogInfo + (*PropertyLogIndexResp)(nil), // 53: dm.PropertyLogIndexResp + (*EventLogIndexReq)(nil), // 54: dm.EventLogIndexReq + (*EventLogInfo)(nil), // 55: dm.EventLogInfo + (*EventLogIndexResp)(nil), // 56: dm.EventLogIndexResp + (*HubLogIndexReq)(nil), // 57: dm.HubLogIndexReq + (*HubLogIndexResp)(nil), // 58: dm.HubLogIndexResp + (*HubLogInfo)(nil), // 59: dm.HubLogInfo + (*StatusLogIndexReq)(nil), // 60: dm.StatusLogIndexReq + (*StatusLogIndexResp)(nil), // 61: dm.StatusLogIndexResp + (*StatusLogInfo)(nil), // 62: dm.StatusLogInfo + (*SendLogIndexReq)(nil), // 63: dm.SendLogIndexReq + (*SendLogIndexResp)(nil), // 64: dm.SendLogIndexResp + (*SendLogInfo)(nil), // 65: dm.SendLogInfo + (*SdkLogIndexReq)(nil), // 66: dm.SdkLogIndexReq + (*SdkLogIndexResp)(nil), // 67: dm.SdkLogIndexResp + (*SdkLogInfo)(nil), // 68: dm.SdkLogInfo + (*ActionSendReq)(nil), // 69: dm.ActionSendReq + (*ActionSendResp)(nil), // 70: dm.ActionSendResp + (*RespReadReq)(nil), // 71: dm.RespReadReq + (*PropertyControlSendReq)(nil), // 72: dm.PropertyControlSendReq + (*WithProfile)(nil), // 73: dm.WithProfile + (*ActionRespReq)(nil), // 74: dm.ActionRespReq + (*PropertyControlSendResp)(nil), // 75: dm.PropertyControlSendResp + (*GatewayGetFoundReq)(nil), // 76: dm.GatewayGetFoundReq + (*GatewayNotifyBindSendReq)(nil), // 77: dm.GatewayNotifyBindSendReq + (*SendMsgReq)(nil), // 78: dm.SendMsgReq + (*SendMsgResp)(nil), // 79: dm.SendMsgResp + (*PropertyControlMultiSendReq)(nil), // 80: dm.PropertyControlMultiSendReq + (*PropertyControlSendMsg)(nil), // 81: dm.PropertyControlSendMsg + (*PropertyControlMultiSendResp)(nil), // 82: dm.PropertyControlMultiSendResp + (*ProductRemoteConfig)(nil), // 83: dm.ProductRemoteConfig + (*RemoteConfigCreateReq)(nil), // 84: dm.RemoteConfigCreateReq + (*RemoteConfigIndexReq)(nil), // 85: dm.RemoteConfigIndexReq + (*RemoteConfigIndexResp)(nil), // 86: dm.RemoteConfigIndexResp + (*RemoteConfigPushAllReq)(nil), // 87: dm.RemoteConfigPushAllReq + (*RemoteConfigLastReadReq)(nil), // 88: dm.RemoteConfigLastReadReq + (*RemoteConfigLastReadResp)(nil), // 89: dm.RemoteConfigLastReadResp + (*ProductCustomReadReq)(nil), // 90: dm.ProductCustomReadReq + (*ProductCustom)(nil), // 91: dm.ProductCustom + (*CustomTopic)(nil), // 92: dm.CustomTopic + (*DeviceGatewayBindDevice)(nil), // 93: dm.DeviceGatewayBindDevice + (*DeviceGatewaySign)(nil), // 94: dm.DeviceGatewaySign + (*DeviceGatewayMultiCreateReq)(nil), // 95: dm.DeviceGatewayMultiCreateReq + (*DeviceGatewayIndexReq)(nil), // 96: dm.DeviceGatewayIndexReq + (*DeviceGatewayIndexResp)(nil), // 97: dm.DeviceGatewayIndexResp + (*DeviceGatewayMultiSaveReq)(nil), // 98: dm.DeviceGatewayMultiSaveReq + (*GatewayCanBindIndexReq)(nil), // 99: dm.GatewayCanBindIndexReq + (*GatewayCanBindIndexResp)(nil), // 100: dm.GatewayCanBindIndexResp + (*GroupInfo)(nil), // 101: dm.GroupInfo + (*GroupInfoCreateReq)(nil), // 102: dm.GroupInfoCreateReq + (*GroupInfoIndexReq)(nil), // 103: dm.GroupInfoIndexReq + (*GroupInfoIndexResp)(nil), // 104: dm.GroupInfoIndexResp + (*GroupInfoUpdateReq)(nil), // 105: dm.GroupInfoUpdateReq + (*GroupDeviceMultiSaveReq)(nil), // 106: dm.GroupDeviceMultiSaveReq + (*GroupDeviceIndexReq)(nil), // 107: dm.GroupDeviceIndexReq + (*GroupDeviceIndexResp)(nil), // 108: dm.GroupDeviceIndexResp + (*GroupDeviceMultiDeleteReq)(nil), // 109: dm.GroupDeviceMultiDeleteReq + (*Point)(nil), // 110: dm.Point + (*DeviceInfo)(nil), // 111: dm.DeviceInfo + (*ProductInfo)(nil), // 112: dm.ProductInfo + (*ProductCustomUi)(nil), // 113: dm.ProductCustomUi + (*ProductInfoDeleteReq)(nil), // 114: dm.ProductInfoDeleteReq + (*ProductInfoReadReq)(nil), // 115: dm.ProductInfoReadReq + (*ProductInfoIndexReq)(nil), // 116: dm.ProductInfoIndexReq + (*ProductInfoIndexResp)(nil), // 117: dm.ProductInfoIndexResp + (*DeviceOnlineMultiFixReq)(nil), // 118: dm.deviceOnlineMultiFixReq + (*DeviceOnlineMultiFix)(nil), // 119: dm.deviceOnlineMultiFix + (*DeviceInfoDeleteReq)(nil), // 120: dm.DeviceInfoDeleteReq + (*DeviceCore)(nil), // 121: dm.DeviceCore + (*DeviceError)(nil), // 122: dm.DeviceError + (*DeviceInfoReadReq)(nil), // 123: dm.DeviceInfoReadReq + (*DeviceInfoMultiUpdateReq)(nil), // 124: dm.DeviceInfoMultiUpdateReq + (*DeviceInfoIndexReq)(nil), // 125: dm.DeviceInfoIndexReq + (*DeviceInfoIndexResp)(nil), // 126: dm.DeviceInfoIndexResp + (*RootCheckReq)(nil), // 127: dm.RootCheckReq + (*CommonSchemaUpdateReq)(nil), // 128: dm.CommonSchemaUpdateReq + (*CommonSchemaCreateReq)(nil), // 129: dm.CommonSchemaCreateReq + (*CommonSchemaIndexReq)(nil), // 130: dm.CommonSchemaIndexReq + (*CommonSchemaIndexResp)(nil), // 131: dm.CommonSchemaIndexResp + (*CommonSchemaInfo)(nil), // 132: dm.CommonSchemaInfo + (*ProductSchemaUpdateReq)(nil), // 133: dm.ProductSchemaUpdateReq + (*ProductSchemaMultiCreateReq)(nil), // 134: dm.ProductSchemaMultiCreateReq + (*ProductSchemaCreateReq)(nil), // 135: dm.ProductSchemaCreateReq + (*ProductSchemaDeleteReq)(nil), // 136: dm.ProductSchemaDeleteReq + (*ProductSchemaIndexReq)(nil), // 137: dm.ProductSchemaIndexReq + (*ProductSchemaIndexResp)(nil), // 138: dm.ProductSchemaIndexResp + (*ProductSchemaInfo)(nil), // 139: dm.ProductSchemaInfo + (*ProductSchemaTslImportReq)(nil), // 140: dm.ProductSchemaTslImportReq + (*ProductSchemaTslReadReq)(nil), // 141: dm.ProductSchemaTslReadReq + (*ProductSchemaTslReadResp)(nil), // 142: dm.ProductSchemaTslReadResp + (*DeviceProfile)(nil), // 143: dm.DeviceProfile + (*DeviceProfileReadReq)(nil), // 144: dm.DeviceProfileReadReq + (*DeviceInfoCanBindReq)(nil), // 145: dm.DeviceInfoCanBindReq + (*DeviceInfoMultiBindReq)(nil), // 146: dm.DeviceInfoMultiBindReq + (*DeviceInfoMultiBindResp)(nil), // 147: dm.DeviceInfoMultiBindResp + (*DeviceInfoBindReq)(nil), // 148: dm.DeviceInfoBindReq + (*DeviceProfileIndexReq)(nil), // 149: dm.DeviceProfileIndexReq + (*DeviceProfileIndexResp)(nil), // 150: dm.DeviceProfileIndexResp + (*DeviceCountReq)(nil), // 151: dm.DeviceCountReq + (*DeviceCountResp)(nil), // 152: dm.DeviceCountResp + (*DeviceCountInfo)(nil), // 153: dm.DeviceCountInfo + (*DeviceInfoCountReq)(nil), // 154: dm.DeviceInfoCountReq + (*DeviceTypeCountReq)(nil), // 155: dm.DeviceTypeCountReq + (*DeviceInfoCount)(nil), // 156: dm.DeviceInfoCount + (*DeviceTypeCountResp)(nil), // 157: dm.DeviceTypeCountResp + (*Firmware)(nil), // 158: dm.Firmware + (*FirmwareResp)(nil), // 159: dm.FirmwareResp + (*FirmwareInfo)(nil), // 160: dm.FirmwareInfo + (*OtaFirmwareFile)(nil), // 161: dm.OtaFirmwareFile + (*FirmwareInfoDeleteReq)(nil), // 162: dm.FirmwareInfoDeleteReq + (*FirmwareInfoDeleteResp)(nil), // 163: dm.FirmwareInfoDeleteResp + (*FirmwareInfoIndexReq)(nil), // 164: dm.FirmwareInfoIndexReq + (*FirmwareInfoIndexResp)(nil), // 165: dm.FirmwareInfoIndexResp + (*FirmwareInfoReadReq)(nil), // 166: dm.FirmwareInfoReadReq + (*OtaFirmwareFileReq)(nil), // 167: dm.OtaFirmwareFileReq + (*OtaFirmwareFileInfo)(nil), // 168: dm.OtaFirmwareFileInfo + (*OtaFirmwareFileResp)(nil), // 169: dm.OtaFirmwareFileResp + (*OtaFirmwareFileIndexReq)(nil), // 170: dm.OtaFirmwareFileIndexReq + (*OtaFirmwareFileIndexResp)(nil), // 171: dm.OtaFirmwareFileIndexResp + (*FirmwareInfoReadResp)(nil), // 172: dm.FirmwareInfoReadResp + (*FirmwareFile)(nil), // 173: dm.FirmwareFile + (*OtaFirmwareInfoCreateReq)(nil), // 174: dm.OtaFirmwareInfoCreateReq + (*OtaFirmwareInfoUpdateReq)(nil), // 175: dm.OtaFirmwareInfoUpdateReq + (*OtaFirmwareInfoIndexReq)(nil), // 176: dm.OtaFirmwareInfoIndexReq + (*OtaFirmwareInfoIndexResp)(nil), // 177: dm.OtaFirmwareInfoIndexResp + (*OtaFirmwareInfo)(nil), // 178: dm.OtaFirmwareInfo + (*OtaFirmwareJobInfo)(nil), // 179: dm.OtaFirmwareJobInfo + (*OtaJobDynamicInfo)(nil), // 180: dm.OtaJobDynamicInfo + (*OtaJobStaticInfo)(nil), // 181: dm.OtaJobStaticInfo + (*OtaFirmwareJobIndexReq)(nil), // 182: dm.OtaFirmwareJobIndexReq + (*OtaFirmwareJobIndexResp)(nil), // 183: dm.OtaFirmwareJobIndexResp + (*OtaJobByDeviceIndexReq)(nil), // 184: dm.OtaJobByDeviceIndexReq + (*OtaFirmwareDeviceIndexReq)(nil), // 185: dm.OtaFirmwareDeviceIndexReq + (*OtaFirmwareDeviceInfo)(nil), // 186: dm.OtaFirmwareDeviceInfo + (*OtaFirmwareDeviceIndexResp)(nil), // 187: dm.OtaFirmwareDeviceIndexResp + (*OtaFirmwareDeviceCancelReq)(nil), // 188: dm.OtaFirmwareDeviceCancelReq + (*OtaFirmwareDeviceRetryReq)(nil), // 189: dm.OtaFirmwareDeviceRetryReq + (*OtaFirmwareDeviceConfirmReq)(nil), // 190: dm.OtaFirmwareDeviceConfirmReq + (*PageInfo_OrderBy)(nil), // 191: dm.PageInfo.OrderBy + nil, // 192: dm.UserDeviceShareInfo.SchemaPermEntry + nil, // 193: dm.UserDeviceShareInfo.AccessPermEntry + nil, // 194: dm.UserDeviceShareMultiInfo.SchemaPermEntry + nil, // 195: dm.UserDeviceShareMultiInfo.AccessPermEntry + nil, // 196: dm.ProtocolConfigInfo.ConfigEntry + nil, // 197: dm.GroupInfo.TagsEntry + nil, // 198: dm.GroupInfoIndexReq.TagsEntry + nil, // 199: dm.GroupInfoUpdateReq.TagsEntry + nil, // 200: dm.DeviceInfo.TagsEntry + nil, // 201: dm.DeviceInfo.SchemaAliasEntry + nil, // 202: dm.DeviceInfo.ProtocolConfEntry + nil, // 203: dm.ProductInfo.TagsEntry + nil, // 204: dm.ProductInfo.ProtocolConfEntry + nil, // 205: dm.ProductInfo.CustomUiEntry + nil, // 206: dm.ProductInfoIndexReq.TagsEntry + nil, // 207: dm.ProductInfoIndexReq.ProtocolConfEntry + nil, // 208: dm.DeviceInfoIndexReq.TagsEntry + nil, // 209: dm.DeviceCountInfo.CountEntry + (*wrapperspb.Int64Value)(nil), // 210: google.protobuf.Int64Value + (*wrapperspb.StringValue)(nil), // 211: google.protobuf.StringValue } var file_proto_dm_proto_depIdxs = []int32{ - 190, // 0: dm.PageInfo.orders:type_name -> dm.PageInfo.OrderBy + 191, // 0: dm.PageInfo.orders:type_name -> dm.PageInfo.OrderBy 2, // 1: dm.OtaModuleInfoIndexReq.page:type_name -> dm.PageInfo 13, // 2: dm.OtaModuleInfoIndexResp.list:type_name -> dm.OtaModuleInfo 2, // 3: dm.DeviceModuleVersionIndexReq.page:type_name -> dm.PageInfo 16, // 4: dm.DeviceModuleVersionIndexResp.list:type_name -> dm.DeviceModuleVersion - 120, // 5: dm.DeviceMoveReq.old:type_name -> dm.DeviceCore - 120, // 6: dm.DeviceMoveReq.new:type_name -> dm.DeviceCore - 120, // 7: dm.DeviceTransferReq.device:type_name -> dm.DeviceCore - 120, // 8: dm.DeviceTransferReq.devices:type_name -> dm.DeviceCore - 120, // 9: dm.UserDeviceShareReadReq.device:type_name -> dm.DeviceCore + 121, // 5: dm.DeviceMoveReq.old:type_name -> dm.DeviceCore + 121, // 6: dm.DeviceMoveReq.new:type_name -> dm.DeviceCore + 121, // 7: dm.DeviceTransferReq.device:type_name -> dm.DeviceCore + 121, // 8: dm.DeviceTransferReq.devices:type_name -> dm.DeviceCore + 121, // 9: dm.UserDeviceShareReadReq.device:type_name -> dm.DeviceCore 2, // 10: dm.UserDeviceShareIndexReq.page:type_name -> dm.PageInfo - 120, // 11: dm.UserDeviceShareIndexReq.device:type_name -> dm.DeviceCore + 121, // 11: dm.UserDeviceShareIndexReq.device:type_name -> dm.DeviceCore 25, // 12: dm.UserDeviceShareIndexResp.list:type_name -> dm.UserDeviceShareInfo - 120, // 13: dm.UserDeviceShareInfo.device:type_name -> dm.DeviceCore - 191, // 14: dm.UserDeviceShareInfo.schemaPerm:type_name -> dm.UserDeviceShareInfo.SchemaPermEntry - 192, // 15: dm.UserDeviceShareInfo.accessPerm:type_name -> dm.UserDeviceShareInfo.AccessPermEntry - 209, // 16: dm.UserDeviceShareInfo.expTime:type_name -> google.protobuf.Int64Value - 120, // 17: dm.UserDeviceShareMultiInfo.devices:type_name -> dm.DeviceCore - 193, // 18: dm.UserDeviceShareMultiInfo.schemaPerm:type_name -> dm.UserDeviceShareMultiInfo.SchemaPermEntry - 194, // 19: dm.UserDeviceShareMultiInfo.accessPerm:type_name -> dm.UserDeviceShareMultiInfo.AccessPermEntry - 120, // 20: dm.UserDeviceShareMultiAcceptReq.devices:type_name -> dm.DeviceCore - 120, // 21: dm.UserDeviceCollectSave.devices:type_name -> dm.DeviceCore - 210, // 22: dm.ProductCategory.desc:type_name -> google.protobuf.StringValue - 31, // 23: dm.ProductCategory.children:type_name -> dm.ProductCategory - 2, // 24: dm.ProductCategoryIndexReq.page:type_name -> dm.PageInfo - 31, // 25: dm.ProductCategoryIndexResp.list:type_name -> dm.ProductCategory - 2, // 26: dm.ProtocolInfoIndexReq.page:type_name -> dm.PageInfo - 42, // 27: dm.ProtocolInfoIndexResp.list:type_name -> dm.ProtocolInfo - 2, // 28: dm.ProtocolServiceIndexReq.page:type_name -> dm.PageInfo - 41, // 29: dm.ProtocolServiceIndexResp.list:type_name -> dm.ProtocolService - 43, // 30: dm.ProtocolInfo.configFields:type_name -> dm.ProtocolConfigField - 44, // 31: dm.ProtocolInfo.configInfos:type_name -> dm.ProtocolConfigInfo - 195, // 32: dm.ProtocolConfigInfo.config:type_name -> dm.ProtocolConfigInfo.ConfigEntry - 46, // 33: dm.ShadowIndexResp.list:type_name -> dm.ShadowIndex - 2, // 34: dm.PropertyLogIndexReq.page:type_name -> dm.PageInfo - 51, // 35: dm.PropertyLogIndexResp.list:type_name -> dm.PropertyLogInfo - 2, // 36: dm.EventLogIndexReq.page:type_name -> dm.PageInfo - 54, // 37: dm.EventLogIndexResp.list:type_name -> dm.EventLogInfo - 2, // 38: dm.HubLogIndexReq.page:type_name -> dm.PageInfo - 58, // 39: dm.HubLogIndexResp.list:type_name -> dm.HubLogInfo - 2, // 40: dm.StatusLogIndexReq.page:type_name -> dm.PageInfo - 61, // 41: dm.StatusLogIndexResp.list:type_name -> dm.StatusLogInfo - 2, // 42: dm.SendLogIndexReq.page:type_name -> dm.PageInfo - 64, // 43: dm.SendLogIndexResp.list:type_name -> dm.SendLogInfo - 2, // 44: dm.SdkLogIndexReq.page:type_name -> dm.PageInfo - 67, // 45: dm.SdkLogIndexResp.list:type_name -> dm.SdkLogInfo - 5, // 46: dm.ActionSendReq.option:type_name -> dm.SendOption - 72, // 47: dm.PropertyControlSendReq.withProfile:type_name -> dm.WithProfile - 120, // 48: dm.GatewayNotifyBindSendReq.gateway:type_name -> dm.DeviceCore - 120, // 49: dm.GatewayNotifyBindSendReq.subDevices:type_name -> dm.DeviceCore - 120, // 50: dm.PropertyControlMultiSendReq.devices:type_name -> dm.DeviceCore - 80, // 51: dm.PropertyControlMultiSendResp.list:type_name -> dm.PropertyControlSendMsg - 2, // 52: dm.RemoteConfigIndexReq.page:type_name -> dm.PageInfo - 82, // 53: dm.RemoteConfigIndexResp.list:type_name -> dm.ProductRemoteConfig - 82, // 54: dm.RemoteConfigLastReadResp.info:type_name -> dm.ProductRemoteConfig - 210, // 55: dm.ProductCustom.transformScript:type_name -> google.protobuf.StringValue - 210, // 56: dm.ProductCustom.loginAuthScript:type_name -> google.protobuf.StringValue - 91, // 57: dm.ProductCustom.customTopics:type_name -> dm.CustomTopic - 93, // 58: dm.DeviceGatewayBindDevice.sign:type_name -> dm.DeviceGatewaySign - 120, // 59: dm.DeviceGatewayMultiCreateReq.gateway:type_name -> dm.DeviceCore - 92, // 60: dm.DeviceGatewayMultiCreateReq.list:type_name -> dm.DeviceGatewayBindDevice - 2, // 61: dm.DeviceGatewayIndexReq.page:type_name -> dm.PageInfo - 120, // 62: dm.DeviceGatewayIndexReq.gateway:type_name -> dm.DeviceCore - 120, // 63: dm.DeviceGatewayIndexReq.subDevice:type_name -> dm.DeviceCore - 120, // 64: dm.DeviceGatewayIndexResp.list:type_name -> dm.DeviceCore - 120, // 65: dm.DeviceGatewayMultiSaveReq.gateway:type_name -> dm.DeviceCore - 120, // 66: dm.DeviceGatewayMultiSaveReq.list:type_name -> dm.DeviceCore - 120, // 67: dm.GatewayCanBindIndexReq.gateway:type_name -> dm.DeviceCore - 120, // 68: dm.GatewayCanBindIndexResp.subDevices:type_name -> dm.DeviceCore - 196, // 69: dm.GroupInfo.tags:type_name -> dm.GroupInfo.TagsEntry - 120, // 70: dm.GroupInfo.devices:type_name -> dm.DeviceCore - 100, // 71: dm.GroupInfo.children:type_name -> dm.GroupInfo - 2, // 72: dm.GroupInfoIndexReq.page:type_name -> dm.PageInfo - 197, // 73: dm.GroupInfoIndexReq.tags:type_name -> dm.GroupInfoIndexReq.TagsEntry - 100, // 74: dm.GroupInfoIndexResp.list:type_name -> dm.GroupInfo - 198, // 75: dm.GroupInfoUpdateReq.tags:type_name -> dm.GroupInfoUpdateReq.TagsEntry - 120, // 76: dm.GroupDeviceMultiSaveReq.list:type_name -> dm.DeviceCore - 2, // 77: dm.GroupDeviceIndexReq.page:type_name -> dm.PageInfo - 110, // 78: dm.GroupDeviceIndexResp.list:type_name -> dm.DeviceInfo - 120, // 79: dm.GroupDeviceMultiDeleteReq.list:type_name -> dm.DeviceCore - 210, // 80: dm.DeviceInfo.version:type_name -> google.protobuf.StringValue - 109, // 81: dm.DeviceInfo.Position:type_name -> dm.Point - 210, // 82: dm.DeviceInfo.address:type_name -> google.protobuf.StringValue - 210, // 83: dm.DeviceInfo.adcode:type_name -> google.protobuf.StringValue - 199, // 84: dm.DeviceInfo.tags:type_name -> dm.DeviceInfo.TagsEntry - 210, // 85: dm.DeviceInfo.deviceAlias:type_name -> google.protobuf.StringValue - 210, // 86: dm.DeviceInfo.phone:type_name -> google.protobuf.StringValue - 210, // 87: dm.DeviceInfo.iccid:type_name -> google.protobuf.StringValue - 200, // 88: dm.DeviceInfo.schemaAlias:type_name -> dm.DeviceInfo.SchemaAliasEntry - 209, // 89: dm.DeviceInfo.rssi:type_name -> google.protobuf.Int64Value - 201, // 90: dm.DeviceInfo.protocolConf:type_name -> dm.DeviceInfo.ProtocolConfEntry - 10, // 91: dm.DeviceInfo.distributor:type_name -> dm.IDPathWithUpdate - 209, // 92: dm.DeviceInfo.expTime:type_name -> google.protobuf.Int64Value - 110, // 93: dm.DeviceInfo.Gateway:type_name -> dm.DeviceInfo - 210, // 94: dm.ProductInfo.desc:type_name -> google.protobuf.StringValue - 202, // 95: dm.ProductInfo.tags:type_name -> dm.ProductInfo.TagsEntry - 42, // 96: dm.ProductInfo.protocol:type_name -> dm.ProtocolInfo - 31, // 97: dm.ProductInfo.category:type_name -> dm.ProductCategory - 203, // 98: dm.ProductInfo.protocolConf:type_name -> dm.ProductInfo.ProtocolConfEntry - 209, // 99: dm.ProductInfo.trialTime:type_name -> google.protobuf.Int64Value - 204, // 100: dm.ProductInfo.customUi:type_name -> dm.ProductInfo.CustomUiEntry - 2, // 101: dm.ProductInfoIndexReq.page:type_name -> dm.PageInfo - 205, // 102: dm.ProductInfoIndexReq.tags:type_name -> dm.ProductInfoIndexReq.TagsEntry - 206, // 103: dm.ProductInfoIndexReq.protocolConf:type_name -> dm.ProductInfoIndexReq.ProtocolConfEntry - 111, // 104: dm.ProductInfoIndexResp.list:type_name -> dm.ProductInfo - 118, // 105: dm.deviceOnlineMultiFixReq.devices:type_name -> dm.deviceOnlineMultiFix - 120, // 106: dm.deviceOnlineMultiFix.device:type_name -> dm.DeviceCore - 120, // 107: dm.DeviceInfoMultiUpdateReq.devices:type_name -> dm.DeviceCore - 4, // 108: dm.DeviceInfoMultiUpdateReq.FilterDistributorID:type_name -> dm.CompareInt64 - 9, // 109: dm.DeviceInfoMultiUpdateReq.distributor:type_name -> dm.IDPath - 2, // 110: dm.DeviceInfoIndexReq.page:type_name -> dm.PageInfo - 207, // 111: dm.DeviceInfoIndexReq.tags:type_name -> dm.DeviceInfoIndexReq.TagsEntry - 109, // 112: dm.DeviceInfoIndexReq.Position:type_name -> dm.Point - 120, // 113: dm.DeviceInfoIndexReq.devices:type_name -> dm.DeviceCore - 120, // 114: dm.DeviceInfoIndexReq.gateway:type_name -> dm.DeviceCore - 9, // 115: dm.DeviceInfoIndexReq.distributor:type_name -> dm.IDPath - 4, // 116: dm.DeviceInfoIndexReq.ratedPower:type_name -> dm.CompareInt64 - 4, // 117: dm.DeviceInfoIndexReq.expTime:type_name -> dm.CompareInt64 - 110, // 118: dm.DeviceInfoIndexResp.list:type_name -> dm.DeviceInfo - 131, // 119: dm.CommonSchemaUpdateReq.info:type_name -> dm.CommonSchemaInfo - 131, // 120: dm.CommonSchemaCreateReq.info:type_name -> dm.CommonSchemaInfo - 2, // 121: dm.CommonSchemaIndexReq.page:type_name -> dm.PageInfo - 131, // 122: dm.CommonSchemaIndexResp.list:type_name -> dm.CommonSchemaInfo - 210, // 123: dm.CommonSchemaInfo.name:type_name -> google.protobuf.StringValue - 210, // 124: dm.CommonSchemaInfo.desc:type_name -> google.protobuf.StringValue - 210, // 125: dm.CommonSchemaInfo.affordance:type_name -> google.protobuf.StringValue - 31, // 126: dm.CommonSchemaInfo.productCategories:type_name -> dm.ProductCategory - 138, // 127: dm.ProductSchemaUpdateReq.info:type_name -> dm.ProductSchemaInfo - 138, // 128: dm.ProductSchemaMultiCreateReq.list:type_name -> dm.ProductSchemaInfo - 138, // 129: dm.ProductSchemaCreateReq.info:type_name -> dm.ProductSchemaInfo - 2, // 130: dm.ProductSchemaIndexReq.page:type_name -> dm.PageInfo - 138, // 131: dm.ProductSchemaIndexResp.list:type_name -> dm.ProductSchemaInfo - 210, // 132: dm.ProductSchemaInfo.name:type_name -> google.protobuf.StringValue - 210, // 133: dm.ProductSchemaInfo.desc:type_name -> google.protobuf.StringValue - 210, // 134: dm.ProductSchemaInfo.affordance:type_name -> google.protobuf.StringValue - 120, // 135: dm.DeviceProfile.device:type_name -> dm.DeviceCore - 120, // 136: dm.DeviceProfileReadReq.device:type_name -> dm.DeviceCore - 120, // 137: dm.DeviceInfoCanBindReq.device:type_name -> dm.DeviceCore - 120, // 138: dm.DeviceInfoMultiBindReq.devices:type_name -> dm.DeviceCore - 121, // 139: dm.DeviceInfoMultiBindResp.errs:type_name -> dm.DeviceError - 120, // 140: dm.DeviceInfoBindReq.device:type_name -> dm.DeviceCore - 120, // 141: dm.DeviceProfileIndexReq.device:type_name -> dm.DeviceCore - 142, // 142: dm.DeviceProfileIndexResp.profiles:type_name -> dm.DeviceProfile - 152, // 143: dm.DeviceCountResp.list:type_name -> dm.DeviceCountInfo - 208, // 144: dm.DeviceCountInfo.count:type_name -> dm.DeviceCountInfo.CountEntry - 1, // 145: dm.DeviceInfoCountReq.timeRange:type_name -> dm.TimeRange - 1, // 146: dm.DeviceTypeCountReq.timeRange:type_name -> dm.TimeRange - 210, // 147: dm.Firmware.desc:type_name -> google.protobuf.StringValue - 210, // 148: dm.Firmware.extData:type_name -> google.protobuf.StringValue - 160, // 149: dm.Firmware.files:type_name -> dm.OtaFirmwareFile - 210, // 150: dm.FirmwareInfo.desc:type_name -> google.protobuf.StringValue - 210, // 151: dm.FirmwareInfo.extData:type_name -> google.protobuf.StringValue - 160, // 152: dm.FirmwareInfo.files:type_name -> dm.OtaFirmwareFile - 2, // 153: dm.FirmwareInfoIndexReq.page:type_name -> dm.PageInfo - 159, // 154: dm.FirmwareInfoIndexResp.list:type_name -> dm.FirmwareInfo - 2, // 155: dm.OtaFirmwareFileIndexReq.page:type_name -> dm.PageInfo - 209, // 156: dm.OtaFirmwareFileIndexReq.size:type_name -> google.protobuf.Int64Value - 167, // 157: dm.OtaFirmwareFileIndexResp.list:type_name -> dm.OtaFirmwareFileInfo - 210, // 158: dm.FirmwareInfoReadResp.desc:type_name -> google.protobuf.StringValue - 210, // 159: dm.FirmwareInfoReadResp.extData:type_name -> google.protobuf.StringValue - 168, // 160: dm.FirmwareInfoReadResp.files:type_name -> dm.OtaFirmwareFileResp - 210, // 161: dm.OtaFirmwareInfoCreateReq.extra:type_name -> google.protobuf.StringValue - 210, // 162: dm.OtaFirmwareInfoUpdateReq.extra:type_name -> google.protobuf.StringValue - 2, // 163: dm.OtaFirmwareInfoIndexReq.page:type_name -> dm.PageInfo - 177, // 164: dm.OtaFirmwareInfoIndexResp.list:type_name -> dm.OtaFirmwareInfo - 172, // 165: dm.OtaFirmwareInfo.fileList:type_name -> dm.FirmwareFile - 179, // 166: dm.OtaFirmwareJobInfo.dynamic:type_name -> dm.OtaJobDynamicInfo - 180, // 167: dm.OtaFirmwareJobInfo.static:type_name -> dm.OtaJobStaticInfo - 2, // 168: dm.OtaFirmwareJobIndexReq.page:type_name -> dm.PageInfo - 178, // 169: dm.OtaFirmwareJobIndexResp.list:type_name -> dm.OtaFirmwareJobInfo - 2, // 170: dm.OtaJobByDeviceIndexReq.pageInfo:type_name -> dm.PageInfo - 2, // 171: dm.OtaFirmwareDeviceIndexReq.page:type_name -> dm.PageInfo - 185, // 172: dm.OtaFirmwareDeviceIndexResp.list:type_name -> dm.OtaFirmwareDeviceInfo - 26, // 173: dm.UserDeviceShareInfo.SchemaPermEntry.value:type_name -> dm.SharePerm - 26, // 174: dm.UserDeviceShareInfo.AccessPermEntry.value:type_name -> dm.SharePerm - 26, // 175: dm.UserDeviceShareMultiInfo.SchemaPermEntry.value:type_name -> dm.SharePerm - 26, // 176: dm.UserDeviceShareMultiInfo.AccessPermEntry.value:type_name -> dm.SharePerm - 112, // 177: dm.ProductInfo.CustomUiEntry.value:type_name -> dm.ProductCustomUi - 126, // 178: dm.DeviceManage.rootCheck:input_type -> dm.RootCheckReq - 110, // 179: dm.DeviceManage.deviceInfoCreate:input_type -> dm.DeviceInfo - 110, // 180: dm.DeviceManage.deviceInfoUpdate:input_type -> dm.DeviceInfo - 117, // 181: dm.DeviceManage.deviceOnlineMultiFix:input_type -> dm.deviceOnlineMultiFixReq - 119, // 182: dm.DeviceManage.deviceInfoDelete:input_type -> dm.DeviceInfoDeleteReq - 124, // 183: dm.DeviceManage.deviceInfoIndex:input_type -> dm.DeviceInfoIndexReq - 123, // 184: dm.DeviceManage.DeviceInfoMultiUpdate:input_type -> dm.DeviceInfoMultiUpdateReq - 122, // 185: dm.DeviceManage.deviceInfoRead:input_type -> dm.DeviceInfoReadReq - 147, // 186: dm.DeviceManage.deviceInfoBind:input_type -> dm.DeviceInfoBindReq - 145, // 187: dm.DeviceManage.deviceInfoMultiBind:input_type -> dm.DeviceInfoMultiBindReq - 144, // 188: dm.DeviceManage.deviceInfoCanBind:input_type -> dm.DeviceInfoCanBindReq - 120, // 189: dm.DeviceManage.deviceInfoUnbind:input_type -> dm.DeviceCore - 20, // 190: dm.DeviceManage.deviceTransfer:input_type -> dm.DeviceTransferReq - 19, // 191: dm.DeviceManage.deviceMove:input_type -> dm.DeviceMoveReq - 15, // 192: dm.DeviceManage.deviceModuleVersionRead:input_type -> dm.DeviceModuleVersionReadReq - 17, // 193: dm.DeviceManage.deviceModuleVersionIndex:input_type -> dm.DeviceModuleVersionIndexReq - 94, // 194: dm.DeviceManage.deviceGatewayMultiCreate:input_type -> dm.DeviceGatewayMultiCreateReq - 97, // 195: dm.DeviceManage.deviceGatewayMultiUpdate:input_type -> dm.DeviceGatewayMultiSaveReq - 95, // 196: dm.DeviceManage.deviceGatewayIndex:input_type -> dm.DeviceGatewayIndexReq - 97, // 197: dm.DeviceManage.deviceGatewayMultiDelete:input_type -> dm.DeviceGatewayMultiSaveReq - 153, // 198: dm.DeviceManage.deviceInfoCount:input_type -> dm.DeviceInfoCountReq - 154, // 199: dm.DeviceManage.deviceTypeCount:input_type -> dm.DeviceTypeCountReq - 150, // 200: dm.DeviceManage.deviceCount:input_type -> dm.DeviceCountReq - 143, // 201: dm.DeviceManage.deviceProfileRead:input_type -> dm.DeviceProfileReadReq - 143, // 202: dm.DeviceManage.deviceProfileDelete:input_type -> dm.DeviceProfileReadReq - 142, // 203: dm.DeviceManage.deviceProfileUpdate:input_type -> dm.DeviceProfile - 148, // 204: dm.DeviceManage.deviceProfileIndex:input_type -> dm.DeviceProfileIndexReq - 14, // 205: dm.ProductManage.productInit:input_type -> dm.ProductInitReq - 111, // 206: dm.ProductManage.productInfoCreate:input_type -> dm.ProductInfo - 111, // 207: dm.ProductManage.productInfoUpdate:input_type -> dm.ProductInfo - 113, // 208: dm.ProductManage.productInfoDelete:input_type -> dm.ProductInfoDeleteReq - 115, // 209: dm.ProductManage.productInfoIndex:input_type -> dm.ProductInfoIndexReq - 114, // 210: dm.ProductManage.productInfoRead:input_type -> dm.ProductInfoReadReq - 132, // 211: dm.ProductManage.productSchemaUpdate:input_type -> dm.ProductSchemaUpdateReq - 134, // 212: dm.ProductManage.productSchemaCreate:input_type -> dm.ProductSchemaCreateReq - 133, // 213: dm.ProductManage.productSchemaMultiCreate:input_type -> dm.ProductSchemaMultiCreateReq - 135, // 214: dm.ProductManage.productSchemaDelete:input_type -> dm.ProductSchemaDeleteReq - 136, // 215: dm.ProductManage.productSchemaIndex:input_type -> dm.ProductSchemaIndexReq - 139, // 216: dm.ProductManage.productSchemaTslImport:input_type -> dm.ProductSchemaTslImportReq - 140, // 217: dm.ProductManage.productSchemaTslRead:input_type -> dm.ProductSchemaTslReadReq - 89, // 218: dm.ProductManage.productCustomRead:input_type -> dm.ProductCustomReadReq - 90, // 219: dm.ProductManage.productCustomUpdate:input_type -> dm.ProductCustom - 31, // 220: dm.ProductManage.productCategoryCreate:input_type -> dm.ProductCategory - 31, // 221: dm.ProductManage.productCategoryUpdate:input_type -> dm.ProductCategory - 7, // 222: dm.ProductManage.productCategoryDelete:input_type -> dm.WithID - 35, // 223: dm.ProductManage.productCategoryIndex:input_type -> dm.ProductCategoryIndexReq - 8, // 224: dm.ProductManage.productCategoryRead:input_type -> dm.WithIDChildren - 33, // 225: dm.ProductManage.productCategorySchemaIndex:input_type -> dm.ProductCategorySchemaIndexReq - 34, // 226: dm.ProductManage.productCategorySchemaMultiUpdate:input_type -> dm.ProductCategorySchemaMultiSaveReq - 34, // 227: dm.ProductManage.productCategorySchemaMultiCreate:input_type -> dm.ProductCategorySchemaMultiSaveReq - 34, // 228: dm.ProductManage.productCategorySchemaMultiDelete:input_type -> dm.ProductCategorySchemaMultiSaveReq - 0, // 229: dm.SchemaManage.commonSchemaInit:input_type -> dm.Empty - 127, // 230: dm.SchemaManage.commonSchemaUpdate:input_type -> dm.CommonSchemaUpdateReq - 128, // 231: dm.SchemaManage.commonSchemaCreate:input_type -> dm.CommonSchemaCreateReq - 7, // 232: dm.SchemaManage.commonSchemaDelete:input_type -> dm.WithID - 129, // 233: dm.SchemaManage.commonSchemaIndex:input_type -> dm.CommonSchemaIndexReq - 37, // 234: dm.ProtocolManage.protocolInfoIndex:input_type -> dm.ProtocolInfoIndexReq - 6, // 235: dm.ProtocolManage.protocolInfoRead:input_type -> dm.WithIDCode - 42, // 236: dm.ProtocolManage.protocolInfoCreate:input_type -> dm.ProtocolInfo - 42, // 237: dm.ProtocolManage.protocolInfoUpdate:input_type -> dm.ProtocolInfo - 7, // 238: dm.ProtocolManage.protocolInfoDelete:input_type -> dm.WithID - 41, // 239: dm.ProtocolManage.protocolServiceUpdate:input_type -> dm.ProtocolService - 7, // 240: dm.ProtocolManage.protocolServiceDelete:input_type -> dm.WithID - 39, // 241: dm.ProtocolManage.protocolServiceIndex:input_type -> dm.ProtocolServiceIndexReq - 100, // 242: dm.DeviceGroup.groupInfoCreate:input_type -> dm.GroupInfo - 102, // 243: dm.DeviceGroup.groupInfoIndex:input_type -> dm.GroupInfoIndexReq - 8, // 244: dm.DeviceGroup.groupInfoRead:input_type -> dm.WithIDChildren - 100, // 245: dm.DeviceGroup.groupInfoUpdate:input_type -> dm.GroupInfo - 7, // 246: dm.DeviceGroup.groupInfoDelete:input_type -> dm.WithID - 105, // 247: dm.DeviceGroup.groupDeviceMultiCreate:input_type -> dm.GroupDeviceMultiSaveReq - 105, // 248: dm.DeviceGroup.groupDeviceMultiUpdate:input_type -> dm.GroupDeviceMultiSaveReq - 106, // 249: dm.DeviceGroup.groupDeviceIndex:input_type -> dm.GroupDeviceIndexReq - 108, // 250: dm.DeviceGroup.groupDeviceMultiDelete:input_type -> dm.GroupDeviceMultiDeleteReq - 83, // 251: dm.RemoteConfig.RemoteConfigCreate:input_type -> dm.RemoteConfigCreateReq - 84, // 252: dm.RemoteConfig.RemoteConfigIndex:input_type -> dm.RemoteConfigIndexReq - 86, // 253: dm.RemoteConfig.RemoteConfigPushAll:input_type -> dm.RemoteConfigPushAllReq - 87, // 254: dm.RemoteConfig.RemoteConfigLastRead:input_type -> dm.RemoteConfigLastReadReq - 65, // 255: dm.DeviceMsg.sdkLogIndex:input_type -> dm.SdkLogIndexReq - 56, // 256: dm.DeviceMsg.hubLogIndex:input_type -> dm.HubLogIndexReq - 62, // 257: dm.DeviceMsg.sendLogIndex:input_type -> dm.SendLogIndexReq - 59, // 258: dm.DeviceMsg.statusLogIndex:input_type -> dm.StatusLogIndexReq - 50, // 259: dm.DeviceMsg.propertyLogLatestIndex:input_type -> dm.PropertyLogLatestIndexReq - 49, // 260: dm.DeviceMsg.propertyLogIndex:input_type -> dm.PropertyLogIndexReq - 53, // 261: dm.DeviceMsg.eventLogIndex:input_type -> dm.EventLogIndexReq - 50, // 262: dm.DeviceMsg.shadowIndex:input_type -> dm.PropertyLogLatestIndexReq - 98, // 263: dm.DeviceMsg.gatewayCanBindIndex:input_type -> dm.GatewayCanBindIndexReq - 68, // 264: dm.DeviceInteract.actionSend:input_type -> dm.ActionSendReq - 70, // 265: dm.DeviceInteract.actionRead:input_type -> dm.RespReadReq - 73, // 266: dm.DeviceInteract.actionResp:input_type -> dm.ActionRespReq - 47, // 267: dm.DeviceInteract.propertyGetReportSend:input_type -> dm.PropertyGetReportSendReq - 71, // 268: dm.DeviceInteract.propertyControlSend:input_type -> dm.PropertyControlSendReq - 79, // 269: dm.DeviceInteract.propertyControlMultiSend:input_type -> dm.PropertyControlMultiSendReq - 70, // 270: dm.DeviceInteract.propertyControlRead:input_type -> dm.RespReadReq - 77, // 271: dm.DeviceInteract.sendMsg:input_type -> dm.SendMsgReq - 75, // 272: dm.DeviceInteract.gatewayGetFoundSend:input_type -> dm.GatewayGetFoundReq - 76, // 273: dm.DeviceInteract.gatewayNotifyBindSend:input_type -> dm.GatewayNotifyBindSendReq - 173, // 274: dm.OtaManage.otaFirmwareInfoCreate:input_type -> dm.OtaFirmwareInfoCreateReq - 174, // 275: dm.OtaManage.otaFirmwareInfoUpdate:input_type -> dm.OtaFirmwareInfoUpdateReq - 7, // 276: dm.OtaManage.otaFirmwareInfoDelete:input_type -> dm.WithID - 175, // 277: dm.OtaManage.otaFirmwareInfoIndex:input_type -> dm.OtaFirmwareInfoIndexReq - 7, // 278: dm.OtaManage.otaFirmwareInfoRead:input_type -> dm.WithID - 178, // 279: dm.OtaManage.otaFirmwareJobCreate:input_type -> dm.OtaFirmwareJobInfo - 181, // 280: dm.OtaManage.otaFirmwareJobIndex:input_type -> dm.OtaFirmwareJobIndexReq - 7, // 281: dm.OtaManage.otaFirmwareJobRead:input_type -> dm.WithID - 178, // 282: dm.OtaManage.otaFirmwareJobUpdate:input_type -> dm.OtaFirmwareJobInfo - 184, // 283: dm.OtaManage.otaFirmwareDeviceIndex:input_type -> dm.OtaFirmwareDeviceIndexReq - 187, // 284: dm.OtaManage.otaFirmwareDeviceCancel:input_type -> dm.OtaFirmwareDeviceCancelReq - 188, // 285: dm.OtaManage.otaFirmwareDeviceRetry:input_type -> dm.OtaFirmwareDeviceRetryReq - 189, // 286: dm.OtaManage.otaFirmwareDeviceConfirm:input_type -> dm.OtaFirmwareDeviceConfirmReq - 13, // 287: dm.OtaManage.otaModuleInfoCreate:input_type -> dm.OtaModuleInfo - 13, // 288: dm.OtaManage.otaModuleInfoUpdate:input_type -> dm.OtaModuleInfo - 7, // 289: dm.OtaManage.otaModuleInfoDelete:input_type -> dm.WithID - 11, // 290: dm.OtaManage.otaModuleInfoIndex:input_type -> dm.OtaModuleInfoIndexReq - 6, // 291: dm.OtaManage.otaModuleInfoRead:input_type -> dm.WithIDCode - 30, // 292: dm.userDevice.userDeviceCollectMultiCreate:input_type -> dm.UserDeviceCollectSave - 30, // 293: dm.userDevice.userDeviceCollectMultiDelete:input_type -> dm.UserDeviceCollectSave - 0, // 294: dm.userDevice.userDeviceCollectIndex:input_type -> dm.Empty - 25, // 295: dm.userDevice.userDeviceShareCreate:input_type -> dm.UserDeviceShareInfo - 25, // 296: dm.userDevice.userDeviceShareUpdate:input_type -> dm.UserDeviceShareInfo - 21, // 297: dm.userDevice.userDeviceShareDelete:input_type -> dm.UserDeviceShareReadReq - 24, // 298: dm.userDevice.userDeviceShareMultiDelete:input_type -> dm.UserDeviceShareMultiDeleteReq - 22, // 299: dm.userDevice.userDeviceShareIndex:input_type -> dm.UserDeviceShareIndexReq - 21, // 300: dm.userDevice.userDeviceShareRead:input_type -> dm.UserDeviceShareReadReq - 20, // 301: dm.userDevice.userDeviceTransfer:input_type -> dm.DeviceTransferReq - 27, // 302: dm.userDevice.userDeviceShareMultiCreate:input_type -> dm.UserDeviceShareMultiInfo - 28, // 303: dm.userDevice.userDeivceShareMultiIndex:input_type -> dm.UserDeviceShareMultiToken - 29, // 304: dm.userDevice.userDeivceShareMultiAccept:input_type -> dm.UserDeviceShareMultiAcceptReq - 0, // 305: dm.DeviceManage.rootCheck:output_type -> dm.Empty - 0, // 306: dm.DeviceManage.deviceInfoCreate:output_type -> dm.Empty - 0, // 307: dm.DeviceManage.deviceInfoUpdate:output_type -> dm.Empty - 0, // 308: dm.DeviceManage.deviceOnlineMultiFix:output_type -> dm.Empty - 0, // 309: dm.DeviceManage.deviceInfoDelete:output_type -> dm.Empty - 125, // 310: dm.DeviceManage.deviceInfoIndex:output_type -> dm.DeviceInfoIndexResp - 0, // 311: dm.DeviceManage.DeviceInfoMultiUpdate:output_type -> dm.Empty - 110, // 312: dm.DeviceManage.deviceInfoRead:output_type -> dm.DeviceInfo - 0, // 313: dm.DeviceManage.deviceInfoBind:output_type -> dm.Empty - 146, // 314: dm.DeviceManage.deviceInfoMultiBind:output_type -> dm.DeviceInfoMultiBindResp - 0, // 315: dm.DeviceManage.deviceInfoCanBind:output_type -> dm.Empty - 0, // 316: dm.DeviceManage.deviceInfoUnbind:output_type -> dm.Empty - 0, // 317: dm.DeviceManage.deviceTransfer:output_type -> dm.Empty - 0, // 318: dm.DeviceManage.deviceMove:output_type -> dm.Empty - 16, // 319: dm.DeviceManage.deviceModuleVersionRead:output_type -> dm.DeviceModuleVersion - 18, // 320: dm.DeviceManage.deviceModuleVersionIndex:output_type -> dm.DeviceModuleVersionIndexResp - 0, // 321: dm.DeviceManage.deviceGatewayMultiCreate:output_type -> dm.Empty - 0, // 322: dm.DeviceManage.deviceGatewayMultiUpdate:output_type -> dm.Empty - 96, // 323: dm.DeviceManage.deviceGatewayIndex:output_type -> dm.DeviceGatewayIndexResp - 0, // 324: dm.DeviceManage.deviceGatewayMultiDelete:output_type -> dm.Empty - 155, // 325: dm.DeviceManage.deviceInfoCount:output_type -> dm.DeviceInfoCount - 156, // 326: dm.DeviceManage.deviceTypeCount:output_type -> dm.DeviceTypeCountResp - 151, // 327: dm.DeviceManage.deviceCount:output_type -> dm.DeviceCountResp - 142, // 328: dm.DeviceManage.deviceProfileRead:output_type -> dm.DeviceProfile - 0, // 329: dm.DeviceManage.deviceProfileDelete:output_type -> dm.Empty - 0, // 330: dm.DeviceManage.deviceProfileUpdate:output_type -> dm.Empty - 149, // 331: dm.DeviceManage.deviceProfileIndex:output_type -> dm.DeviceProfileIndexResp - 0, // 332: dm.ProductManage.productInit:output_type -> dm.Empty - 0, // 333: dm.ProductManage.productInfoCreate:output_type -> dm.Empty - 0, // 334: dm.ProductManage.productInfoUpdate:output_type -> dm.Empty - 0, // 335: dm.ProductManage.productInfoDelete:output_type -> dm.Empty - 116, // 336: dm.ProductManage.productInfoIndex:output_type -> dm.ProductInfoIndexResp - 111, // 337: dm.ProductManage.productInfoRead:output_type -> dm.ProductInfo - 0, // 338: dm.ProductManage.productSchemaUpdate:output_type -> dm.Empty - 0, // 339: dm.ProductManage.productSchemaCreate:output_type -> dm.Empty - 0, // 340: dm.ProductManage.productSchemaMultiCreate:output_type -> dm.Empty - 0, // 341: dm.ProductManage.productSchemaDelete:output_type -> dm.Empty - 137, // 342: dm.ProductManage.productSchemaIndex:output_type -> dm.ProductSchemaIndexResp - 0, // 343: dm.ProductManage.productSchemaTslImport:output_type -> dm.Empty - 141, // 344: dm.ProductManage.productSchemaTslRead:output_type -> dm.ProductSchemaTslReadResp - 90, // 345: dm.ProductManage.productCustomRead:output_type -> dm.ProductCustom - 0, // 346: dm.ProductManage.productCustomUpdate:output_type -> dm.Empty - 7, // 347: dm.ProductManage.productCategoryCreate:output_type -> dm.WithID - 0, // 348: dm.ProductManage.productCategoryUpdate:output_type -> dm.Empty - 0, // 349: dm.ProductManage.productCategoryDelete:output_type -> dm.Empty - 36, // 350: dm.ProductManage.productCategoryIndex:output_type -> dm.ProductCategoryIndexResp - 31, // 351: dm.ProductManage.productCategoryRead:output_type -> dm.ProductCategory - 32, // 352: dm.ProductManage.productCategorySchemaIndex:output_type -> dm.ProductCategorySchemaIndexResp - 0, // 353: dm.ProductManage.productCategorySchemaMultiUpdate:output_type -> dm.Empty - 0, // 354: dm.ProductManage.productCategorySchemaMultiCreate:output_type -> dm.Empty - 0, // 355: dm.ProductManage.productCategorySchemaMultiDelete:output_type -> dm.Empty - 0, // 356: dm.SchemaManage.commonSchemaInit:output_type -> dm.Empty - 0, // 357: dm.SchemaManage.commonSchemaUpdate:output_type -> dm.Empty - 0, // 358: dm.SchemaManage.commonSchemaCreate:output_type -> dm.Empty - 0, // 359: dm.SchemaManage.commonSchemaDelete:output_type -> dm.Empty - 130, // 360: dm.SchemaManage.commonSchemaIndex:output_type -> dm.CommonSchemaIndexResp - 38, // 361: dm.ProtocolManage.protocolInfoIndex:output_type -> dm.ProtocolInfoIndexResp - 42, // 362: dm.ProtocolManage.protocolInfoRead:output_type -> dm.ProtocolInfo - 7, // 363: dm.ProtocolManage.protocolInfoCreate:output_type -> dm.WithID - 0, // 364: dm.ProtocolManage.protocolInfoUpdate:output_type -> dm.Empty - 0, // 365: dm.ProtocolManage.protocolInfoDelete:output_type -> dm.Empty - 0, // 366: dm.ProtocolManage.protocolServiceUpdate:output_type -> dm.Empty - 0, // 367: dm.ProtocolManage.protocolServiceDelete:output_type -> dm.Empty - 40, // 368: dm.ProtocolManage.protocolServiceIndex:output_type -> dm.ProtocolServiceIndexResp - 7, // 369: dm.DeviceGroup.groupInfoCreate:output_type -> dm.WithID - 103, // 370: dm.DeviceGroup.groupInfoIndex:output_type -> dm.GroupInfoIndexResp - 100, // 371: dm.DeviceGroup.groupInfoRead:output_type -> dm.GroupInfo - 0, // 372: dm.DeviceGroup.groupInfoUpdate:output_type -> dm.Empty - 0, // 373: dm.DeviceGroup.groupInfoDelete:output_type -> dm.Empty - 0, // 374: dm.DeviceGroup.groupDeviceMultiCreate:output_type -> dm.Empty - 0, // 375: dm.DeviceGroup.groupDeviceMultiUpdate:output_type -> dm.Empty - 107, // 376: dm.DeviceGroup.groupDeviceIndex:output_type -> dm.GroupDeviceIndexResp - 0, // 377: dm.DeviceGroup.groupDeviceMultiDelete:output_type -> dm.Empty - 0, // 378: dm.RemoteConfig.RemoteConfigCreate:output_type -> dm.Empty - 85, // 379: dm.RemoteConfig.RemoteConfigIndex:output_type -> dm.RemoteConfigIndexResp - 0, // 380: dm.RemoteConfig.RemoteConfigPushAll:output_type -> dm.Empty - 88, // 381: dm.RemoteConfig.RemoteConfigLastRead:output_type -> dm.RemoteConfigLastReadResp - 66, // 382: dm.DeviceMsg.sdkLogIndex:output_type -> dm.SdkLogIndexResp - 57, // 383: dm.DeviceMsg.hubLogIndex:output_type -> dm.HubLogIndexResp - 63, // 384: dm.DeviceMsg.sendLogIndex:output_type -> dm.SendLogIndexResp - 60, // 385: dm.DeviceMsg.statusLogIndex:output_type -> dm.StatusLogIndexResp - 52, // 386: dm.DeviceMsg.propertyLogLatestIndex:output_type -> dm.PropertyLogIndexResp - 52, // 387: dm.DeviceMsg.propertyLogIndex:output_type -> dm.PropertyLogIndexResp - 55, // 388: dm.DeviceMsg.eventLogIndex:output_type -> dm.EventLogIndexResp - 45, // 389: dm.DeviceMsg.shadowIndex:output_type -> dm.ShadowIndexResp - 99, // 390: dm.DeviceMsg.gatewayCanBindIndex:output_type -> dm.GatewayCanBindIndexResp - 69, // 391: dm.DeviceInteract.actionSend:output_type -> dm.ActionSendResp - 69, // 392: dm.DeviceInteract.actionRead:output_type -> dm.ActionSendResp - 0, // 393: dm.DeviceInteract.actionResp:output_type -> dm.Empty - 48, // 394: dm.DeviceInteract.propertyGetReportSend:output_type -> dm.PropertyGetReportSendResp - 74, // 395: dm.DeviceInteract.propertyControlSend:output_type -> dm.PropertyControlSendResp - 81, // 396: dm.DeviceInteract.propertyControlMultiSend:output_type -> dm.PropertyControlMultiSendResp - 74, // 397: dm.DeviceInteract.propertyControlRead:output_type -> dm.PropertyControlSendResp - 78, // 398: dm.DeviceInteract.sendMsg:output_type -> dm.SendMsgResp - 0, // 399: dm.DeviceInteract.gatewayGetFoundSend:output_type -> dm.Empty - 0, // 400: dm.DeviceInteract.gatewayNotifyBindSend:output_type -> dm.Empty - 7, // 401: dm.OtaManage.otaFirmwareInfoCreate:output_type -> dm.WithID - 7, // 402: dm.OtaManage.otaFirmwareInfoUpdate:output_type -> dm.WithID - 0, // 403: dm.OtaManage.otaFirmwareInfoDelete:output_type -> dm.Empty - 176, // 404: dm.OtaManage.otaFirmwareInfoIndex:output_type -> dm.OtaFirmwareInfoIndexResp - 177, // 405: dm.OtaManage.otaFirmwareInfoRead:output_type -> dm.OtaFirmwareInfo - 7, // 406: dm.OtaManage.otaFirmwareJobCreate:output_type -> dm.WithID - 182, // 407: dm.OtaManage.otaFirmwareJobIndex:output_type -> dm.OtaFirmwareJobIndexResp - 178, // 408: dm.OtaManage.otaFirmwareJobRead:output_type -> dm.OtaFirmwareJobInfo - 0, // 409: dm.OtaManage.otaFirmwareJobUpdate:output_type -> dm.Empty - 186, // 410: dm.OtaManage.otaFirmwareDeviceIndex:output_type -> dm.OtaFirmwareDeviceIndexResp - 0, // 411: dm.OtaManage.otaFirmwareDeviceCancel:output_type -> dm.Empty - 0, // 412: dm.OtaManage.otaFirmwareDeviceRetry:output_type -> dm.Empty - 0, // 413: dm.OtaManage.otaFirmwareDeviceConfirm:output_type -> dm.Empty - 7, // 414: dm.OtaManage.otaModuleInfoCreate:output_type -> dm.WithID - 0, // 415: dm.OtaManage.otaModuleInfoUpdate:output_type -> dm.Empty - 0, // 416: dm.OtaManage.otaModuleInfoDelete:output_type -> dm.Empty - 12, // 417: dm.OtaManage.otaModuleInfoIndex:output_type -> dm.OtaModuleInfoIndexResp - 13, // 418: dm.OtaManage.otaModuleInfoRead:output_type -> dm.OtaModuleInfo - 0, // 419: dm.userDevice.userDeviceCollectMultiCreate:output_type -> dm.Empty - 0, // 420: dm.userDevice.userDeviceCollectMultiDelete:output_type -> dm.Empty - 30, // 421: dm.userDevice.userDeviceCollectIndex:output_type -> dm.UserDeviceCollectSave - 7, // 422: dm.userDevice.userDeviceShareCreate:output_type -> dm.WithID - 0, // 423: dm.userDevice.userDeviceShareUpdate:output_type -> dm.Empty - 0, // 424: dm.userDevice.userDeviceShareDelete:output_type -> dm.Empty - 0, // 425: dm.userDevice.userDeviceShareMultiDelete:output_type -> dm.Empty - 23, // 426: dm.userDevice.userDeviceShareIndex:output_type -> dm.UserDeviceShareIndexResp - 25, // 427: dm.userDevice.userDeviceShareRead:output_type -> dm.UserDeviceShareInfo - 0, // 428: dm.userDevice.userDeviceTransfer:output_type -> dm.Empty - 28, // 429: dm.userDevice.userDeviceShareMultiCreate:output_type -> dm.UserDeviceShareMultiToken - 27, // 430: dm.userDevice.userDeivceShareMultiIndex:output_type -> dm.UserDeviceShareMultiInfo - 0, // 431: dm.userDevice.userDeivceShareMultiAccept:output_type -> dm.Empty - 305, // [305:432] is the sub-list for method output_type - 178, // [178:305] is the sub-list for method input_type - 178, // [178:178] is the sub-list for extension type_name - 178, // [178:178] is the sub-list for extension extendee - 0, // [0:178] is the sub-list for field type_name + 121, // 13: dm.UserDeviceShareInfo.device:type_name -> dm.DeviceCore + 192, // 14: dm.UserDeviceShareInfo.schemaPerm:type_name -> dm.UserDeviceShareInfo.SchemaPermEntry + 193, // 15: dm.UserDeviceShareInfo.accessPerm:type_name -> dm.UserDeviceShareInfo.AccessPermEntry + 210, // 16: dm.UserDeviceShareInfo.expTime:type_name -> google.protobuf.Int64Value + 211, // 17: dm.DeviceShareInfo.deviceAlias:type_name -> google.protobuf.StringValue + 27, // 18: dm.UserDeviceShareMultiInfo.devices:type_name -> dm.DeviceShareInfo + 194, // 19: dm.UserDeviceShareMultiInfo.schemaPerm:type_name -> dm.UserDeviceShareMultiInfo.SchemaPermEntry + 195, // 20: dm.UserDeviceShareMultiInfo.accessPerm:type_name -> dm.UserDeviceShareMultiInfo.AccessPermEntry + 121, // 21: dm.UserDeviceShareMultiAcceptReq.devices:type_name -> dm.DeviceCore + 121, // 22: dm.UserDeviceCollectSave.devices:type_name -> dm.DeviceCore + 211, // 23: dm.ProductCategory.desc:type_name -> google.protobuf.StringValue + 32, // 24: dm.ProductCategory.children:type_name -> dm.ProductCategory + 2, // 25: dm.ProductCategoryIndexReq.page:type_name -> dm.PageInfo + 32, // 26: dm.ProductCategoryIndexResp.list:type_name -> dm.ProductCategory + 2, // 27: dm.ProtocolInfoIndexReq.page:type_name -> dm.PageInfo + 43, // 28: dm.ProtocolInfoIndexResp.list:type_name -> dm.ProtocolInfo + 2, // 29: dm.ProtocolServiceIndexReq.page:type_name -> dm.PageInfo + 42, // 30: dm.ProtocolServiceIndexResp.list:type_name -> dm.ProtocolService + 44, // 31: dm.ProtocolInfo.configFields:type_name -> dm.ProtocolConfigField + 45, // 32: dm.ProtocolInfo.configInfos:type_name -> dm.ProtocolConfigInfo + 196, // 33: dm.ProtocolConfigInfo.config:type_name -> dm.ProtocolConfigInfo.ConfigEntry + 47, // 34: dm.ShadowIndexResp.list:type_name -> dm.ShadowIndex + 2, // 35: dm.PropertyLogIndexReq.page:type_name -> dm.PageInfo + 52, // 36: dm.PropertyLogIndexResp.list:type_name -> dm.PropertyLogInfo + 2, // 37: dm.EventLogIndexReq.page:type_name -> dm.PageInfo + 55, // 38: dm.EventLogIndexResp.list:type_name -> dm.EventLogInfo + 2, // 39: dm.HubLogIndexReq.page:type_name -> dm.PageInfo + 59, // 40: dm.HubLogIndexResp.list:type_name -> dm.HubLogInfo + 2, // 41: dm.StatusLogIndexReq.page:type_name -> dm.PageInfo + 62, // 42: dm.StatusLogIndexResp.list:type_name -> dm.StatusLogInfo + 2, // 43: dm.SendLogIndexReq.page:type_name -> dm.PageInfo + 65, // 44: dm.SendLogIndexResp.list:type_name -> dm.SendLogInfo + 2, // 45: dm.SdkLogIndexReq.page:type_name -> dm.PageInfo + 68, // 46: dm.SdkLogIndexResp.list:type_name -> dm.SdkLogInfo + 5, // 47: dm.ActionSendReq.option:type_name -> dm.SendOption + 73, // 48: dm.PropertyControlSendReq.withProfile:type_name -> dm.WithProfile + 121, // 49: dm.GatewayNotifyBindSendReq.gateway:type_name -> dm.DeviceCore + 121, // 50: dm.GatewayNotifyBindSendReq.subDevices:type_name -> dm.DeviceCore + 121, // 51: dm.PropertyControlMultiSendReq.devices:type_name -> dm.DeviceCore + 81, // 52: dm.PropertyControlMultiSendResp.list:type_name -> dm.PropertyControlSendMsg + 2, // 53: dm.RemoteConfigIndexReq.page:type_name -> dm.PageInfo + 83, // 54: dm.RemoteConfigIndexResp.list:type_name -> dm.ProductRemoteConfig + 83, // 55: dm.RemoteConfigLastReadResp.info:type_name -> dm.ProductRemoteConfig + 211, // 56: dm.ProductCustom.transformScript:type_name -> google.protobuf.StringValue + 211, // 57: dm.ProductCustom.loginAuthScript:type_name -> google.protobuf.StringValue + 92, // 58: dm.ProductCustom.customTopics:type_name -> dm.CustomTopic + 94, // 59: dm.DeviceGatewayBindDevice.sign:type_name -> dm.DeviceGatewaySign + 121, // 60: dm.DeviceGatewayMultiCreateReq.gateway:type_name -> dm.DeviceCore + 93, // 61: dm.DeviceGatewayMultiCreateReq.list:type_name -> dm.DeviceGatewayBindDevice + 2, // 62: dm.DeviceGatewayIndexReq.page:type_name -> dm.PageInfo + 121, // 63: dm.DeviceGatewayIndexReq.gateway:type_name -> dm.DeviceCore + 121, // 64: dm.DeviceGatewayIndexReq.subDevice:type_name -> dm.DeviceCore + 121, // 65: dm.DeviceGatewayIndexResp.list:type_name -> dm.DeviceCore + 121, // 66: dm.DeviceGatewayMultiSaveReq.gateway:type_name -> dm.DeviceCore + 121, // 67: dm.DeviceGatewayMultiSaveReq.list:type_name -> dm.DeviceCore + 121, // 68: dm.GatewayCanBindIndexReq.gateway:type_name -> dm.DeviceCore + 121, // 69: dm.GatewayCanBindIndexResp.subDevices:type_name -> dm.DeviceCore + 197, // 70: dm.GroupInfo.tags:type_name -> dm.GroupInfo.TagsEntry + 121, // 71: dm.GroupInfo.devices:type_name -> dm.DeviceCore + 101, // 72: dm.GroupInfo.children:type_name -> dm.GroupInfo + 2, // 73: dm.GroupInfoIndexReq.page:type_name -> dm.PageInfo + 198, // 74: dm.GroupInfoIndexReq.tags:type_name -> dm.GroupInfoIndexReq.TagsEntry + 101, // 75: dm.GroupInfoIndexResp.list:type_name -> dm.GroupInfo + 199, // 76: dm.GroupInfoUpdateReq.tags:type_name -> dm.GroupInfoUpdateReq.TagsEntry + 121, // 77: dm.GroupDeviceMultiSaveReq.list:type_name -> dm.DeviceCore + 2, // 78: dm.GroupDeviceIndexReq.page:type_name -> dm.PageInfo + 111, // 79: dm.GroupDeviceIndexResp.list:type_name -> dm.DeviceInfo + 121, // 80: dm.GroupDeviceMultiDeleteReq.list:type_name -> dm.DeviceCore + 211, // 81: dm.DeviceInfo.version:type_name -> google.protobuf.StringValue + 110, // 82: dm.DeviceInfo.Position:type_name -> dm.Point + 211, // 83: dm.DeviceInfo.address:type_name -> google.protobuf.StringValue + 211, // 84: dm.DeviceInfo.adcode:type_name -> google.protobuf.StringValue + 200, // 85: dm.DeviceInfo.tags:type_name -> dm.DeviceInfo.TagsEntry + 211, // 86: dm.DeviceInfo.deviceAlias:type_name -> google.protobuf.StringValue + 211, // 87: dm.DeviceInfo.phone:type_name -> google.protobuf.StringValue + 211, // 88: dm.DeviceInfo.iccid:type_name -> google.protobuf.StringValue + 201, // 89: dm.DeviceInfo.schemaAlias:type_name -> dm.DeviceInfo.SchemaAliasEntry + 210, // 90: dm.DeviceInfo.rssi:type_name -> google.protobuf.Int64Value + 202, // 91: dm.DeviceInfo.protocolConf:type_name -> dm.DeviceInfo.ProtocolConfEntry + 10, // 92: dm.DeviceInfo.distributor:type_name -> dm.IDPathWithUpdate + 210, // 93: dm.DeviceInfo.expTime:type_name -> google.protobuf.Int64Value + 111, // 94: dm.DeviceInfo.Gateway:type_name -> dm.DeviceInfo + 211, // 95: dm.ProductInfo.desc:type_name -> google.protobuf.StringValue + 203, // 96: dm.ProductInfo.tags:type_name -> dm.ProductInfo.TagsEntry + 43, // 97: dm.ProductInfo.protocol:type_name -> dm.ProtocolInfo + 32, // 98: dm.ProductInfo.category:type_name -> dm.ProductCategory + 204, // 99: dm.ProductInfo.protocolConf:type_name -> dm.ProductInfo.ProtocolConfEntry + 210, // 100: dm.ProductInfo.trialTime:type_name -> google.protobuf.Int64Value + 205, // 101: dm.ProductInfo.customUi:type_name -> dm.ProductInfo.CustomUiEntry + 2, // 102: dm.ProductInfoIndexReq.page:type_name -> dm.PageInfo + 206, // 103: dm.ProductInfoIndexReq.tags:type_name -> dm.ProductInfoIndexReq.TagsEntry + 207, // 104: dm.ProductInfoIndexReq.protocolConf:type_name -> dm.ProductInfoIndexReq.ProtocolConfEntry + 112, // 105: dm.ProductInfoIndexResp.list:type_name -> dm.ProductInfo + 119, // 106: dm.deviceOnlineMultiFixReq.devices:type_name -> dm.deviceOnlineMultiFix + 121, // 107: dm.deviceOnlineMultiFix.device:type_name -> dm.DeviceCore + 121, // 108: dm.DeviceInfoMultiUpdateReq.devices:type_name -> dm.DeviceCore + 4, // 109: dm.DeviceInfoMultiUpdateReq.FilterDistributorID:type_name -> dm.CompareInt64 + 9, // 110: dm.DeviceInfoMultiUpdateReq.distributor:type_name -> dm.IDPath + 2, // 111: dm.DeviceInfoIndexReq.page:type_name -> dm.PageInfo + 208, // 112: dm.DeviceInfoIndexReq.tags:type_name -> dm.DeviceInfoIndexReq.TagsEntry + 110, // 113: dm.DeviceInfoIndexReq.Position:type_name -> dm.Point + 121, // 114: dm.DeviceInfoIndexReq.devices:type_name -> dm.DeviceCore + 121, // 115: dm.DeviceInfoIndexReq.gateway:type_name -> dm.DeviceCore + 9, // 116: dm.DeviceInfoIndexReq.distributor:type_name -> dm.IDPath + 4, // 117: dm.DeviceInfoIndexReq.ratedPower:type_name -> dm.CompareInt64 + 4, // 118: dm.DeviceInfoIndexReq.expTime:type_name -> dm.CompareInt64 + 111, // 119: dm.DeviceInfoIndexResp.list:type_name -> dm.DeviceInfo + 132, // 120: dm.CommonSchemaUpdateReq.info:type_name -> dm.CommonSchemaInfo + 132, // 121: dm.CommonSchemaCreateReq.info:type_name -> dm.CommonSchemaInfo + 2, // 122: dm.CommonSchemaIndexReq.page:type_name -> dm.PageInfo + 132, // 123: dm.CommonSchemaIndexResp.list:type_name -> dm.CommonSchemaInfo + 211, // 124: dm.CommonSchemaInfo.name:type_name -> google.protobuf.StringValue + 211, // 125: dm.CommonSchemaInfo.desc:type_name -> google.protobuf.StringValue + 211, // 126: dm.CommonSchemaInfo.affordance:type_name -> google.protobuf.StringValue + 32, // 127: dm.CommonSchemaInfo.productCategories:type_name -> dm.ProductCategory + 139, // 128: dm.ProductSchemaUpdateReq.info:type_name -> dm.ProductSchemaInfo + 139, // 129: dm.ProductSchemaMultiCreateReq.list:type_name -> dm.ProductSchemaInfo + 139, // 130: dm.ProductSchemaCreateReq.info:type_name -> dm.ProductSchemaInfo + 2, // 131: dm.ProductSchemaIndexReq.page:type_name -> dm.PageInfo + 139, // 132: dm.ProductSchemaIndexResp.list:type_name -> dm.ProductSchemaInfo + 211, // 133: dm.ProductSchemaInfo.name:type_name -> google.protobuf.StringValue + 211, // 134: dm.ProductSchemaInfo.desc:type_name -> google.protobuf.StringValue + 211, // 135: dm.ProductSchemaInfo.affordance:type_name -> google.protobuf.StringValue + 121, // 136: dm.DeviceProfile.device:type_name -> dm.DeviceCore + 121, // 137: dm.DeviceProfileReadReq.device:type_name -> dm.DeviceCore + 121, // 138: dm.DeviceInfoCanBindReq.device:type_name -> dm.DeviceCore + 121, // 139: dm.DeviceInfoMultiBindReq.devices:type_name -> dm.DeviceCore + 122, // 140: dm.DeviceInfoMultiBindResp.errs:type_name -> dm.DeviceError + 121, // 141: dm.DeviceInfoBindReq.device:type_name -> dm.DeviceCore + 121, // 142: dm.DeviceProfileIndexReq.device:type_name -> dm.DeviceCore + 143, // 143: dm.DeviceProfileIndexResp.profiles:type_name -> dm.DeviceProfile + 153, // 144: dm.DeviceCountResp.list:type_name -> dm.DeviceCountInfo + 209, // 145: dm.DeviceCountInfo.count:type_name -> dm.DeviceCountInfo.CountEntry + 1, // 146: dm.DeviceInfoCountReq.timeRange:type_name -> dm.TimeRange + 1, // 147: dm.DeviceTypeCountReq.timeRange:type_name -> dm.TimeRange + 211, // 148: dm.Firmware.desc:type_name -> google.protobuf.StringValue + 211, // 149: dm.Firmware.extData:type_name -> google.protobuf.StringValue + 161, // 150: dm.Firmware.files:type_name -> dm.OtaFirmwareFile + 211, // 151: dm.FirmwareInfo.desc:type_name -> google.protobuf.StringValue + 211, // 152: dm.FirmwareInfo.extData:type_name -> google.protobuf.StringValue + 161, // 153: dm.FirmwareInfo.files:type_name -> dm.OtaFirmwareFile + 2, // 154: dm.FirmwareInfoIndexReq.page:type_name -> dm.PageInfo + 160, // 155: dm.FirmwareInfoIndexResp.list:type_name -> dm.FirmwareInfo + 2, // 156: dm.OtaFirmwareFileIndexReq.page:type_name -> dm.PageInfo + 210, // 157: dm.OtaFirmwareFileIndexReq.size:type_name -> google.protobuf.Int64Value + 168, // 158: dm.OtaFirmwareFileIndexResp.list:type_name -> dm.OtaFirmwareFileInfo + 211, // 159: dm.FirmwareInfoReadResp.desc:type_name -> google.protobuf.StringValue + 211, // 160: dm.FirmwareInfoReadResp.extData:type_name -> google.protobuf.StringValue + 169, // 161: dm.FirmwareInfoReadResp.files:type_name -> dm.OtaFirmwareFileResp + 211, // 162: dm.OtaFirmwareInfoCreateReq.extra:type_name -> google.protobuf.StringValue + 211, // 163: dm.OtaFirmwareInfoUpdateReq.extra:type_name -> google.protobuf.StringValue + 2, // 164: dm.OtaFirmwareInfoIndexReq.page:type_name -> dm.PageInfo + 178, // 165: dm.OtaFirmwareInfoIndexResp.list:type_name -> dm.OtaFirmwareInfo + 173, // 166: dm.OtaFirmwareInfo.fileList:type_name -> dm.FirmwareFile + 180, // 167: dm.OtaFirmwareJobInfo.dynamic:type_name -> dm.OtaJobDynamicInfo + 181, // 168: dm.OtaFirmwareJobInfo.static:type_name -> dm.OtaJobStaticInfo + 2, // 169: dm.OtaFirmwareJobIndexReq.page:type_name -> dm.PageInfo + 179, // 170: dm.OtaFirmwareJobIndexResp.list:type_name -> dm.OtaFirmwareJobInfo + 2, // 171: dm.OtaJobByDeviceIndexReq.pageInfo:type_name -> dm.PageInfo + 2, // 172: dm.OtaFirmwareDeviceIndexReq.page:type_name -> dm.PageInfo + 186, // 173: dm.OtaFirmwareDeviceIndexResp.list:type_name -> dm.OtaFirmwareDeviceInfo + 26, // 174: dm.UserDeviceShareInfo.SchemaPermEntry.value:type_name -> dm.SharePerm + 26, // 175: dm.UserDeviceShareInfo.AccessPermEntry.value:type_name -> dm.SharePerm + 26, // 176: dm.UserDeviceShareMultiInfo.SchemaPermEntry.value:type_name -> dm.SharePerm + 26, // 177: dm.UserDeviceShareMultiInfo.AccessPermEntry.value:type_name -> dm.SharePerm + 113, // 178: dm.ProductInfo.CustomUiEntry.value:type_name -> dm.ProductCustomUi + 127, // 179: dm.DeviceManage.rootCheck:input_type -> dm.RootCheckReq + 111, // 180: dm.DeviceManage.deviceInfoCreate:input_type -> dm.DeviceInfo + 111, // 181: dm.DeviceManage.deviceInfoUpdate:input_type -> dm.DeviceInfo + 118, // 182: dm.DeviceManage.deviceOnlineMultiFix:input_type -> dm.deviceOnlineMultiFixReq + 120, // 183: dm.DeviceManage.deviceInfoDelete:input_type -> dm.DeviceInfoDeleteReq + 125, // 184: dm.DeviceManage.deviceInfoIndex:input_type -> dm.DeviceInfoIndexReq + 124, // 185: dm.DeviceManage.DeviceInfoMultiUpdate:input_type -> dm.DeviceInfoMultiUpdateReq + 123, // 186: dm.DeviceManage.deviceInfoRead:input_type -> dm.DeviceInfoReadReq + 148, // 187: dm.DeviceManage.deviceInfoBind:input_type -> dm.DeviceInfoBindReq + 146, // 188: dm.DeviceManage.deviceInfoMultiBind:input_type -> dm.DeviceInfoMultiBindReq + 145, // 189: dm.DeviceManage.deviceInfoCanBind:input_type -> dm.DeviceInfoCanBindReq + 121, // 190: dm.DeviceManage.deviceInfoUnbind:input_type -> dm.DeviceCore + 20, // 191: dm.DeviceManage.deviceTransfer:input_type -> dm.DeviceTransferReq + 19, // 192: dm.DeviceManage.deviceMove:input_type -> dm.DeviceMoveReq + 15, // 193: dm.DeviceManage.deviceModuleVersionRead:input_type -> dm.DeviceModuleVersionReadReq + 17, // 194: dm.DeviceManage.deviceModuleVersionIndex:input_type -> dm.DeviceModuleVersionIndexReq + 95, // 195: dm.DeviceManage.deviceGatewayMultiCreate:input_type -> dm.DeviceGatewayMultiCreateReq + 98, // 196: dm.DeviceManage.deviceGatewayMultiUpdate:input_type -> dm.DeviceGatewayMultiSaveReq + 96, // 197: dm.DeviceManage.deviceGatewayIndex:input_type -> dm.DeviceGatewayIndexReq + 98, // 198: dm.DeviceManage.deviceGatewayMultiDelete:input_type -> dm.DeviceGatewayMultiSaveReq + 154, // 199: dm.DeviceManage.deviceInfoCount:input_type -> dm.DeviceInfoCountReq + 155, // 200: dm.DeviceManage.deviceTypeCount:input_type -> dm.DeviceTypeCountReq + 151, // 201: dm.DeviceManage.deviceCount:input_type -> dm.DeviceCountReq + 144, // 202: dm.DeviceManage.deviceProfileRead:input_type -> dm.DeviceProfileReadReq + 144, // 203: dm.DeviceManage.deviceProfileDelete:input_type -> dm.DeviceProfileReadReq + 143, // 204: dm.DeviceManage.deviceProfileUpdate:input_type -> dm.DeviceProfile + 149, // 205: dm.DeviceManage.deviceProfileIndex:input_type -> dm.DeviceProfileIndexReq + 14, // 206: dm.ProductManage.productInit:input_type -> dm.ProductInitReq + 112, // 207: dm.ProductManage.productInfoCreate:input_type -> dm.ProductInfo + 112, // 208: dm.ProductManage.productInfoUpdate:input_type -> dm.ProductInfo + 114, // 209: dm.ProductManage.productInfoDelete:input_type -> dm.ProductInfoDeleteReq + 116, // 210: dm.ProductManage.productInfoIndex:input_type -> dm.ProductInfoIndexReq + 115, // 211: dm.ProductManage.productInfoRead:input_type -> dm.ProductInfoReadReq + 133, // 212: dm.ProductManage.productSchemaUpdate:input_type -> dm.ProductSchemaUpdateReq + 135, // 213: dm.ProductManage.productSchemaCreate:input_type -> dm.ProductSchemaCreateReq + 134, // 214: dm.ProductManage.productSchemaMultiCreate:input_type -> dm.ProductSchemaMultiCreateReq + 136, // 215: dm.ProductManage.productSchemaDelete:input_type -> dm.ProductSchemaDeleteReq + 137, // 216: dm.ProductManage.productSchemaIndex:input_type -> dm.ProductSchemaIndexReq + 140, // 217: dm.ProductManage.productSchemaTslImport:input_type -> dm.ProductSchemaTslImportReq + 141, // 218: dm.ProductManage.productSchemaTslRead:input_type -> dm.ProductSchemaTslReadReq + 90, // 219: dm.ProductManage.productCustomRead:input_type -> dm.ProductCustomReadReq + 91, // 220: dm.ProductManage.productCustomUpdate:input_type -> dm.ProductCustom + 32, // 221: dm.ProductManage.productCategoryCreate:input_type -> dm.ProductCategory + 32, // 222: dm.ProductManage.productCategoryUpdate:input_type -> dm.ProductCategory + 7, // 223: dm.ProductManage.productCategoryDelete:input_type -> dm.WithID + 36, // 224: dm.ProductManage.productCategoryIndex:input_type -> dm.ProductCategoryIndexReq + 8, // 225: dm.ProductManage.productCategoryRead:input_type -> dm.WithIDChildren + 34, // 226: dm.ProductManage.productCategorySchemaIndex:input_type -> dm.ProductCategorySchemaIndexReq + 35, // 227: dm.ProductManage.productCategorySchemaMultiUpdate:input_type -> dm.ProductCategorySchemaMultiSaveReq + 35, // 228: dm.ProductManage.productCategorySchemaMultiCreate:input_type -> dm.ProductCategorySchemaMultiSaveReq + 35, // 229: dm.ProductManage.productCategorySchemaMultiDelete:input_type -> dm.ProductCategorySchemaMultiSaveReq + 0, // 230: dm.SchemaManage.commonSchemaInit:input_type -> dm.Empty + 128, // 231: dm.SchemaManage.commonSchemaUpdate:input_type -> dm.CommonSchemaUpdateReq + 129, // 232: dm.SchemaManage.commonSchemaCreate:input_type -> dm.CommonSchemaCreateReq + 7, // 233: dm.SchemaManage.commonSchemaDelete:input_type -> dm.WithID + 130, // 234: dm.SchemaManage.commonSchemaIndex:input_type -> dm.CommonSchemaIndexReq + 38, // 235: dm.ProtocolManage.protocolInfoIndex:input_type -> dm.ProtocolInfoIndexReq + 6, // 236: dm.ProtocolManage.protocolInfoRead:input_type -> dm.WithIDCode + 43, // 237: dm.ProtocolManage.protocolInfoCreate:input_type -> dm.ProtocolInfo + 43, // 238: dm.ProtocolManage.protocolInfoUpdate:input_type -> dm.ProtocolInfo + 7, // 239: dm.ProtocolManage.protocolInfoDelete:input_type -> dm.WithID + 42, // 240: dm.ProtocolManage.protocolServiceUpdate:input_type -> dm.ProtocolService + 7, // 241: dm.ProtocolManage.protocolServiceDelete:input_type -> dm.WithID + 40, // 242: dm.ProtocolManage.protocolServiceIndex:input_type -> dm.ProtocolServiceIndexReq + 101, // 243: dm.DeviceGroup.groupInfoCreate:input_type -> dm.GroupInfo + 103, // 244: dm.DeviceGroup.groupInfoIndex:input_type -> dm.GroupInfoIndexReq + 8, // 245: dm.DeviceGroup.groupInfoRead:input_type -> dm.WithIDChildren + 101, // 246: dm.DeviceGroup.groupInfoUpdate:input_type -> dm.GroupInfo + 7, // 247: dm.DeviceGroup.groupInfoDelete:input_type -> dm.WithID + 106, // 248: dm.DeviceGroup.groupDeviceMultiCreate:input_type -> dm.GroupDeviceMultiSaveReq + 106, // 249: dm.DeviceGroup.groupDeviceMultiUpdate:input_type -> dm.GroupDeviceMultiSaveReq + 107, // 250: dm.DeviceGroup.groupDeviceIndex:input_type -> dm.GroupDeviceIndexReq + 109, // 251: dm.DeviceGroup.groupDeviceMultiDelete:input_type -> dm.GroupDeviceMultiDeleteReq + 84, // 252: dm.RemoteConfig.RemoteConfigCreate:input_type -> dm.RemoteConfigCreateReq + 85, // 253: dm.RemoteConfig.RemoteConfigIndex:input_type -> dm.RemoteConfigIndexReq + 87, // 254: dm.RemoteConfig.RemoteConfigPushAll:input_type -> dm.RemoteConfigPushAllReq + 88, // 255: dm.RemoteConfig.RemoteConfigLastRead:input_type -> dm.RemoteConfigLastReadReq + 66, // 256: dm.DeviceMsg.sdkLogIndex:input_type -> dm.SdkLogIndexReq + 57, // 257: dm.DeviceMsg.hubLogIndex:input_type -> dm.HubLogIndexReq + 63, // 258: dm.DeviceMsg.sendLogIndex:input_type -> dm.SendLogIndexReq + 60, // 259: dm.DeviceMsg.statusLogIndex:input_type -> dm.StatusLogIndexReq + 51, // 260: dm.DeviceMsg.propertyLogLatestIndex:input_type -> dm.PropertyLogLatestIndexReq + 50, // 261: dm.DeviceMsg.propertyLogIndex:input_type -> dm.PropertyLogIndexReq + 54, // 262: dm.DeviceMsg.eventLogIndex:input_type -> dm.EventLogIndexReq + 51, // 263: dm.DeviceMsg.shadowIndex:input_type -> dm.PropertyLogLatestIndexReq + 99, // 264: dm.DeviceMsg.gatewayCanBindIndex:input_type -> dm.GatewayCanBindIndexReq + 69, // 265: dm.DeviceInteract.actionSend:input_type -> dm.ActionSendReq + 71, // 266: dm.DeviceInteract.actionRead:input_type -> dm.RespReadReq + 74, // 267: dm.DeviceInteract.actionResp:input_type -> dm.ActionRespReq + 48, // 268: dm.DeviceInteract.propertyGetReportSend:input_type -> dm.PropertyGetReportSendReq + 72, // 269: dm.DeviceInteract.propertyControlSend:input_type -> dm.PropertyControlSendReq + 80, // 270: dm.DeviceInteract.propertyControlMultiSend:input_type -> dm.PropertyControlMultiSendReq + 71, // 271: dm.DeviceInteract.propertyControlRead:input_type -> dm.RespReadReq + 78, // 272: dm.DeviceInteract.sendMsg:input_type -> dm.SendMsgReq + 76, // 273: dm.DeviceInteract.gatewayGetFoundSend:input_type -> dm.GatewayGetFoundReq + 77, // 274: dm.DeviceInteract.gatewayNotifyBindSend:input_type -> dm.GatewayNotifyBindSendReq + 174, // 275: dm.OtaManage.otaFirmwareInfoCreate:input_type -> dm.OtaFirmwareInfoCreateReq + 175, // 276: dm.OtaManage.otaFirmwareInfoUpdate:input_type -> dm.OtaFirmwareInfoUpdateReq + 7, // 277: dm.OtaManage.otaFirmwareInfoDelete:input_type -> dm.WithID + 176, // 278: dm.OtaManage.otaFirmwareInfoIndex:input_type -> dm.OtaFirmwareInfoIndexReq + 7, // 279: dm.OtaManage.otaFirmwareInfoRead:input_type -> dm.WithID + 179, // 280: dm.OtaManage.otaFirmwareJobCreate:input_type -> dm.OtaFirmwareJobInfo + 182, // 281: dm.OtaManage.otaFirmwareJobIndex:input_type -> dm.OtaFirmwareJobIndexReq + 7, // 282: dm.OtaManage.otaFirmwareJobRead:input_type -> dm.WithID + 179, // 283: dm.OtaManage.otaFirmwareJobUpdate:input_type -> dm.OtaFirmwareJobInfo + 185, // 284: dm.OtaManage.otaFirmwareDeviceIndex:input_type -> dm.OtaFirmwareDeviceIndexReq + 188, // 285: dm.OtaManage.otaFirmwareDeviceCancel:input_type -> dm.OtaFirmwareDeviceCancelReq + 189, // 286: dm.OtaManage.otaFirmwareDeviceRetry:input_type -> dm.OtaFirmwareDeviceRetryReq + 190, // 287: dm.OtaManage.otaFirmwareDeviceConfirm:input_type -> dm.OtaFirmwareDeviceConfirmReq + 13, // 288: dm.OtaManage.otaModuleInfoCreate:input_type -> dm.OtaModuleInfo + 13, // 289: dm.OtaManage.otaModuleInfoUpdate:input_type -> dm.OtaModuleInfo + 7, // 290: dm.OtaManage.otaModuleInfoDelete:input_type -> dm.WithID + 11, // 291: dm.OtaManage.otaModuleInfoIndex:input_type -> dm.OtaModuleInfoIndexReq + 6, // 292: dm.OtaManage.otaModuleInfoRead:input_type -> dm.WithIDCode + 31, // 293: dm.userDevice.userDeviceCollectMultiCreate:input_type -> dm.UserDeviceCollectSave + 31, // 294: dm.userDevice.userDeviceCollectMultiDelete:input_type -> dm.UserDeviceCollectSave + 0, // 295: dm.userDevice.userDeviceCollectIndex:input_type -> dm.Empty + 25, // 296: dm.userDevice.userDeviceShareCreate:input_type -> dm.UserDeviceShareInfo + 25, // 297: dm.userDevice.userDeviceShareUpdate:input_type -> dm.UserDeviceShareInfo + 21, // 298: dm.userDevice.userDeviceShareDelete:input_type -> dm.UserDeviceShareReadReq + 24, // 299: dm.userDevice.userDeviceShareMultiDelete:input_type -> dm.UserDeviceShareMultiDeleteReq + 22, // 300: dm.userDevice.userDeviceShareIndex:input_type -> dm.UserDeviceShareIndexReq + 21, // 301: dm.userDevice.userDeviceShareRead:input_type -> dm.UserDeviceShareReadReq + 20, // 302: dm.userDevice.userDeviceTransfer:input_type -> dm.DeviceTransferReq + 28, // 303: dm.userDevice.userDeviceShareMultiCreate:input_type -> dm.UserDeviceShareMultiInfo + 29, // 304: dm.userDevice.userDeivceShareMultiIndex:input_type -> dm.UserDeviceShareMultiToken + 30, // 305: dm.userDevice.userDeivceShareMultiAccept:input_type -> dm.UserDeviceShareMultiAcceptReq + 0, // 306: dm.DeviceManage.rootCheck:output_type -> dm.Empty + 0, // 307: dm.DeviceManage.deviceInfoCreate:output_type -> dm.Empty + 0, // 308: dm.DeviceManage.deviceInfoUpdate:output_type -> dm.Empty + 0, // 309: dm.DeviceManage.deviceOnlineMultiFix:output_type -> dm.Empty + 0, // 310: dm.DeviceManage.deviceInfoDelete:output_type -> dm.Empty + 126, // 311: dm.DeviceManage.deviceInfoIndex:output_type -> dm.DeviceInfoIndexResp + 0, // 312: dm.DeviceManage.DeviceInfoMultiUpdate:output_type -> dm.Empty + 111, // 313: dm.DeviceManage.deviceInfoRead:output_type -> dm.DeviceInfo + 0, // 314: dm.DeviceManage.deviceInfoBind:output_type -> dm.Empty + 147, // 315: dm.DeviceManage.deviceInfoMultiBind:output_type -> dm.DeviceInfoMultiBindResp + 0, // 316: dm.DeviceManage.deviceInfoCanBind:output_type -> dm.Empty + 0, // 317: dm.DeviceManage.deviceInfoUnbind:output_type -> dm.Empty + 0, // 318: dm.DeviceManage.deviceTransfer:output_type -> dm.Empty + 0, // 319: dm.DeviceManage.deviceMove:output_type -> dm.Empty + 16, // 320: dm.DeviceManage.deviceModuleVersionRead:output_type -> dm.DeviceModuleVersion + 18, // 321: dm.DeviceManage.deviceModuleVersionIndex:output_type -> dm.DeviceModuleVersionIndexResp + 0, // 322: dm.DeviceManage.deviceGatewayMultiCreate:output_type -> dm.Empty + 0, // 323: dm.DeviceManage.deviceGatewayMultiUpdate:output_type -> dm.Empty + 97, // 324: dm.DeviceManage.deviceGatewayIndex:output_type -> dm.DeviceGatewayIndexResp + 0, // 325: dm.DeviceManage.deviceGatewayMultiDelete:output_type -> dm.Empty + 156, // 326: dm.DeviceManage.deviceInfoCount:output_type -> dm.DeviceInfoCount + 157, // 327: dm.DeviceManage.deviceTypeCount:output_type -> dm.DeviceTypeCountResp + 152, // 328: dm.DeviceManage.deviceCount:output_type -> dm.DeviceCountResp + 143, // 329: dm.DeviceManage.deviceProfileRead:output_type -> dm.DeviceProfile + 0, // 330: dm.DeviceManage.deviceProfileDelete:output_type -> dm.Empty + 0, // 331: dm.DeviceManage.deviceProfileUpdate:output_type -> dm.Empty + 150, // 332: dm.DeviceManage.deviceProfileIndex:output_type -> dm.DeviceProfileIndexResp + 0, // 333: dm.ProductManage.productInit:output_type -> dm.Empty + 0, // 334: dm.ProductManage.productInfoCreate:output_type -> dm.Empty + 0, // 335: dm.ProductManage.productInfoUpdate:output_type -> dm.Empty + 0, // 336: dm.ProductManage.productInfoDelete:output_type -> dm.Empty + 117, // 337: dm.ProductManage.productInfoIndex:output_type -> dm.ProductInfoIndexResp + 112, // 338: dm.ProductManage.productInfoRead:output_type -> dm.ProductInfo + 0, // 339: dm.ProductManage.productSchemaUpdate:output_type -> dm.Empty + 0, // 340: dm.ProductManage.productSchemaCreate:output_type -> dm.Empty + 0, // 341: dm.ProductManage.productSchemaMultiCreate:output_type -> dm.Empty + 0, // 342: dm.ProductManage.productSchemaDelete:output_type -> dm.Empty + 138, // 343: dm.ProductManage.productSchemaIndex:output_type -> dm.ProductSchemaIndexResp + 0, // 344: dm.ProductManage.productSchemaTslImport:output_type -> dm.Empty + 142, // 345: dm.ProductManage.productSchemaTslRead:output_type -> dm.ProductSchemaTslReadResp + 91, // 346: dm.ProductManage.productCustomRead:output_type -> dm.ProductCustom + 0, // 347: dm.ProductManage.productCustomUpdate:output_type -> dm.Empty + 7, // 348: dm.ProductManage.productCategoryCreate:output_type -> dm.WithID + 0, // 349: dm.ProductManage.productCategoryUpdate:output_type -> dm.Empty + 0, // 350: dm.ProductManage.productCategoryDelete:output_type -> dm.Empty + 37, // 351: dm.ProductManage.productCategoryIndex:output_type -> dm.ProductCategoryIndexResp + 32, // 352: dm.ProductManage.productCategoryRead:output_type -> dm.ProductCategory + 33, // 353: dm.ProductManage.productCategorySchemaIndex:output_type -> dm.ProductCategorySchemaIndexResp + 0, // 354: dm.ProductManage.productCategorySchemaMultiUpdate:output_type -> dm.Empty + 0, // 355: dm.ProductManage.productCategorySchemaMultiCreate:output_type -> dm.Empty + 0, // 356: dm.ProductManage.productCategorySchemaMultiDelete:output_type -> dm.Empty + 0, // 357: dm.SchemaManage.commonSchemaInit:output_type -> dm.Empty + 0, // 358: dm.SchemaManage.commonSchemaUpdate:output_type -> dm.Empty + 0, // 359: dm.SchemaManage.commonSchemaCreate:output_type -> dm.Empty + 0, // 360: dm.SchemaManage.commonSchemaDelete:output_type -> dm.Empty + 131, // 361: dm.SchemaManage.commonSchemaIndex:output_type -> dm.CommonSchemaIndexResp + 39, // 362: dm.ProtocolManage.protocolInfoIndex:output_type -> dm.ProtocolInfoIndexResp + 43, // 363: dm.ProtocolManage.protocolInfoRead:output_type -> dm.ProtocolInfo + 7, // 364: dm.ProtocolManage.protocolInfoCreate:output_type -> dm.WithID + 0, // 365: dm.ProtocolManage.protocolInfoUpdate:output_type -> dm.Empty + 0, // 366: dm.ProtocolManage.protocolInfoDelete:output_type -> dm.Empty + 0, // 367: dm.ProtocolManage.protocolServiceUpdate:output_type -> dm.Empty + 0, // 368: dm.ProtocolManage.protocolServiceDelete:output_type -> dm.Empty + 41, // 369: dm.ProtocolManage.protocolServiceIndex:output_type -> dm.ProtocolServiceIndexResp + 7, // 370: dm.DeviceGroup.groupInfoCreate:output_type -> dm.WithID + 104, // 371: dm.DeviceGroup.groupInfoIndex:output_type -> dm.GroupInfoIndexResp + 101, // 372: dm.DeviceGroup.groupInfoRead:output_type -> dm.GroupInfo + 0, // 373: dm.DeviceGroup.groupInfoUpdate:output_type -> dm.Empty + 0, // 374: dm.DeviceGroup.groupInfoDelete:output_type -> dm.Empty + 0, // 375: dm.DeviceGroup.groupDeviceMultiCreate:output_type -> dm.Empty + 0, // 376: dm.DeviceGroup.groupDeviceMultiUpdate:output_type -> dm.Empty + 108, // 377: dm.DeviceGroup.groupDeviceIndex:output_type -> dm.GroupDeviceIndexResp + 0, // 378: dm.DeviceGroup.groupDeviceMultiDelete:output_type -> dm.Empty + 0, // 379: dm.RemoteConfig.RemoteConfigCreate:output_type -> dm.Empty + 86, // 380: dm.RemoteConfig.RemoteConfigIndex:output_type -> dm.RemoteConfigIndexResp + 0, // 381: dm.RemoteConfig.RemoteConfigPushAll:output_type -> dm.Empty + 89, // 382: dm.RemoteConfig.RemoteConfigLastRead:output_type -> dm.RemoteConfigLastReadResp + 67, // 383: dm.DeviceMsg.sdkLogIndex:output_type -> dm.SdkLogIndexResp + 58, // 384: dm.DeviceMsg.hubLogIndex:output_type -> dm.HubLogIndexResp + 64, // 385: dm.DeviceMsg.sendLogIndex:output_type -> dm.SendLogIndexResp + 61, // 386: dm.DeviceMsg.statusLogIndex:output_type -> dm.StatusLogIndexResp + 53, // 387: dm.DeviceMsg.propertyLogLatestIndex:output_type -> dm.PropertyLogIndexResp + 53, // 388: dm.DeviceMsg.propertyLogIndex:output_type -> dm.PropertyLogIndexResp + 56, // 389: dm.DeviceMsg.eventLogIndex:output_type -> dm.EventLogIndexResp + 46, // 390: dm.DeviceMsg.shadowIndex:output_type -> dm.ShadowIndexResp + 100, // 391: dm.DeviceMsg.gatewayCanBindIndex:output_type -> dm.GatewayCanBindIndexResp + 70, // 392: dm.DeviceInteract.actionSend:output_type -> dm.ActionSendResp + 70, // 393: dm.DeviceInteract.actionRead:output_type -> dm.ActionSendResp + 0, // 394: dm.DeviceInteract.actionResp:output_type -> dm.Empty + 49, // 395: dm.DeviceInteract.propertyGetReportSend:output_type -> dm.PropertyGetReportSendResp + 75, // 396: dm.DeviceInteract.propertyControlSend:output_type -> dm.PropertyControlSendResp + 82, // 397: dm.DeviceInteract.propertyControlMultiSend:output_type -> dm.PropertyControlMultiSendResp + 75, // 398: dm.DeviceInteract.propertyControlRead:output_type -> dm.PropertyControlSendResp + 79, // 399: dm.DeviceInteract.sendMsg:output_type -> dm.SendMsgResp + 0, // 400: dm.DeviceInteract.gatewayGetFoundSend:output_type -> dm.Empty + 0, // 401: dm.DeviceInteract.gatewayNotifyBindSend:output_type -> dm.Empty + 7, // 402: dm.OtaManage.otaFirmwareInfoCreate:output_type -> dm.WithID + 7, // 403: dm.OtaManage.otaFirmwareInfoUpdate:output_type -> dm.WithID + 0, // 404: dm.OtaManage.otaFirmwareInfoDelete:output_type -> dm.Empty + 177, // 405: dm.OtaManage.otaFirmwareInfoIndex:output_type -> dm.OtaFirmwareInfoIndexResp + 178, // 406: dm.OtaManage.otaFirmwareInfoRead:output_type -> dm.OtaFirmwareInfo + 7, // 407: dm.OtaManage.otaFirmwareJobCreate:output_type -> dm.WithID + 183, // 408: dm.OtaManage.otaFirmwareJobIndex:output_type -> dm.OtaFirmwareJobIndexResp + 179, // 409: dm.OtaManage.otaFirmwareJobRead:output_type -> dm.OtaFirmwareJobInfo + 0, // 410: dm.OtaManage.otaFirmwareJobUpdate:output_type -> dm.Empty + 187, // 411: dm.OtaManage.otaFirmwareDeviceIndex:output_type -> dm.OtaFirmwareDeviceIndexResp + 0, // 412: dm.OtaManage.otaFirmwareDeviceCancel:output_type -> dm.Empty + 0, // 413: dm.OtaManage.otaFirmwareDeviceRetry:output_type -> dm.Empty + 0, // 414: dm.OtaManage.otaFirmwareDeviceConfirm:output_type -> dm.Empty + 7, // 415: dm.OtaManage.otaModuleInfoCreate:output_type -> dm.WithID + 0, // 416: dm.OtaManage.otaModuleInfoUpdate:output_type -> dm.Empty + 0, // 417: dm.OtaManage.otaModuleInfoDelete:output_type -> dm.Empty + 12, // 418: dm.OtaManage.otaModuleInfoIndex:output_type -> dm.OtaModuleInfoIndexResp + 13, // 419: dm.OtaManage.otaModuleInfoRead:output_type -> dm.OtaModuleInfo + 0, // 420: dm.userDevice.userDeviceCollectMultiCreate:output_type -> dm.Empty + 0, // 421: dm.userDevice.userDeviceCollectMultiDelete:output_type -> dm.Empty + 31, // 422: dm.userDevice.userDeviceCollectIndex:output_type -> dm.UserDeviceCollectSave + 7, // 423: dm.userDevice.userDeviceShareCreate:output_type -> dm.WithID + 0, // 424: dm.userDevice.userDeviceShareUpdate:output_type -> dm.Empty + 0, // 425: dm.userDevice.userDeviceShareDelete:output_type -> dm.Empty + 0, // 426: dm.userDevice.userDeviceShareMultiDelete:output_type -> dm.Empty + 23, // 427: dm.userDevice.userDeviceShareIndex:output_type -> dm.UserDeviceShareIndexResp + 25, // 428: dm.userDevice.userDeviceShareRead:output_type -> dm.UserDeviceShareInfo + 0, // 429: dm.userDevice.userDeviceTransfer:output_type -> dm.Empty + 29, // 430: dm.userDevice.userDeviceShareMultiCreate:output_type -> dm.UserDeviceShareMultiToken + 28, // 431: dm.userDevice.userDeivceShareMultiIndex:output_type -> dm.UserDeviceShareMultiInfo + 0, // 432: dm.userDevice.userDeivceShareMultiAccept:output_type -> dm.Empty + 306, // [306:433] is the sub-list for method output_type + 179, // [179:306] is the sub-list for method input_type + 179, // [179:179] is the sub-list for extension type_name + 179, // [179:179] is the sub-list for extension extendee + 0, // [0:179] is the sub-list for field type_name } func init() { file_proto_dm_proto_init() } @@ -17770,7 +17873,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserDeviceShareMultiInfo); i { + switch v := v.(*DeviceShareInfo); i { case 0: return &v.state case 1: @@ -17782,7 +17885,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserDeviceShareMultiToken); i { + switch v := v.(*UserDeviceShareMultiInfo); i { case 0: return &v.state case 1: @@ -17794,7 +17897,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserDeviceShareMultiAcceptReq); i { + switch v := v.(*UserDeviceShareMultiToken); i { case 0: return &v.state case 1: @@ -17806,7 +17909,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserDeviceCollectSave); i { + switch v := v.(*UserDeviceShareMultiAcceptReq); i { case 0: return &v.state case 1: @@ -17818,7 +17921,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductCategory); i { + switch v := v.(*UserDeviceCollectSave); i { case 0: return &v.state case 1: @@ -17830,7 +17933,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductCategorySchemaIndexResp); i { + switch v := v.(*ProductCategory); i { case 0: return &v.state case 1: @@ -17842,7 +17945,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductCategorySchemaIndexReq); i { + switch v := v.(*ProductCategorySchemaIndexResp); i { case 0: return &v.state case 1: @@ -17854,7 +17957,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductCategorySchemaMultiSaveReq); i { + switch v := v.(*ProductCategorySchemaIndexReq); i { case 0: return &v.state case 1: @@ -17866,7 +17969,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductCategoryIndexReq); i { + switch v := v.(*ProductCategorySchemaMultiSaveReq); i { case 0: return &v.state case 1: @@ -17878,7 +17981,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductCategoryIndexResp); i { + switch v := v.(*ProductCategoryIndexReq); i { case 0: return &v.state case 1: @@ -17890,7 +17993,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolInfoIndexReq); i { + switch v := v.(*ProductCategoryIndexResp); i { case 0: return &v.state case 1: @@ -17902,7 +18005,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolInfoIndexResp); i { + switch v := v.(*ProtocolInfoIndexReq); i { case 0: return &v.state case 1: @@ -17914,7 +18017,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolServiceIndexReq); i { + switch v := v.(*ProtocolInfoIndexResp); i { case 0: return &v.state case 1: @@ -17926,7 +18029,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolServiceIndexResp); i { + switch v := v.(*ProtocolServiceIndexReq); i { case 0: return &v.state case 1: @@ -17938,7 +18041,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolService); i { + switch v := v.(*ProtocolServiceIndexResp); i { case 0: return &v.state case 1: @@ -17950,7 +18053,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolInfo); i { + switch v := v.(*ProtocolService); i { case 0: return &v.state case 1: @@ -17962,7 +18065,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolConfigField); i { + switch v := v.(*ProtocolInfo); i { case 0: return &v.state case 1: @@ -17974,7 +18077,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolConfigInfo); i { + switch v := v.(*ProtocolConfigField); i { case 0: return &v.state case 1: @@ -17986,7 +18089,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShadowIndexResp); i { + switch v := v.(*ProtocolConfigInfo); i { case 0: return &v.state case 1: @@ -17998,7 +18101,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShadowIndex); i { + switch v := v.(*ShadowIndexResp); i { case 0: return &v.state case 1: @@ -18010,7 +18113,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropertyGetReportSendReq); i { + switch v := v.(*ShadowIndex); i { case 0: return &v.state case 1: @@ -18022,7 +18125,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropertyGetReportSendResp); i { + switch v := v.(*PropertyGetReportSendReq); i { case 0: return &v.state case 1: @@ -18034,7 +18137,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropertyLogIndexReq); i { + switch v := v.(*PropertyGetReportSendResp); i { case 0: return &v.state case 1: @@ -18046,7 +18149,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropertyLogLatestIndexReq); i { + switch v := v.(*PropertyLogIndexReq); i { case 0: return &v.state case 1: @@ -18058,7 +18161,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropertyLogInfo); i { + switch v := v.(*PropertyLogLatestIndexReq); i { case 0: return &v.state case 1: @@ -18070,7 +18173,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropertyLogIndexResp); i { + switch v := v.(*PropertyLogInfo); i { case 0: return &v.state case 1: @@ -18082,7 +18185,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventLogIndexReq); i { + switch v := v.(*PropertyLogIndexResp); i { case 0: return &v.state case 1: @@ -18094,7 +18197,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventLogInfo); i { + switch v := v.(*EventLogIndexReq); i { case 0: return &v.state case 1: @@ -18106,7 +18209,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventLogIndexResp); i { + switch v := v.(*EventLogInfo); i { case 0: return &v.state case 1: @@ -18118,7 +18221,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HubLogIndexReq); i { + switch v := v.(*EventLogIndexResp); i { case 0: return &v.state case 1: @@ -18130,7 +18233,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HubLogIndexResp); i { + switch v := v.(*HubLogIndexReq); i { case 0: return &v.state case 1: @@ -18142,7 +18245,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HubLogInfo); i { + switch v := v.(*HubLogIndexResp); i { case 0: return &v.state case 1: @@ -18154,7 +18257,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusLogIndexReq); i { + switch v := v.(*HubLogInfo); i { case 0: return &v.state case 1: @@ -18166,7 +18269,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusLogIndexResp); i { + switch v := v.(*StatusLogIndexReq); i { case 0: return &v.state case 1: @@ -18178,7 +18281,7 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusLogInfo); i { + switch v := v.(*StatusLogIndexResp); i { case 0: return &v.state case 1: @@ -18190,6 +18293,18 @@ func file_proto_dm_proto_init() { } } file_proto_dm_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatusLogInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_dm_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendLogIndexReq); i { case 0: return &v.state @@ -18201,7 +18316,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendLogIndexResp); i { case 0: return &v.state @@ -18213,7 +18328,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendLogInfo); i { case 0: return &v.state @@ -18225,7 +18340,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SdkLogIndexReq); i { case 0: return &v.state @@ -18237,7 +18352,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SdkLogIndexResp); i { case 0: return &v.state @@ -18249,7 +18364,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SdkLogInfo); i { case 0: return &v.state @@ -18261,7 +18376,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionSendReq); i { case 0: return &v.state @@ -18273,7 +18388,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionSendResp); i { case 0: return &v.state @@ -18285,7 +18400,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RespReadReq); i { case 0: return &v.state @@ -18297,7 +18412,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PropertyControlSendReq); i { case 0: return &v.state @@ -18309,7 +18424,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WithProfile); i { case 0: return &v.state @@ -18321,7 +18436,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionRespReq); i { case 0: return &v.state @@ -18333,7 +18448,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PropertyControlSendResp); i { case 0: return &v.state @@ -18345,7 +18460,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewayGetFoundReq); i { case 0: return &v.state @@ -18357,7 +18472,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewayNotifyBindSendReq); i { case 0: return &v.state @@ -18369,7 +18484,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMsgReq); i { case 0: return &v.state @@ -18381,7 +18496,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMsgResp); i { case 0: return &v.state @@ -18393,7 +18508,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PropertyControlMultiSendReq); i { case 0: return &v.state @@ -18405,7 +18520,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PropertyControlSendMsg); i { case 0: return &v.state @@ -18417,7 +18532,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PropertyControlMultiSendResp); i { case 0: return &v.state @@ -18429,7 +18544,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductRemoteConfig); i { case 0: return &v.state @@ -18441,7 +18556,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoteConfigCreateReq); i { case 0: return &v.state @@ -18453,7 +18568,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoteConfigIndexReq); i { case 0: return &v.state @@ -18465,7 +18580,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoteConfigIndexResp); i { case 0: return &v.state @@ -18477,7 +18592,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoteConfigPushAllReq); i { case 0: return &v.state @@ -18489,7 +18604,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoteConfigLastReadReq); i { case 0: return &v.state @@ -18501,7 +18616,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoteConfigLastReadResp); i { case 0: return &v.state @@ -18513,7 +18628,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductCustomReadReq); i { case 0: return &v.state @@ -18525,7 +18640,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductCustom); i { case 0: return &v.state @@ -18537,7 +18652,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CustomTopic); i { case 0: return &v.state @@ -18549,7 +18664,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceGatewayBindDevice); i { case 0: return &v.state @@ -18561,7 +18676,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceGatewaySign); i { case 0: return &v.state @@ -18573,7 +18688,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceGatewayMultiCreateReq); i { case 0: return &v.state @@ -18585,7 +18700,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceGatewayIndexReq); i { case 0: return &v.state @@ -18597,7 +18712,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceGatewayIndexResp); i { case 0: return &v.state @@ -18609,7 +18724,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceGatewayMultiSaveReq); i { case 0: return &v.state @@ -18621,7 +18736,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewayCanBindIndexReq); i { case 0: return &v.state @@ -18633,7 +18748,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewayCanBindIndexResp); i { case 0: return &v.state @@ -18645,7 +18760,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfo); i { case 0: return &v.state @@ -18657,7 +18772,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfoCreateReq); i { case 0: return &v.state @@ -18669,7 +18784,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfoIndexReq); i { case 0: return &v.state @@ -18681,7 +18796,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfoIndexResp); i { case 0: return &v.state @@ -18693,7 +18808,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfoUpdateReq); i { case 0: return &v.state @@ -18705,7 +18820,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupDeviceMultiSaveReq); i { case 0: return &v.state @@ -18717,7 +18832,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupDeviceIndexReq); i { case 0: return &v.state @@ -18729,7 +18844,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupDeviceIndexResp); i { case 0: return &v.state @@ -18741,7 +18856,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupDeviceMultiDeleteReq); i { case 0: return &v.state @@ -18753,7 +18868,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Point); i { case 0: return &v.state @@ -18765,7 +18880,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfo); i { case 0: return &v.state @@ -18777,7 +18892,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductInfo); i { case 0: return &v.state @@ -18789,7 +18904,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductCustomUi); i { case 0: return &v.state @@ -18801,7 +18916,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductInfoDeleteReq); i { case 0: return &v.state @@ -18813,7 +18928,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductInfoReadReq); i { case 0: return &v.state @@ -18825,7 +18940,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductInfoIndexReq); i { case 0: return &v.state @@ -18837,7 +18952,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductInfoIndexResp); i { case 0: return &v.state @@ -18849,7 +18964,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceOnlineMultiFixReq); i { case 0: return &v.state @@ -18861,7 +18976,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceOnlineMultiFix); i { case 0: return &v.state @@ -18873,7 +18988,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoDeleteReq); i { case 0: return &v.state @@ -18885,7 +19000,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceCore); i { case 0: return &v.state @@ -18897,7 +19012,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceError); i { case 0: return &v.state @@ -18909,7 +19024,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoReadReq); i { case 0: return &v.state @@ -18921,7 +19036,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoMultiUpdateReq); i { case 0: return &v.state @@ -18933,7 +19048,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoIndexReq); i { case 0: return &v.state @@ -18945,7 +19060,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoIndexResp); i { case 0: return &v.state @@ -18957,7 +19072,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RootCheckReq); i { case 0: return &v.state @@ -18969,7 +19084,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonSchemaUpdateReq); i { case 0: return &v.state @@ -18981,7 +19096,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonSchemaCreateReq); i { case 0: return &v.state @@ -18993,7 +19108,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonSchemaIndexReq); i { case 0: return &v.state @@ -19005,7 +19120,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonSchemaIndexResp); i { case 0: return &v.state @@ -19017,7 +19132,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonSchemaInfo); i { case 0: return &v.state @@ -19029,7 +19144,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaUpdateReq); i { case 0: return &v.state @@ -19041,7 +19156,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaMultiCreateReq); i { case 0: return &v.state @@ -19053,7 +19168,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaCreateReq); i { case 0: return &v.state @@ -19065,7 +19180,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaDeleteReq); i { case 0: return &v.state @@ -19077,7 +19192,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaIndexReq); i { case 0: return &v.state @@ -19089,7 +19204,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaIndexResp); i { case 0: return &v.state @@ -19101,7 +19216,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaInfo); i { case 0: return &v.state @@ -19113,7 +19228,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaTslImportReq); i { case 0: return &v.state @@ -19125,7 +19240,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaTslReadReq); i { case 0: return &v.state @@ -19137,7 +19252,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProductSchemaTslReadResp); i { case 0: return &v.state @@ -19149,7 +19264,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceProfile); i { case 0: return &v.state @@ -19161,7 +19276,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceProfileReadReq); i { case 0: return &v.state @@ -19173,7 +19288,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoCanBindReq); i { case 0: return &v.state @@ -19185,7 +19300,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoMultiBindReq); i { case 0: return &v.state @@ -19197,7 +19312,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoMultiBindResp); i { case 0: return &v.state @@ -19209,7 +19324,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoBindReq); i { case 0: return &v.state @@ -19221,7 +19336,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceProfileIndexReq); i { case 0: return &v.state @@ -19233,7 +19348,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceProfileIndexResp); i { case 0: return &v.state @@ -19245,7 +19360,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceCountReq); i { case 0: return &v.state @@ -19257,7 +19372,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceCountResp); i { case 0: return &v.state @@ -19269,7 +19384,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceCountInfo); i { case 0: return &v.state @@ -19281,7 +19396,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoCountReq); i { case 0: return &v.state @@ -19293,7 +19408,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceTypeCountReq); i { case 0: return &v.state @@ -19305,7 +19420,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceInfoCount); i { case 0: return &v.state @@ -19317,7 +19432,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceTypeCountResp); i { case 0: return &v.state @@ -19329,7 +19444,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Firmware); i { case 0: return &v.state @@ -19341,7 +19456,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareResp); i { case 0: return &v.state @@ -19353,7 +19468,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareInfo); i { case 0: return &v.state @@ -19365,7 +19480,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareFile); i { case 0: return &v.state @@ -19377,7 +19492,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareInfoDeleteReq); i { case 0: return &v.state @@ -19389,7 +19504,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareInfoDeleteResp); i { case 0: return &v.state @@ -19401,7 +19516,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareInfoIndexReq); i { case 0: return &v.state @@ -19413,7 +19528,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareInfoIndexResp); i { case 0: return &v.state @@ -19425,7 +19540,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareInfoReadReq); i { case 0: return &v.state @@ -19437,7 +19552,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareFileReq); i { case 0: return &v.state @@ -19449,7 +19564,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareFileInfo); i { case 0: return &v.state @@ -19461,7 +19576,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareFileResp); i { case 0: return &v.state @@ -19473,7 +19588,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareFileIndexReq); i { case 0: return &v.state @@ -19485,7 +19600,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareFileIndexResp); i { case 0: return &v.state @@ -19497,7 +19612,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareInfoReadResp); i { case 0: return &v.state @@ -19509,7 +19624,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FirmwareFile); i { case 0: return &v.state @@ -19521,7 +19636,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareInfoCreateReq); i { case 0: return &v.state @@ -19533,7 +19648,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareInfoUpdateReq); i { case 0: return &v.state @@ -19545,7 +19660,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareInfoIndexReq); i { case 0: return &v.state @@ -19557,7 +19672,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareInfoIndexResp); i { case 0: return &v.state @@ -19569,7 +19684,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareInfo); i { case 0: return &v.state @@ -19581,7 +19696,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareJobInfo); i { case 0: return &v.state @@ -19593,7 +19708,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaJobDynamicInfo); i { case 0: return &v.state @@ -19605,7 +19720,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaJobStaticInfo); i { case 0: return &v.state @@ -19617,7 +19732,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareJobIndexReq); i { case 0: return &v.state @@ -19629,7 +19744,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareJobIndexResp); i { case 0: return &v.state @@ -19641,7 +19756,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaJobByDeviceIndexReq); i { case 0: return &v.state @@ -19653,7 +19768,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareDeviceIndexReq); i { case 0: return &v.state @@ -19665,7 +19780,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareDeviceInfo); i { case 0: return &v.state @@ -19677,7 +19792,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareDeviceIndexResp); i { case 0: return &v.state @@ -19689,7 +19804,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareDeviceCancelReq); i { case 0: return &v.state @@ -19701,7 +19816,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareDeviceRetryReq); i { case 0: return &v.state @@ -19713,7 +19828,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OtaFirmwareDeviceConfirmReq); i { case 0: return &v.state @@ -19725,7 +19840,7 @@ func file_proto_dm_proto_init() { return nil } } - file_proto_dm_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { + file_proto_dm_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PageInfo_OrderBy); i { case 0: return &v.state @@ -19744,7 +19859,7 @@ func file_proto_dm_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_proto_dm_proto_rawDesc, NumEnums: 0, - NumMessages: 209, + NumMessages: 210, NumExtensions: 0, NumServices: 10, }, diff --git a/service/dmsvr/pb/dm/dm_grpc.pb.go b/service/dmsvr/pb/dm/dm_grpc.pb.go index 31207d499..028dcfbce 100644 --- a/service/dmsvr/pb/dm/dm_grpc.pb.go +++ b/service/dmsvr/pb/dm/dm_grpc.pb.go @@ -1,10 +1,4 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.19.4 -// source: proto/dm.proto - -//import "proto/schemaInfo.proto"; package dm @@ -20,54 +14,24 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - DeviceManage_RootCheck_FullMethodName = "/dm.DeviceManage/rootCheck" - DeviceManage_DeviceInfoCreate_FullMethodName = "/dm.DeviceManage/deviceInfoCreate" - DeviceManage_DeviceInfoUpdate_FullMethodName = "/dm.DeviceManage/deviceInfoUpdate" - DeviceManage_DeviceOnlineMultiFix_FullMethodName = "/dm.DeviceManage/deviceOnlineMultiFix" - DeviceManage_DeviceInfoDelete_FullMethodName = "/dm.DeviceManage/deviceInfoDelete" - DeviceManage_DeviceInfoIndex_FullMethodName = "/dm.DeviceManage/deviceInfoIndex" - DeviceManage_DeviceInfoMultiUpdate_FullMethodName = "/dm.DeviceManage/DeviceInfoMultiUpdate" - DeviceManage_DeviceInfoRead_FullMethodName = "/dm.DeviceManage/deviceInfoRead" - DeviceManage_DeviceInfoBind_FullMethodName = "/dm.DeviceManage/deviceInfoBind" - DeviceManage_DeviceInfoMultiBind_FullMethodName = "/dm.DeviceManage/deviceInfoMultiBind" - DeviceManage_DeviceInfoCanBind_FullMethodName = "/dm.DeviceManage/deviceInfoCanBind" - DeviceManage_DeviceInfoUnbind_FullMethodName = "/dm.DeviceManage/deviceInfoUnbind" - DeviceManage_DeviceTransfer_FullMethodName = "/dm.DeviceManage/deviceTransfer" - DeviceManage_DeviceMove_FullMethodName = "/dm.DeviceManage/deviceMove" - DeviceManage_DeviceModuleVersionRead_FullMethodName = "/dm.DeviceManage/deviceModuleVersionRead" - DeviceManage_DeviceModuleVersionIndex_FullMethodName = "/dm.DeviceManage/deviceModuleVersionIndex" - DeviceManage_DeviceGatewayMultiCreate_FullMethodName = "/dm.DeviceManage/deviceGatewayMultiCreate" - DeviceManage_DeviceGatewayMultiUpdate_FullMethodName = "/dm.DeviceManage/deviceGatewayMultiUpdate" - DeviceManage_DeviceGatewayIndex_FullMethodName = "/dm.DeviceManage/deviceGatewayIndex" - DeviceManage_DeviceGatewayMultiDelete_FullMethodName = "/dm.DeviceManage/deviceGatewayMultiDelete" - DeviceManage_DeviceInfoCount_FullMethodName = "/dm.DeviceManage/deviceInfoCount" - DeviceManage_DeviceTypeCount_FullMethodName = "/dm.DeviceManage/deviceTypeCount" - DeviceManage_DeviceCount_FullMethodName = "/dm.DeviceManage/deviceCount" - DeviceManage_DeviceProfileRead_FullMethodName = "/dm.DeviceManage/deviceProfileRead" - DeviceManage_DeviceProfileDelete_FullMethodName = "/dm.DeviceManage/deviceProfileDelete" - DeviceManage_DeviceProfileUpdate_FullMethodName = "/dm.DeviceManage/deviceProfileUpdate" - DeviceManage_DeviceProfileIndex_FullMethodName = "/dm.DeviceManage/deviceProfileIndex" -) - // DeviceManageClient is the client API for DeviceManage service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type DeviceManageClient interface { - // 鉴定是否是root账号(提供给mqtt broker) + //鉴定是否是root账号(提供给mqtt broker) RootCheck(ctx context.Context, in *RootCheckReq, opts ...grpc.CallOption) (*Empty, error) - // 新增设备 + //新增设备 DeviceInfoCreate(ctx context.Context, in *DeviceInfo, opts ...grpc.CallOption) (*Empty, error) - // 更新设备 + //更新设备 DeviceInfoUpdate(ctx context.Context, in *DeviceInfo, opts ...grpc.CallOption) (*Empty, error) DeviceOnlineMultiFix(ctx context.Context, in *DeviceOnlineMultiFixReq, opts ...grpc.CallOption) (*Empty, error) - // 删除设备 + //删除设备 DeviceInfoDelete(ctx context.Context, in *DeviceInfoDeleteReq, opts ...grpc.CallOption) (*Empty, error) - // 获取设备信息列表 + //获取设备信息列表 DeviceInfoIndex(ctx context.Context, in *DeviceInfoIndexReq, opts ...grpc.CallOption) (*DeviceInfoIndexResp, error) - // 批量更新设备状态 + //批量更新设备状态 DeviceInfoMultiUpdate(ctx context.Context, in *DeviceInfoMultiUpdateReq, opts ...grpc.CallOption) (*Empty, error) - // 获取设备信息详情 + //获取设备信息详情 DeviceInfoRead(ctx context.Context, in *DeviceInfoReadReq, opts ...grpc.CallOption) (*DeviceInfo, error) DeviceInfoBind(ctx context.Context, in *DeviceInfoBindReq, opts ...grpc.CallOption) (*Empty, error) DeviceInfoMultiBind(ctx context.Context, in *DeviceInfoMultiBindReq, opts ...grpc.CallOption) (*DeviceInfoMultiBindResp, error) @@ -77,17 +41,17 @@ type DeviceManageClient interface { DeviceMove(ctx context.Context, in *DeviceMoveReq, opts ...grpc.CallOption) (*Empty, error) DeviceModuleVersionRead(ctx context.Context, in *DeviceModuleVersionReadReq, opts ...grpc.CallOption) (*DeviceModuleVersion, error) DeviceModuleVersionIndex(ctx context.Context, in *DeviceModuleVersionIndexReq, opts ...grpc.CallOption) (*DeviceModuleVersionIndexResp, error) - // 绑定网关下子设备设备 + //绑定网关下子设备设备 DeviceGatewayMultiCreate(ctx context.Context, in *DeviceGatewayMultiCreateReq, opts ...grpc.CallOption) (*Empty, error) - // 绑定网关下子设备设备 + //绑定网关下子设备设备 DeviceGatewayMultiUpdate(ctx context.Context, in *DeviceGatewayMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) - // 获取绑定信息的设备信息列表 + //获取绑定信息的设备信息列表 DeviceGatewayIndex(ctx context.Context, in *DeviceGatewayIndexReq, opts ...grpc.CallOption) (*DeviceGatewayIndexResp, error) - // 删除网关下子设备 + //删除网关下子设备 DeviceGatewayMultiDelete(ctx context.Context, in *DeviceGatewayMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) - // 设备计数 + //设备计数 DeviceInfoCount(ctx context.Context, in *DeviceInfoCountReq, opts ...grpc.CallOption) (*DeviceInfoCount, error) - // 设备类型 + //设备类型 DeviceTypeCount(ctx context.Context, in *DeviceTypeCountReq, opts ...grpc.CallOption) (*DeviceTypeCountResp, error) DeviceCount(ctx context.Context, in *DeviceCountReq, opts ...grpc.CallOption) (*DeviceCountResp, error) DeviceProfileRead(ctx context.Context, in *DeviceProfileReadReq, opts ...grpc.CallOption) (*DeviceProfile, error) @@ -106,7 +70,7 @@ func NewDeviceManageClient(cc grpc.ClientConnInterface) DeviceManageClient { func (c *deviceManageClient) RootCheck(ctx context.Context, in *RootCheckReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_RootCheck_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/rootCheck", in, out, opts...) if err != nil { return nil, err } @@ -115,7 +79,7 @@ func (c *deviceManageClient) RootCheck(ctx context.Context, in *RootCheckReq, op func (c *deviceManageClient) DeviceInfoCreate(ctx context.Context, in *DeviceInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoCreate", in, out, opts...) if err != nil { return nil, err } @@ -124,7 +88,7 @@ func (c *deviceManageClient) DeviceInfoCreate(ctx context.Context, in *DeviceInf func (c *deviceManageClient) DeviceInfoUpdate(ctx context.Context, in *DeviceInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoUpdate", in, out, opts...) if err != nil { return nil, err } @@ -133,7 +97,7 @@ func (c *deviceManageClient) DeviceInfoUpdate(ctx context.Context, in *DeviceInf func (c *deviceManageClient) DeviceOnlineMultiFix(ctx context.Context, in *DeviceOnlineMultiFixReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceOnlineMultiFix_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceOnlineMultiFix", in, out, opts...) if err != nil { return nil, err } @@ -142,7 +106,7 @@ func (c *deviceManageClient) DeviceOnlineMultiFix(ctx context.Context, in *Devic func (c *deviceManageClient) DeviceInfoDelete(ctx context.Context, in *DeviceInfoDeleteReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoDelete", in, out, opts...) if err != nil { return nil, err } @@ -151,7 +115,7 @@ func (c *deviceManageClient) DeviceInfoDelete(ctx context.Context, in *DeviceInf func (c *deviceManageClient) DeviceInfoIndex(ctx context.Context, in *DeviceInfoIndexReq, opts ...grpc.CallOption) (*DeviceInfoIndexResp, error) { out := new(DeviceInfoIndexResp) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoIndex", in, out, opts...) if err != nil { return nil, err } @@ -160,7 +124,7 @@ func (c *deviceManageClient) DeviceInfoIndex(ctx context.Context, in *DeviceInfo func (c *deviceManageClient) DeviceInfoMultiUpdate(ctx context.Context, in *DeviceInfoMultiUpdateReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoMultiUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/DeviceInfoMultiUpdate", in, out, opts...) if err != nil { return nil, err } @@ -169,7 +133,7 @@ func (c *deviceManageClient) DeviceInfoMultiUpdate(ctx context.Context, in *Devi func (c *deviceManageClient) DeviceInfoRead(ctx context.Context, in *DeviceInfoReadReq, opts ...grpc.CallOption) (*DeviceInfo, error) { out := new(DeviceInfo) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoRead", in, out, opts...) if err != nil { return nil, err } @@ -178,7 +142,7 @@ func (c *deviceManageClient) DeviceInfoRead(ctx context.Context, in *DeviceInfoR func (c *deviceManageClient) DeviceInfoBind(ctx context.Context, in *DeviceInfoBindReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoBind_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoBind", in, out, opts...) if err != nil { return nil, err } @@ -187,7 +151,7 @@ func (c *deviceManageClient) DeviceInfoBind(ctx context.Context, in *DeviceInfoB func (c *deviceManageClient) DeviceInfoMultiBind(ctx context.Context, in *DeviceInfoMultiBindReq, opts ...grpc.CallOption) (*DeviceInfoMultiBindResp, error) { out := new(DeviceInfoMultiBindResp) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoMultiBind_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoMultiBind", in, out, opts...) if err != nil { return nil, err } @@ -196,7 +160,7 @@ func (c *deviceManageClient) DeviceInfoMultiBind(ctx context.Context, in *Device func (c *deviceManageClient) DeviceInfoCanBind(ctx context.Context, in *DeviceInfoCanBindReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoCanBind_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoCanBind", in, out, opts...) if err != nil { return nil, err } @@ -205,7 +169,7 @@ func (c *deviceManageClient) DeviceInfoCanBind(ctx context.Context, in *DeviceIn func (c *deviceManageClient) DeviceInfoUnbind(ctx context.Context, in *DeviceCore, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoUnbind_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoUnbind", in, out, opts...) if err != nil { return nil, err } @@ -214,7 +178,7 @@ func (c *deviceManageClient) DeviceInfoUnbind(ctx context.Context, in *DeviceCor func (c *deviceManageClient) DeviceTransfer(ctx context.Context, in *DeviceTransferReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceTransfer_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceTransfer", in, out, opts...) if err != nil { return nil, err } @@ -223,7 +187,7 @@ func (c *deviceManageClient) DeviceTransfer(ctx context.Context, in *DeviceTrans func (c *deviceManageClient) DeviceMove(ctx context.Context, in *DeviceMoveReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceMove_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceMove", in, out, opts...) if err != nil { return nil, err } @@ -232,7 +196,7 @@ func (c *deviceManageClient) DeviceMove(ctx context.Context, in *DeviceMoveReq, func (c *deviceManageClient) DeviceModuleVersionRead(ctx context.Context, in *DeviceModuleVersionReadReq, opts ...grpc.CallOption) (*DeviceModuleVersion, error) { out := new(DeviceModuleVersion) - err := c.cc.Invoke(ctx, DeviceManage_DeviceModuleVersionRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceModuleVersionRead", in, out, opts...) if err != nil { return nil, err } @@ -241,7 +205,7 @@ func (c *deviceManageClient) DeviceModuleVersionRead(ctx context.Context, in *De func (c *deviceManageClient) DeviceModuleVersionIndex(ctx context.Context, in *DeviceModuleVersionIndexReq, opts ...grpc.CallOption) (*DeviceModuleVersionIndexResp, error) { out := new(DeviceModuleVersionIndexResp) - err := c.cc.Invoke(ctx, DeviceManage_DeviceModuleVersionIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceModuleVersionIndex", in, out, opts...) if err != nil { return nil, err } @@ -250,7 +214,7 @@ func (c *deviceManageClient) DeviceModuleVersionIndex(ctx context.Context, in *D func (c *deviceManageClient) DeviceGatewayMultiCreate(ctx context.Context, in *DeviceGatewayMultiCreateReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceGatewayMultiCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceGatewayMultiCreate", in, out, opts...) if err != nil { return nil, err } @@ -259,7 +223,7 @@ func (c *deviceManageClient) DeviceGatewayMultiCreate(ctx context.Context, in *D func (c *deviceManageClient) DeviceGatewayMultiUpdate(ctx context.Context, in *DeviceGatewayMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceGatewayMultiUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceGatewayMultiUpdate", in, out, opts...) if err != nil { return nil, err } @@ -268,7 +232,7 @@ func (c *deviceManageClient) DeviceGatewayMultiUpdate(ctx context.Context, in *D func (c *deviceManageClient) DeviceGatewayIndex(ctx context.Context, in *DeviceGatewayIndexReq, opts ...grpc.CallOption) (*DeviceGatewayIndexResp, error) { out := new(DeviceGatewayIndexResp) - err := c.cc.Invoke(ctx, DeviceManage_DeviceGatewayIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceGatewayIndex", in, out, opts...) if err != nil { return nil, err } @@ -277,7 +241,7 @@ func (c *deviceManageClient) DeviceGatewayIndex(ctx context.Context, in *DeviceG func (c *deviceManageClient) DeviceGatewayMultiDelete(ctx context.Context, in *DeviceGatewayMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceGatewayMultiDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceGatewayMultiDelete", in, out, opts...) if err != nil { return nil, err } @@ -286,7 +250,7 @@ func (c *deviceManageClient) DeviceGatewayMultiDelete(ctx context.Context, in *D func (c *deviceManageClient) DeviceInfoCount(ctx context.Context, in *DeviceInfoCountReq, opts ...grpc.CallOption) (*DeviceInfoCount, error) { out := new(DeviceInfoCount) - err := c.cc.Invoke(ctx, DeviceManage_DeviceInfoCount_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceInfoCount", in, out, opts...) if err != nil { return nil, err } @@ -295,7 +259,7 @@ func (c *deviceManageClient) DeviceInfoCount(ctx context.Context, in *DeviceInfo func (c *deviceManageClient) DeviceTypeCount(ctx context.Context, in *DeviceTypeCountReq, opts ...grpc.CallOption) (*DeviceTypeCountResp, error) { out := new(DeviceTypeCountResp) - err := c.cc.Invoke(ctx, DeviceManage_DeviceTypeCount_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceTypeCount", in, out, opts...) if err != nil { return nil, err } @@ -304,7 +268,7 @@ func (c *deviceManageClient) DeviceTypeCount(ctx context.Context, in *DeviceType func (c *deviceManageClient) DeviceCount(ctx context.Context, in *DeviceCountReq, opts ...grpc.CallOption) (*DeviceCountResp, error) { out := new(DeviceCountResp) - err := c.cc.Invoke(ctx, DeviceManage_DeviceCount_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceCount", in, out, opts...) if err != nil { return nil, err } @@ -313,7 +277,7 @@ func (c *deviceManageClient) DeviceCount(ctx context.Context, in *DeviceCountReq func (c *deviceManageClient) DeviceProfileRead(ctx context.Context, in *DeviceProfileReadReq, opts ...grpc.CallOption) (*DeviceProfile, error) { out := new(DeviceProfile) - err := c.cc.Invoke(ctx, DeviceManage_DeviceProfileRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceProfileRead", in, out, opts...) if err != nil { return nil, err } @@ -322,7 +286,7 @@ func (c *deviceManageClient) DeviceProfileRead(ctx context.Context, in *DevicePr func (c *deviceManageClient) DeviceProfileDelete(ctx context.Context, in *DeviceProfileReadReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceProfileDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceProfileDelete", in, out, opts...) if err != nil { return nil, err } @@ -331,7 +295,7 @@ func (c *deviceManageClient) DeviceProfileDelete(ctx context.Context, in *Device func (c *deviceManageClient) DeviceProfileUpdate(ctx context.Context, in *DeviceProfile, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceManage_DeviceProfileUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceProfileUpdate", in, out, opts...) if err != nil { return nil, err } @@ -340,7 +304,7 @@ func (c *deviceManageClient) DeviceProfileUpdate(ctx context.Context, in *Device func (c *deviceManageClient) DeviceProfileIndex(ctx context.Context, in *DeviceProfileIndexReq, opts ...grpc.CallOption) (*DeviceProfileIndexResp, error) { out := new(DeviceProfileIndexResp) - err := c.cc.Invoke(ctx, DeviceManage_DeviceProfileIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceManage/deviceProfileIndex", in, out, opts...) if err != nil { return nil, err } @@ -351,20 +315,20 @@ func (c *deviceManageClient) DeviceProfileIndex(ctx context.Context, in *DeviceP // All implementations must embed UnimplementedDeviceManageServer // for forward compatibility type DeviceManageServer interface { - // 鉴定是否是root账号(提供给mqtt broker) + //鉴定是否是root账号(提供给mqtt broker) RootCheck(context.Context, *RootCheckReq) (*Empty, error) - // 新增设备 + //新增设备 DeviceInfoCreate(context.Context, *DeviceInfo) (*Empty, error) - // 更新设备 + //更新设备 DeviceInfoUpdate(context.Context, *DeviceInfo) (*Empty, error) DeviceOnlineMultiFix(context.Context, *DeviceOnlineMultiFixReq) (*Empty, error) - // 删除设备 + //删除设备 DeviceInfoDelete(context.Context, *DeviceInfoDeleteReq) (*Empty, error) - // 获取设备信息列表 + //获取设备信息列表 DeviceInfoIndex(context.Context, *DeviceInfoIndexReq) (*DeviceInfoIndexResp, error) - // 批量更新设备状态 + //批量更新设备状态 DeviceInfoMultiUpdate(context.Context, *DeviceInfoMultiUpdateReq) (*Empty, error) - // 获取设备信息详情 + //获取设备信息详情 DeviceInfoRead(context.Context, *DeviceInfoReadReq) (*DeviceInfo, error) DeviceInfoBind(context.Context, *DeviceInfoBindReq) (*Empty, error) DeviceInfoMultiBind(context.Context, *DeviceInfoMultiBindReq) (*DeviceInfoMultiBindResp, error) @@ -374,17 +338,17 @@ type DeviceManageServer interface { DeviceMove(context.Context, *DeviceMoveReq) (*Empty, error) DeviceModuleVersionRead(context.Context, *DeviceModuleVersionReadReq) (*DeviceModuleVersion, error) DeviceModuleVersionIndex(context.Context, *DeviceModuleVersionIndexReq) (*DeviceModuleVersionIndexResp, error) - // 绑定网关下子设备设备 + //绑定网关下子设备设备 DeviceGatewayMultiCreate(context.Context, *DeviceGatewayMultiCreateReq) (*Empty, error) - // 绑定网关下子设备设备 + //绑定网关下子设备设备 DeviceGatewayMultiUpdate(context.Context, *DeviceGatewayMultiSaveReq) (*Empty, error) - // 获取绑定信息的设备信息列表 + //获取绑定信息的设备信息列表 DeviceGatewayIndex(context.Context, *DeviceGatewayIndexReq) (*DeviceGatewayIndexResp, error) - // 删除网关下子设备 + //删除网关下子设备 DeviceGatewayMultiDelete(context.Context, *DeviceGatewayMultiSaveReq) (*Empty, error) - // 设备计数 + //设备计数 DeviceInfoCount(context.Context, *DeviceInfoCountReq) (*DeviceInfoCount, error) - // 设备类型 + //设备类型 DeviceTypeCount(context.Context, *DeviceTypeCountReq) (*DeviceTypeCountResp, error) DeviceCount(context.Context, *DeviceCountReq) (*DeviceCountResp, error) DeviceProfileRead(context.Context, *DeviceProfileReadReq) (*DeviceProfile, error) @@ -502,7 +466,7 @@ func _DeviceManage_RootCheck_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_RootCheck_FullMethodName, + FullMethod: "/dm.DeviceManage/rootCheck", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).RootCheck(ctx, req.(*RootCheckReq)) @@ -520,7 +484,7 @@ func _DeviceManage_DeviceInfoCreate_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoCreate_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoCreate(ctx, req.(*DeviceInfo)) @@ -538,7 +502,7 @@ func _DeviceManage_DeviceInfoUpdate_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoUpdate_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoUpdate(ctx, req.(*DeviceInfo)) @@ -556,7 +520,7 @@ func _DeviceManage_DeviceOnlineMultiFix_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceOnlineMultiFix_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceOnlineMultiFix", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceOnlineMultiFix(ctx, req.(*DeviceOnlineMultiFixReq)) @@ -574,7 +538,7 @@ func _DeviceManage_DeviceInfoDelete_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoDelete_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoDelete(ctx, req.(*DeviceInfoDeleteReq)) @@ -592,7 +556,7 @@ func _DeviceManage_DeviceInfoIndex_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoIndex_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoIndex(ctx, req.(*DeviceInfoIndexReq)) @@ -610,7 +574,7 @@ func _DeviceManage_DeviceInfoMultiUpdate_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoMultiUpdate_FullMethodName, + FullMethod: "/dm.DeviceManage/DeviceInfoMultiUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoMultiUpdate(ctx, req.(*DeviceInfoMultiUpdateReq)) @@ -628,7 +592,7 @@ func _DeviceManage_DeviceInfoRead_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoRead_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoRead(ctx, req.(*DeviceInfoReadReq)) @@ -646,7 +610,7 @@ func _DeviceManage_DeviceInfoBind_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoBind_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoBind", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoBind(ctx, req.(*DeviceInfoBindReq)) @@ -664,7 +628,7 @@ func _DeviceManage_DeviceInfoMultiBind_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoMultiBind_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoMultiBind", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoMultiBind(ctx, req.(*DeviceInfoMultiBindReq)) @@ -682,7 +646,7 @@ func _DeviceManage_DeviceInfoCanBind_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoCanBind_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoCanBind", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoCanBind(ctx, req.(*DeviceInfoCanBindReq)) @@ -700,7 +664,7 @@ func _DeviceManage_DeviceInfoUnbind_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoUnbind_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoUnbind", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoUnbind(ctx, req.(*DeviceCore)) @@ -718,7 +682,7 @@ func _DeviceManage_DeviceTransfer_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceTransfer_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceTransfer", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceTransfer(ctx, req.(*DeviceTransferReq)) @@ -736,7 +700,7 @@ func _DeviceManage_DeviceMove_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceMove_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceMove", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceMove(ctx, req.(*DeviceMoveReq)) @@ -754,7 +718,7 @@ func _DeviceManage_DeviceModuleVersionRead_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceModuleVersionRead_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceModuleVersionRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceModuleVersionRead(ctx, req.(*DeviceModuleVersionReadReq)) @@ -772,7 +736,7 @@ func _DeviceManage_DeviceModuleVersionIndex_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceModuleVersionIndex_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceModuleVersionIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceModuleVersionIndex(ctx, req.(*DeviceModuleVersionIndexReq)) @@ -790,7 +754,7 @@ func _DeviceManage_DeviceGatewayMultiCreate_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceGatewayMultiCreate_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceGatewayMultiCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceGatewayMultiCreate(ctx, req.(*DeviceGatewayMultiCreateReq)) @@ -808,7 +772,7 @@ func _DeviceManage_DeviceGatewayMultiUpdate_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceGatewayMultiUpdate_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceGatewayMultiUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceGatewayMultiUpdate(ctx, req.(*DeviceGatewayMultiSaveReq)) @@ -826,7 +790,7 @@ func _DeviceManage_DeviceGatewayIndex_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceGatewayIndex_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceGatewayIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceGatewayIndex(ctx, req.(*DeviceGatewayIndexReq)) @@ -844,7 +808,7 @@ func _DeviceManage_DeviceGatewayMultiDelete_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceGatewayMultiDelete_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceGatewayMultiDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceGatewayMultiDelete(ctx, req.(*DeviceGatewayMultiSaveReq)) @@ -862,7 +826,7 @@ func _DeviceManage_DeviceInfoCount_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceInfoCount_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceInfoCount", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceInfoCount(ctx, req.(*DeviceInfoCountReq)) @@ -880,7 +844,7 @@ func _DeviceManage_DeviceTypeCount_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceTypeCount_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceTypeCount", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceTypeCount(ctx, req.(*DeviceTypeCountReq)) @@ -898,7 +862,7 @@ func _DeviceManage_DeviceCount_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceCount_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceCount", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceCount(ctx, req.(*DeviceCountReq)) @@ -916,7 +880,7 @@ func _DeviceManage_DeviceProfileRead_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceProfileRead_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceProfileRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceProfileRead(ctx, req.(*DeviceProfileReadReq)) @@ -934,7 +898,7 @@ func _DeviceManage_DeviceProfileDelete_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceProfileDelete_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceProfileDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceProfileDelete(ctx, req.(*DeviceProfileReadReq)) @@ -952,7 +916,7 @@ func _DeviceManage_DeviceProfileUpdate_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceProfileUpdate_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceProfileUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceProfileUpdate(ctx, req.(*DeviceProfile)) @@ -970,7 +934,7 @@ func _DeviceManage_DeviceProfileIndex_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceManage_DeviceProfileIndex_FullMethodName, + FullMethod: "/dm.DeviceManage/deviceProfileIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceManageServer).DeviceProfileIndex(ctx, req.(*DeviceProfileIndexReq)) @@ -1098,76 +1062,49 @@ var DeviceManage_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - ProductManage_ProductInit_FullMethodName = "/dm.ProductManage/productInit" - ProductManage_ProductInfoCreate_FullMethodName = "/dm.ProductManage/productInfoCreate" - ProductManage_ProductInfoUpdate_FullMethodName = "/dm.ProductManage/productInfoUpdate" - ProductManage_ProductInfoDelete_FullMethodName = "/dm.ProductManage/productInfoDelete" - ProductManage_ProductInfoIndex_FullMethodName = "/dm.ProductManage/productInfoIndex" - ProductManage_ProductInfoRead_FullMethodName = "/dm.ProductManage/productInfoRead" - ProductManage_ProductSchemaUpdate_FullMethodName = "/dm.ProductManage/productSchemaUpdate" - ProductManage_ProductSchemaCreate_FullMethodName = "/dm.ProductManage/productSchemaCreate" - ProductManage_ProductSchemaMultiCreate_FullMethodName = "/dm.ProductManage/productSchemaMultiCreate" - ProductManage_ProductSchemaDelete_FullMethodName = "/dm.ProductManage/productSchemaDelete" - ProductManage_ProductSchemaIndex_FullMethodName = "/dm.ProductManage/productSchemaIndex" - ProductManage_ProductSchemaTslImport_FullMethodName = "/dm.ProductManage/productSchemaTslImport" - ProductManage_ProductSchemaTslRead_FullMethodName = "/dm.ProductManage/productSchemaTslRead" - ProductManage_ProductCustomRead_FullMethodName = "/dm.ProductManage/productCustomRead" - ProductManage_ProductCustomUpdate_FullMethodName = "/dm.ProductManage/productCustomUpdate" - ProductManage_ProductCategoryCreate_FullMethodName = "/dm.ProductManage/productCategoryCreate" - ProductManage_ProductCategoryUpdate_FullMethodName = "/dm.ProductManage/productCategoryUpdate" - ProductManage_ProductCategoryDelete_FullMethodName = "/dm.ProductManage/productCategoryDelete" - ProductManage_ProductCategoryIndex_FullMethodName = "/dm.ProductManage/productCategoryIndex" - ProductManage_ProductCategoryRead_FullMethodName = "/dm.ProductManage/productCategoryRead" - ProductManage_ProductCategorySchemaIndex_FullMethodName = "/dm.ProductManage/productCategorySchemaIndex" - ProductManage_ProductCategorySchemaMultiUpdate_FullMethodName = "/dm.ProductManage/productCategorySchemaMultiUpdate" - ProductManage_ProductCategorySchemaMultiCreate_FullMethodName = "/dm.ProductManage/productCategorySchemaMultiCreate" - ProductManage_ProductCategorySchemaMultiDelete_FullMethodName = "/dm.ProductManage/productCategorySchemaMultiDelete" -) - // ProductManageClient is the client API for ProductManage service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ProductManageClient interface { ProductInit(ctx context.Context, in *ProductInitReq, opts ...grpc.CallOption) (*Empty, error) - // 新增产品 + //新增产品 ProductInfoCreate(ctx context.Context, in *ProductInfo, opts ...grpc.CallOption) (*Empty, error) - // 更新产品 + //更新产品 ProductInfoUpdate(ctx context.Context, in *ProductInfo, opts ...grpc.CallOption) (*Empty, error) - // 删除产品 + //删除产品 ProductInfoDelete(ctx context.Context, in *ProductInfoDeleteReq, opts ...grpc.CallOption) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 ProductInfoIndex(ctx context.Context, in *ProductInfoIndexReq, opts ...grpc.CallOption) (*ProductInfoIndexResp, error) - // 获取产品信息详情 + //获取产品信息详情 ProductInfoRead(ctx context.Context, in *ProductInfoReadReq, opts ...grpc.CallOption) (*ProductInfo, error) - // 更新产品物模型 + //更新产品物模型 ProductSchemaUpdate(ctx context.Context, in *ProductSchemaUpdateReq, opts ...grpc.CallOption) (*Empty, error) - // 新增产品 + //新增产品 ProductSchemaCreate(ctx context.Context, in *ProductSchemaCreateReq, opts ...grpc.CallOption) (*Empty, error) - // 批量新增物模型,只新增没有的,已有的不处理 + //批量新增物模型,只新增没有的,已有的不处理 ProductSchemaMultiCreate(ctx context.Context, in *ProductSchemaMultiCreateReq, opts ...grpc.CallOption) (*Empty, error) - // 删除产品 + //删除产品 ProductSchemaDelete(ctx context.Context, in *ProductSchemaDeleteReq, opts ...grpc.CallOption) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 ProductSchemaIndex(ctx context.Context, in *ProductSchemaIndexReq, opts ...grpc.CallOption) (*ProductSchemaIndexResp, error) - // 删除产品 + //删除产品 ProductSchemaTslImport(ctx context.Context, in *ProductSchemaTslImportReq, opts ...grpc.CallOption) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 ProductSchemaTslRead(ctx context.Context, in *ProductSchemaTslReadReq, opts ...grpc.CallOption) (*ProductSchemaTslReadResp, error) - // 脚本管理 + //脚本管理 ProductCustomRead(ctx context.Context, in *ProductCustomReadReq, opts ...grpc.CallOption) (*ProductCustom, error) ProductCustomUpdate(ctx context.Context, in *ProductCustom, opts ...grpc.CallOption) (*Empty, error) - // 新增产品 + //新增产品 ProductCategoryCreate(ctx context.Context, in *ProductCategory, opts ...grpc.CallOption) (*WithID, error) - // 更新产品 + //更新产品 ProductCategoryUpdate(ctx context.Context, in *ProductCategory, opts ...grpc.CallOption) (*Empty, error) - // 删除产品 + //删除产品 ProductCategoryDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 ProductCategoryIndex(ctx context.Context, in *ProductCategoryIndexReq, opts ...grpc.CallOption) (*ProductCategoryIndexResp, error) - // 获取产品信息详情 + //获取产品信息详情 ProductCategoryRead(ctx context.Context, in *WithIDChildren, opts ...grpc.CallOption) (*ProductCategory, error) - // 获取产品品类下的物模型列表,绑定的物模型会自动添加到该产品品类及子分类的产品中,并不支持删除 + //获取产品品类下的物模型列表,绑定的物模型会自动添加到该产品品类及子分类的产品中,并不支持删除 ProductCategorySchemaIndex(ctx context.Context, in *ProductCategorySchemaIndexReq, opts ...grpc.CallOption) (*ProductCategorySchemaIndexResp, error) ProductCategorySchemaMultiUpdate(ctx context.Context, in *ProductCategorySchemaMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) ProductCategorySchemaMultiCreate(ctx context.Context, in *ProductCategorySchemaMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) @@ -1184,7 +1121,7 @@ func NewProductManageClient(cc grpc.ClientConnInterface) ProductManageClient { func (c *productManageClient) ProductInit(ctx context.Context, in *ProductInitReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductInit_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productInit", in, out, opts...) if err != nil { return nil, err } @@ -1193,7 +1130,7 @@ func (c *productManageClient) ProductInit(ctx context.Context, in *ProductInitRe func (c *productManageClient) ProductInfoCreate(ctx context.Context, in *ProductInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductInfoCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productInfoCreate", in, out, opts...) if err != nil { return nil, err } @@ -1202,7 +1139,7 @@ func (c *productManageClient) ProductInfoCreate(ctx context.Context, in *Product func (c *productManageClient) ProductInfoUpdate(ctx context.Context, in *ProductInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductInfoUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productInfoUpdate", in, out, opts...) if err != nil { return nil, err } @@ -1211,7 +1148,7 @@ func (c *productManageClient) ProductInfoUpdate(ctx context.Context, in *Product func (c *productManageClient) ProductInfoDelete(ctx context.Context, in *ProductInfoDeleteReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductInfoDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productInfoDelete", in, out, opts...) if err != nil { return nil, err } @@ -1220,7 +1157,7 @@ func (c *productManageClient) ProductInfoDelete(ctx context.Context, in *Product func (c *productManageClient) ProductInfoIndex(ctx context.Context, in *ProductInfoIndexReq, opts ...grpc.CallOption) (*ProductInfoIndexResp, error) { out := new(ProductInfoIndexResp) - err := c.cc.Invoke(ctx, ProductManage_ProductInfoIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productInfoIndex", in, out, opts...) if err != nil { return nil, err } @@ -1229,7 +1166,7 @@ func (c *productManageClient) ProductInfoIndex(ctx context.Context, in *ProductI func (c *productManageClient) ProductInfoRead(ctx context.Context, in *ProductInfoReadReq, opts ...grpc.CallOption) (*ProductInfo, error) { out := new(ProductInfo) - err := c.cc.Invoke(ctx, ProductManage_ProductInfoRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productInfoRead", in, out, opts...) if err != nil { return nil, err } @@ -1238,7 +1175,7 @@ func (c *productManageClient) ProductInfoRead(ctx context.Context, in *ProductIn func (c *productManageClient) ProductSchemaUpdate(ctx context.Context, in *ProductSchemaUpdateReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductSchemaUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productSchemaUpdate", in, out, opts...) if err != nil { return nil, err } @@ -1247,7 +1184,7 @@ func (c *productManageClient) ProductSchemaUpdate(ctx context.Context, in *Produ func (c *productManageClient) ProductSchemaCreate(ctx context.Context, in *ProductSchemaCreateReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductSchemaCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productSchemaCreate", in, out, opts...) if err != nil { return nil, err } @@ -1256,7 +1193,7 @@ func (c *productManageClient) ProductSchemaCreate(ctx context.Context, in *Produ func (c *productManageClient) ProductSchemaMultiCreate(ctx context.Context, in *ProductSchemaMultiCreateReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductSchemaMultiCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productSchemaMultiCreate", in, out, opts...) if err != nil { return nil, err } @@ -1265,7 +1202,7 @@ func (c *productManageClient) ProductSchemaMultiCreate(ctx context.Context, in * func (c *productManageClient) ProductSchemaDelete(ctx context.Context, in *ProductSchemaDeleteReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductSchemaDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productSchemaDelete", in, out, opts...) if err != nil { return nil, err } @@ -1274,7 +1211,7 @@ func (c *productManageClient) ProductSchemaDelete(ctx context.Context, in *Produ func (c *productManageClient) ProductSchemaIndex(ctx context.Context, in *ProductSchemaIndexReq, opts ...grpc.CallOption) (*ProductSchemaIndexResp, error) { out := new(ProductSchemaIndexResp) - err := c.cc.Invoke(ctx, ProductManage_ProductSchemaIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productSchemaIndex", in, out, opts...) if err != nil { return nil, err } @@ -1283,7 +1220,7 @@ func (c *productManageClient) ProductSchemaIndex(ctx context.Context, in *Produc func (c *productManageClient) ProductSchemaTslImport(ctx context.Context, in *ProductSchemaTslImportReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductSchemaTslImport_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productSchemaTslImport", in, out, opts...) if err != nil { return nil, err } @@ -1292,7 +1229,7 @@ func (c *productManageClient) ProductSchemaTslImport(ctx context.Context, in *Pr func (c *productManageClient) ProductSchemaTslRead(ctx context.Context, in *ProductSchemaTslReadReq, opts ...grpc.CallOption) (*ProductSchemaTslReadResp, error) { out := new(ProductSchemaTslReadResp) - err := c.cc.Invoke(ctx, ProductManage_ProductSchemaTslRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productSchemaTslRead", in, out, opts...) if err != nil { return nil, err } @@ -1301,7 +1238,7 @@ func (c *productManageClient) ProductSchemaTslRead(ctx context.Context, in *Prod func (c *productManageClient) ProductCustomRead(ctx context.Context, in *ProductCustomReadReq, opts ...grpc.CallOption) (*ProductCustom, error) { out := new(ProductCustom) - err := c.cc.Invoke(ctx, ProductManage_ProductCustomRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCustomRead", in, out, opts...) if err != nil { return nil, err } @@ -1310,7 +1247,7 @@ func (c *productManageClient) ProductCustomRead(ctx context.Context, in *Product func (c *productManageClient) ProductCustomUpdate(ctx context.Context, in *ProductCustom, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductCustomUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCustomUpdate", in, out, opts...) if err != nil { return nil, err } @@ -1319,7 +1256,7 @@ func (c *productManageClient) ProductCustomUpdate(ctx context.Context, in *Produ func (c *productManageClient) ProductCategoryCreate(ctx context.Context, in *ProductCategory, opts ...grpc.CallOption) (*WithID, error) { out := new(WithID) - err := c.cc.Invoke(ctx, ProductManage_ProductCategoryCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategoryCreate", in, out, opts...) if err != nil { return nil, err } @@ -1328,7 +1265,7 @@ func (c *productManageClient) ProductCategoryCreate(ctx context.Context, in *Pro func (c *productManageClient) ProductCategoryUpdate(ctx context.Context, in *ProductCategory, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductCategoryUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategoryUpdate", in, out, opts...) if err != nil { return nil, err } @@ -1337,7 +1274,7 @@ func (c *productManageClient) ProductCategoryUpdate(ctx context.Context, in *Pro func (c *productManageClient) ProductCategoryDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductCategoryDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategoryDelete", in, out, opts...) if err != nil { return nil, err } @@ -1346,7 +1283,7 @@ func (c *productManageClient) ProductCategoryDelete(ctx context.Context, in *Wit func (c *productManageClient) ProductCategoryIndex(ctx context.Context, in *ProductCategoryIndexReq, opts ...grpc.CallOption) (*ProductCategoryIndexResp, error) { out := new(ProductCategoryIndexResp) - err := c.cc.Invoke(ctx, ProductManage_ProductCategoryIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategoryIndex", in, out, opts...) if err != nil { return nil, err } @@ -1355,7 +1292,7 @@ func (c *productManageClient) ProductCategoryIndex(ctx context.Context, in *Prod func (c *productManageClient) ProductCategoryRead(ctx context.Context, in *WithIDChildren, opts ...grpc.CallOption) (*ProductCategory, error) { out := new(ProductCategory) - err := c.cc.Invoke(ctx, ProductManage_ProductCategoryRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategoryRead", in, out, opts...) if err != nil { return nil, err } @@ -1364,7 +1301,7 @@ func (c *productManageClient) ProductCategoryRead(ctx context.Context, in *WithI func (c *productManageClient) ProductCategorySchemaIndex(ctx context.Context, in *ProductCategorySchemaIndexReq, opts ...grpc.CallOption) (*ProductCategorySchemaIndexResp, error) { out := new(ProductCategorySchemaIndexResp) - err := c.cc.Invoke(ctx, ProductManage_ProductCategorySchemaIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategorySchemaIndex", in, out, opts...) if err != nil { return nil, err } @@ -1373,7 +1310,7 @@ func (c *productManageClient) ProductCategorySchemaIndex(ctx context.Context, in func (c *productManageClient) ProductCategorySchemaMultiUpdate(ctx context.Context, in *ProductCategorySchemaMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductCategorySchemaMultiUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategorySchemaMultiUpdate", in, out, opts...) if err != nil { return nil, err } @@ -1382,7 +1319,7 @@ func (c *productManageClient) ProductCategorySchemaMultiUpdate(ctx context.Conte func (c *productManageClient) ProductCategorySchemaMultiCreate(ctx context.Context, in *ProductCategorySchemaMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductCategorySchemaMultiCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategorySchemaMultiCreate", in, out, opts...) if err != nil { return nil, err } @@ -1391,7 +1328,7 @@ func (c *productManageClient) ProductCategorySchemaMultiCreate(ctx context.Conte func (c *productManageClient) ProductCategorySchemaMultiDelete(ctx context.Context, in *ProductCategorySchemaMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProductManage_ProductCategorySchemaMultiDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProductManage/productCategorySchemaMultiDelete", in, out, opts...) if err != nil { return nil, err } @@ -1403,44 +1340,44 @@ func (c *productManageClient) ProductCategorySchemaMultiDelete(ctx context.Conte // for forward compatibility type ProductManageServer interface { ProductInit(context.Context, *ProductInitReq) (*Empty, error) - // 新增产品 + //新增产品 ProductInfoCreate(context.Context, *ProductInfo) (*Empty, error) - // 更新产品 + //更新产品 ProductInfoUpdate(context.Context, *ProductInfo) (*Empty, error) - // 删除产品 + //删除产品 ProductInfoDelete(context.Context, *ProductInfoDeleteReq) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 ProductInfoIndex(context.Context, *ProductInfoIndexReq) (*ProductInfoIndexResp, error) - // 获取产品信息详情 + //获取产品信息详情 ProductInfoRead(context.Context, *ProductInfoReadReq) (*ProductInfo, error) - // 更新产品物模型 + //更新产品物模型 ProductSchemaUpdate(context.Context, *ProductSchemaUpdateReq) (*Empty, error) - // 新增产品 + //新增产品 ProductSchemaCreate(context.Context, *ProductSchemaCreateReq) (*Empty, error) - // 批量新增物模型,只新增没有的,已有的不处理 + //批量新增物模型,只新增没有的,已有的不处理 ProductSchemaMultiCreate(context.Context, *ProductSchemaMultiCreateReq) (*Empty, error) - // 删除产品 + //删除产品 ProductSchemaDelete(context.Context, *ProductSchemaDeleteReq) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 ProductSchemaIndex(context.Context, *ProductSchemaIndexReq) (*ProductSchemaIndexResp, error) - // 删除产品 + //删除产品 ProductSchemaTslImport(context.Context, *ProductSchemaTslImportReq) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 ProductSchemaTslRead(context.Context, *ProductSchemaTslReadReq) (*ProductSchemaTslReadResp, error) - // 脚本管理 + //脚本管理 ProductCustomRead(context.Context, *ProductCustomReadReq) (*ProductCustom, error) ProductCustomUpdate(context.Context, *ProductCustom) (*Empty, error) - // 新增产品 + //新增产品 ProductCategoryCreate(context.Context, *ProductCategory) (*WithID, error) - // 更新产品 + //更新产品 ProductCategoryUpdate(context.Context, *ProductCategory) (*Empty, error) - // 删除产品 + //删除产品 ProductCategoryDelete(context.Context, *WithID) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 ProductCategoryIndex(context.Context, *ProductCategoryIndexReq) (*ProductCategoryIndexResp, error) - // 获取产品信息详情 + //获取产品信息详情 ProductCategoryRead(context.Context, *WithIDChildren) (*ProductCategory, error) - // 获取产品品类下的物模型列表,绑定的物模型会自动添加到该产品品类及子分类的产品中,并不支持删除 + //获取产品品类下的物模型列表,绑定的物模型会自动添加到该产品品类及子分类的产品中,并不支持删除 ProductCategorySchemaIndex(context.Context, *ProductCategorySchemaIndexReq) (*ProductCategorySchemaIndexResp, error) ProductCategorySchemaMultiUpdate(context.Context, *ProductCategorySchemaMultiSaveReq) (*Empty, error) ProductCategorySchemaMultiCreate(context.Context, *ProductCategorySchemaMultiSaveReq) (*Empty, error) @@ -1547,7 +1484,7 @@ func _ProductManage_ProductInit_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductInit_FullMethodName, + FullMethod: "/dm.ProductManage/productInit", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductInit(ctx, req.(*ProductInitReq)) @@ -1565,7 +1502,7 @@ func _ProductManage_ProductInfoCreate_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductInfoCreate_FullMethodName, + FullMethod: "/dm.ProductManage/productInfoCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductInfoCreate(ctx, req.(*ProductInfo)) @@ -1583,7 +1520,7 @@ func _ProductManage_ProductInfoUpdate_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductInfoUpdate_FullMethodName, + FullMethod: "/dm.ProductManage/productInfoUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductInfoUpdate(ctx, req.(*ProductInfo)) @@ -1601,7 +1538,7 @@ func _ProductManage_ProductInfoDelete_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductInfoDelete_FullMethodName, + FullMethod: "/dm.ProductManage/productInfoDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductInfoDelete(ctx, req.(*ProductInfoDeleteReq)) @@ -1619,7 +1556,7 @@ func _ProductManage_ProductInfoIndex_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductInfoIndex_FullMethodName, + FullMethod: "/dm.ProductManage/productInfoIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductInfoIndex(ctx, req.(*ProductInfoIndexReq)) @@ -1637,7 +1574,7 @@ func _ProductManage_ProductInfoRead_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductInfoRead_FullMethodName, + FullMethod: "/dm.ProductManage/productInfoRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductInfoRead(ctx, req.(*ProductInfoReadReq)) @@ -1655,7 +1592,7 @@ func _ProductManage_ProductSchemaUpdate_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductSchemaUpdate_FullMethodName, + FullMethod: "/dm.ProductManage/productSchemaUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductSchemaUpdate(ctx, req.(*ProductSchemaUpdateReq)) @@ -1673,7 +1610,7 @@ func _ProductManage_ProductSchemaCreate_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductSchemaCreate_FullMethodName, + FullMethod: "/dm.ProductManage/productSchemaCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductSchemaCreate(ctx, req.(*ProductSchemaCreateReq)) @@ -1691,7 +1628,7 @@ func _ProductManage_ProductSchemaMultiCreate_Handler(srv interface{}, ctx contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductSchemaMultiCreate_FullMethodName, + FullMethod: "/dm.ProductManage/productSchemaMultiCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductSchemaMultiCreate(ctx, req.(*ProductSchemaMultiCreateReq)) @@ -1709,7 +1646,7 @@ func _ProductManage_ProductSchemaDelete_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductSchemaDelete_FullMethodName, + FullMethod: "/dm.ProductManage/productSchemaDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductSchemaDelete(ctx, req.(*ProductSchemaDeleteReq)) @@ -1727,7 +1664,7 @@ func _ProductManage_ProductSchemaIndex_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductSchemaIndex_FullMethodName, + FullMethod: "/dm.ProductManage/productSchemaIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductSchemaIndex(ctx, req.(*ProductSchemaIndexReq)) @@ -1745,7 +1682,7 @@ func _ProductManage_ProductSchemaTslImport_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductSchemaTslImport_FullMethodName, + FullMethod: "/dm.ProductManage/productSchemaTslImport", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductSchemaTslImport(ctx, req.(*ProductSchemaTslImportReq)) @@ -1763,7 +1700,7 @@ func _ProductManage_ProductSchemaTslRead_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductSchemaTslRead_FullMethodName, + FullMethod: "/dm.ProductManage/productSchemaTslRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductSchemaTslRead(ctx, req.(*ProductSchemaTslReadReq)) @@ -1781,7 +1718,7 @@ func _ProductManage_ProductCustomRead_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCustomRead_FullMethodName, + FullMethod: "/dm.ProductManage/productCustomRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCustomRead(ctx, req.(*ProductCustomReadReq)) @@ -1799,7 +1736,7 @@ func _ProductManage_ProductCustomUpdate_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCustomUpdate_FullMethodName, + FullMethod: "/dm.ProductManage/productCustomUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCustomUpdate(ctx, req.(*ProductCustom)) @@ -1817,7 +1754,7 @@ func _ProductManage_ProductCategoryCreate_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategoryCreate_FullMethodName, + FullMethod: "/dm.ProductManage/productCategoryCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategoryCreate(ctx, req.(*ProductCategory)) @@ -1835,7 +1772,7 @@ func _ProductManage_ProductCategoryUpdate_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategoryUpdate_FullMethodName, + FullMethod: "/dm.ProductManage/productCategoryUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategoryUpdate(ctx, req.(*ProductCategory)) @@ -1853,7 +1790,7 @@ func _ProductManage_ProductCategoryDelete_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategoryDelete_FullMethodName, + FullMethod: "/dm.ProductManage/productCategoryDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategoryDelete(ctx, req.(*WithID)) @@ -1871,7 +1808,7 @@ func _ProductManage_ProductCategoryIndex_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategoryIndex_FullMethodName, + FullMethod: "/dm.ProductManage/productCategoryIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategoryIndex(ctx, req.(*ProductCategoryIndexReq)) @@ -1889,7 +1826,7 @@ func _ProductManage_ProductCategoryRead_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategoryRead_FullMethodName, + FullMethod: "/dm.ProductManage/productCategoryRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategoryRead(ctx, req.(*WithIDChildren)) @@ -1907,7 +1844,7 @@ func _ProductManage_ProductCategorySchemaIndex_Handler(srv interface{}, ctx cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategorySchemaIndex_FullMethodName, + FullMethod: "/dm.ProductManage/productCategorySchemaIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategorySchemaIndex(ctx, req.(*ProductCategorySchemaIndexReq)) @@ -1925,7 +1862,7 @@ func _ProductManage_ProductCategorySchemaMultiUpdate_Handler(srv interface{}, ct } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategorySchemaMultiUpdate_FullMethodName, + FullMethod: "/dm.ProductManage/productCategorySchemaMultiUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategorySchemaMultiUpdate(ctx, req.(*ProductCategorySchemaMultiSaveReq)) @@ -1943,7 +1880,7 @@ func _ProductManage_ProductCategorySchemaMultiCreate_Handler(srv interface{}, ct } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategorySchemaMultiCreate_FullMethodName, + FullMethod: "/dm.ProductManage/productCategorySchemaMultiCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategorySchemaMultiCreate(ctx, req.(*ProductCategorySchemaMultiSaveReq)) @@ -1961,7 +1898,7 @@ func _ProductManage_ProductCategorySchemaMultiDelete_Handler(srv interface{}, ct } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProductManage_ProductCategorySchemaMultiDelete_FullMethodName, + FullMethod: "/dm.ProductManage/productCategorySchemaMultiDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProductManageServer).ProductCategorySchemaMultiDelete(ctx, req.(*ProductCategorySchemaMultiSaveReq)) @@ -2077,26 +2014,18 @@ var ProductManage_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - SchemaManage_CommonSchemaInit_FullMethodName = "/dm.SchemaManage/commonSchemaInit" - SchemaManage_CommonSchemaUpdate_FullMethodName = "/dm.SchemaManage/commonSchemaUpdate" - SchemaManage_CommonSchemaCreate_FullMethodName = "/dm.SchemaManage/commonSchemaCreate" - SchemaManage_CommonSchemaDelete_FullMethodName = "/dm.SchemaManage/commonSchemaDelete" - SchemaManage_CommonSchemaIndex_FullMethodName = "/dm.SchemaManage/commonSchemaIndex" -) - // SchemaManageClient is the client API for SchemaManage service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type SchemaManageClient interface { CommonSchemaInit(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) - // 更新产品物模型 + //更新产品物模型 CommonSchemaUpdate(ctx context.Context, in *CommonSchemaUpdateReq, opts ...grpc.CallOption) (*Empty, error) - // 新增产品 + //新增产品 CommonSchemaCreate(ctx context.Context, in *CommonSchemaCreateReq, opts ...grpc.CallOption) (*Empty, error) - // 删除产品 + //删除产品 CommonSchemaDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 CommonSchemaIndex(ctx context.Context, in *CommonSchemaIndexReq, opts ...grpc.CallOption) (*CommonSchemaIndexResp, error) } @@ -2110,7 +2039,7 @@ func NewSchemaManageClient(cc grpc.ClientConnInterface) SchemaManageClient { func (c *schemaManageClient) CommonSchemaInit(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, SchemaManage_CommonSchemaInit_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.SchemaManage/commonSchemaInit", in, out, opts...) if err != nil { return nil, err } @@ -2119,7 +2048,7 @@ func (c *schemaManageClient) CommonSchemaInit(ctx context.Context, in *Empty, op func (c *schemaManageClient) CommonSchemaUpdate(ctx context.Context, in *CommonSchemaUpdateReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, SchemaManage_CommonSchemaUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.SchemaManage/commonSchemaUpdate", in, out, opts...) if err != nil { return nil, err } @@ -2128,7 +2057,7 @@ func (c *schemaManageClient) CommonSchemaUpdate(ctx context.Context, in *CommonS func (c *schemaManageClient) CommonSchemaCreate(ctx context.Context, in *CommonSchemaCreateReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, SchemaManage_CommonSchemaCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.SchemaManage/commonSchemaCreate", in, out, opts...) if err != nil { return nil, err } @@ -2137,7 +2066,7 @@ func (c *schemaManageClient) CommonSchemaCreate(ctx context.Context, in *CommonS func (c *schemaManageClient) CommonSchemaDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, SchemaManage_CommonSchemaDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.SchemaManage/commonSchemaDelete", in, out, opts...) if err != nil { return nil, err } @@ -2146,7 +2075,7 @@ func (c *schemaManageClient) CommonSchemaDelete(ctx context.Context, in *WithID, func (c *schemaManageClient) CommonSchemaIndex(ctx context.Context, in *CommonSchemaIndexReq, opts ...grpc.CallOption) (*CommonSchemaIndexResp, error) { out := new(CommonSchemaIndexResp) - err := c.cc.Invoke(ctx, SchemaManage_CommonSchemaIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.SchemaManage/commonSchemaIndex", in, out, opts...) if err != nil { return nil, err } @@ -2158,13 +2087,13 @@ func (c *schemaManageClient) CommonSchemaIndex(ctx context.Context, in *CommonSc // for forward compatibility type SchemaManageServer interface { CommonSchemaInit(context.Context, *Empty) (*Empty, error) - // 更新产品物模型 + //更新产品物模型 CommonSchemaUpdate(context.Context, *CommonSchemaUpdateReq) (*Empty, error) - // 新增产品 + //新增产品 CommonSchemaCreate(context.Context, *CommonSchemaCreateReq) (*Empty, error) - // 删除产品 + //删除产品 CommonSchemaDelete(context.Context, *WithID) (*Empty, error) - // 获取产品信息列表 + //获取产品信息列表 CommonSchemaIndex(context.Context, *CommonSchemaIndexReq) (*CommonSchemaIndexResp, error) mustEmbedUnimplementedSchemaManageServer() } @@ -2211,7 +2140,7 @@ func _SchemaManage_CommonSchemaInit_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: SchemaManage_CommonSchemaInit_FullMethodName, + FullMethod: "/dm.SchemaManage/commonSchemaInit", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SchemaManageServer).CommonSchemaInit(ctx, req.(*Empty)) @@ -2229,7 +2158,7 @@ func _SchemaManage_CommonSchemaUpdate_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: SchemaManage_CommonSchemaUpdate_FullMethodName, + FullMethod: "/dm.SchemaManage/commonSchemaUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SchemaManageServer).CommonSchemaUpdate(ctx, req.(*CommonSchemaUpdateReq)) @@ -2247,7 +2176,7 @@ func _SchemaManage_CommonSchemaCreate_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: SchemaManage_CommonSchemaCreate_FullMethodName, + FullMethod: "/dm.SchemaManage/commonSchemaCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SchemaManageServer).CommonSchemaCreate(ctx, req.(*CommonSchemaCreateReq)) @@ -2265,7 +2194,7 @@ func _SchemaManage_CommonSchemaDelete_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: SchemaManage_CommonSchemaDelete_FullMethodName, + FullMethod: "/dm.SchemaManage/commonSchemaDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SchemaManageServer).CommonSchemaDelete(ctx, req.(*WithID)) @@ -2283,7 +2212,7 @@ func _SchemaManage_CommonSchemaIndex_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: SchemaManage_CommonSchemaIndex_FullMethodName, + FullMethod: "/dm.SchemaManage/commonSchemaIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SchemaManageServer).CommonSchemaIndex(ctx, req.(*CommonSchemaIndexReq)) @@ -2323,32 +2252,21 @@ var SchemaManage_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - ProtocolManage_ProtocolInfoIndex_FullMethodName = "/dm.ProtocolManage/protocolInfoIndex" - ProtocolManage_ProtocolInfoRead_FullMethodName = "/dm.ProtocolManage/protocolInfoRead" - ProtocolManage_ProtocolInfoCreate_FullMethodName = "/dm.ProtocolManage/protocolInfoCreate" - ProtocolManage_ProtocolInfoUpdate_FullMethodName = "/dm.ProtocolManage/protocolInfoUpdate" - ProtocolManage_ProtocolInfoDelete_FullMethodName = "/dm.ProtocolManage/protocolInfoDelete" - ProtocolManage_ProtocolServiceUpdate_FullMethodName = "/dm.ProtocolManage/protocolServiceUpdate" - ProtocolManage_ProtocolServiceDelete_FullMethodName = "/dm.ProtocolManage/protocolServiceDelete" - ProtocolManage_ProtocolServiceIndex_FullMethodName = "/dm.ProtocolManage/protocolServiceIndex" -) - // ProtocolManageClient is the client API for ProtocolManage service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ProtocolManageClient interface { - // 协议列表 + //协议列表 ProtocolInfoIndex(ctx context.Context, in *ProtocolInfoIndexReq, opts ...grpc.CallOption) (*ProtocolInfoIndexResp, error) - // 协议详情 + //协议详情 ProtocolInfoRead(ctx context.Context, in *WithIDCode, opts ...grpc.CallOption) (*ProtocolInfo, error) - // 协议创建 + //协议创建 ProtocolInfoCreate(ctx context.Context, in *ProtocolInfo, opts ...grpc.CallOption) (*WithID, error) - // 协议更新 + //协议更新 ProtocolInfoUpdate(ctx context.Context, in *ProtocolInfo, opts ...grpc.CallOption) (*Empty, error) - // 协议删除 + //协议删除 ProtocolInfoDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) - // 更新服务状态,只给服务调用 + //更新服务状态,只给服务调用 ProtocolServiceUpdate(ctx context.Context, in *ProtocolService, opts ...grpc.CallOption) (*Empty, error) ProtocolServiceDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) ProtocolServiceIndex(ctx context.Context, in *ProtocolServiceIndexReq, opts ...grpc.CallOption) (*ProtocolServiceIndexResp, error) @@ -2364,7 +2282,7 @@ func NewProtocolManageClient(cc grpc.ClientConnInterface) ProtocolManageClient { func (c *protocolManageClient) ProtocolInfoIndex(ctx context.Context, in *ProtocolInfoIndexReq, opts ...grpc.CallOption) (*ProtocolInfoIndexResp, error) { out := new(ProtocolInfoIndexResp) - err := c.cc.Invoke(ctx, ProtocolManage_ProtocolInfoIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProtocolManage/protocolInfoIndex", in, out, opts...) if err != nil { return nil, err } @@ -2373,7 +2291,7 @@ func (c *protocolManageClient) ProtocolInfoIndex(ctx context.Context, in *Protoc func (c *protocolManageClient) ProtocolInfoRead(ctx context.Context, in *WithIDCode, opts ...grpc.CallOption) (*ProtocolInfo, error) { out := new(ProtocolInfo) - err := c.cc.Invoke(ctx, ProtocolManage_ProtocolInfoRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProtocolManage/protocolInfoRead", in, out, opts...) if err != nil { return nil, err } @@ -2382,7 +2300,7 @@ func (c *protocolManageClient) ProtocolInfoRead(ctx context.Context, in *WithIDC func (c *protocolManageClient) ProtocolInfoCreate(ctx context.Context, in *ProtocolInfo, opts ...grpc.CallOption) (*WithID, error) { out := new(WithID) - err := c.cc.Invoke(ctx, ProtocolManage_ProtocolInfoCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProtocolManage/protocolInfoCreate", in, out, opts...) if err != nil { return nil, err } @@ -2391,7 +2309,7 @@ func (c *protocolManageClient) ProtocolInfoCreate(ctx context.Context, in *Proto func (c *protocolManageClient) ProtocolInfoUpdate(ctx context.Context, in *ProtocolInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProtocolManage_ProtocolInfoUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProtocolManage/protocolInfoUpdate", in, out, opts...) if err != nil { return nil, err } @@ -2400,7 +2318,7 @@ func (c *protocolManageClient) ProtocolInfoUpdate(ctx context.Context, in *Proto func (c *protocolManageClient) ProtocolInfoDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProtocolManage_ProtocolInfoDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProtocolManage/protocolInfoDelete", in, out, opts...) if err != nil { return nil, err } @@ -2409,7 +2327,7 @@ func (c *protocolManageClient) ProtocolInfoDelete(ctx context.Context, in *WithI func (c *protocolManageClient) ProtocolServiceUpdate(ctx context.Context, in *ProtocolService, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProtocolManage_ProtocolServiceUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProtocolManage/protocolServiceUpdate", in, out, opts...) if err != nil { return nil, err } @@ -2418,7 +2336,7 @@ func (c *protocolManageClient) ProtocolServiceUpdate(ctx context.Context, in *Pr func (c *protocolManageClient) ProtocolServiceDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, ProtocolManage_ProtocolServiceDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProtocolManage/protocolServiceDelete", in, out, opts...) if err != nil { return nil, err } @@ -2427,7 +2345,7 @@ func (c *protocolManageClient) ProtocolServiceDelete(ctx context.Context, in *Wi func (c *protocolManageClient) ProtocolServiceIndex(ctx context.Context, in *ProtocolServiceIndexReq, opts ...grpc.CallOption) (*ProtocolServiceIndexResp, error) { out := new(ProtocolServiceIndexResp) - err := c.cc.Invoke(ctx, ProtocolManage_ProtocolServiceIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.ProtocolManage/protocolServiceIndex", in, out, opts...) if err != nil { return nil, err } @@ -2438,17 +2356,17 @@ func (c *protocolManageClient) ProtocolServiceIndex(ctx context.Context, in *Pro // All implementations must embed UnimplementedProtocolManageServer // for forward compatibility type ProtocolManageServer interface { - // 协议列表 + //协议列表 ProtocolInfoIndex(context.Context, *ProtocolInfoIndexReq) (*ProtocolInfoIndexResp, error) - // 协议详情 + //协议详情 ProtocolInfoRead(context.Context, *WithIDCode) (*ProtocolInfo, error) - // 协议创建 + //协议创建 ProtocolInfoCreate(context.Context, *ProtocolInfo) (*WithID, error) - // 协议更新 + //协议更新 ProtocolInfoUpdate(context.Context, *ProtocolInfo) (*Empty, error) - // 协议删除 + //协议删除 ProtocolInfoDelete(context.Context, *WithID) (*Empty, error) - // 更新服务状态,只给服务调用 + //更新服务状态,只给服务调用 ProtocolServiceUpdate(context.Context, *ProtocolService) (*Empty, error) ProtocolServiceDelete(context.Context, *WithID) (*Empty, error) ProtocolServiceIndex(context.Context, *ProtocolServiceIndexReq) (*ProtocolServiceIndexResp, error) @@ -2506,7 +2424,7 @@ func _ProtocolManage_ProtocolInfoIndex_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProtocolManage_ProtocolInfoIndex_FullMethodName, + FullMethod: "/dm.ProtocolManage/protocolInfoIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProtocolManageServer).ProtocolInfoIndex(ctx, req.(*ProtocolInfoIndexReq)) @@ -2524,7 +2442,7 @@ func _ProtocolManage_ProtocolInfoRead_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProtocolManage_ProtocolInfoRead_FullMethodName, + FullMethod: "/dm.ProtocolManage/protocolInfoRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProtocolManageServer).ProtocolInfoRead(ctx, req.(*WithIDCode)) @@ -2542,7 +2460,7 @@ func _ProtocolManage_ProtocolInfoCreate_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProtocolManage_ProtocolInfoCreate_FullMethodName, + FullMethod: "/dm.ProtocolManage/protocolInfoCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProtocolManageServer).ProtocolInfoCreate(ctx, req.(*ProtocolInfo)) @@ -2560,7 +2478,7 @@ func _ProtocolManage_ProtocolInfoUpdate_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProtocolManage_ProtocolInfoUpdate_FullMethodName, + FullMethod: "/dm.ProtocolManage/protocolInfoUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProtocolManageServer).ProtocolInfoUpdate(ctx, req.(*ProtocolInfo)) @@ -2578,7 +2496,7 @@ func _ProtocolManage_ProtocolInfoDelete_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProtocolManage_ProtocolInfoDelete_FullMethodName, + FullMethod: "/dm.ProtocolManage/protocolInfoDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProtocolManageServer).ProtocolInfoDelete(ctx, req.(*WithID)) @@ -2596,7 +2514,7 @@ func _ProtocolManage_ProtocolServiceUpdate_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProtocolManage_ProtocolServiceUpdate_FullMethodName, + FullMethod: "/dm.ProtocolManage/protocolServiceUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProtocolManageServer).ProtocolServiceUpdate(ctx, req.(*ProtocolService)) @@ -2614,7 +2532,7 @@ func _ProtocolManage_ProtocolServiceDelete_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProtocolManage_ProtocolServiceDelete_FullMethodName, + FullMethod: "/dm.ProtocolManage/protocolServiceDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProtocolManageServer).ProtocolServiceDelete(ctx, req.(*WithID)) @@ -2632,7 +2550,7 @@ func _ProtocolManage_ProtocolServiceIndex_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProtocolManage_ProtocolServiceIndex_FullMethodName, + FullMethod: "/dm.ProtocolManage/protocolServiceIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ProtocolManageServer).ProtocolServiceIndex(ctx, req.(*ProtocolServiceIndexReq)) @@ -2684,39 +2602,27 @@ var ProtocolManage_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - DeviceGroup_GroupInfoCreate_FullMethodName = "/dm.DeviceGroup/groupInfoCreate" - DeviceGroup_GroupInfoIndex_FullMethodName = "/dm.DeviceGroup/groupInfoIndex" - DeviceGroup_GroupInfoRead_FullMethodName = "/dm.DeviceGroup/groupInfoRead" - DeviceGroup_GroupInfoUpdate_FullMethodName = "/dm.DeviceGroup/groupInfoUpdate" - DeviceGroup_GroupInfoDelete_FullMethodName = "/dm.DeviceGroup/groupInfoDelete" - DeviceGroup_GroupDeviceMultiCreate_FullMethodName = "/dm.DeviceGroup/groupDeviceMultiCreate" - DeviceGroup_GroupDeviceMultiUpdate_FullMethodName = "/dm.DeviceGroup/groupDeviceMultiUpdate" - DeviceGroup_GroupDeviceIndex_FullMethodName = "/dm.DeviceGroup/groupDeviceIndex" - DeviceGroup_GroupDeviceMultiDelete_FullMethodName = "/dm.DeviceGroup/groupDeviceMultiDelete" -) - // DeviceGroupClient is the client API for DeviceGroup service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type DeviceGroupClient interface { - // 创建分组 + //创建分组 GroupInfoCreate(ctx context.Context, in *GroupInfo, opts ...grpc.CallOption) (*WithID, error) - // 获取分组信息列表 + //获取分组信息列表 GroupInfoIndex(ctx context.Context, in *GroupInfoIndexReq, opts ...grpc.CallOption) (*GroupInfoIndexResp, error) - // 获取分组信息详情 + //获取分组信息详情 GroupInfoRead(ctx context.Context, in *WithIDChildren, opts ...grpc.CallOption) (*GroupInfo, error) - // 更新分组 + //更新分组 GroupInfoUpdate(ctx context.Context, in *GroupInfo, opts ...grpc.CallOption) (*Empty, error) - // 删除分组 + //删除分组 GroupInfoDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) - // 创建分组设备 + //创建分组设备 GroupDeviceMultiCreate(ctx context.Context, in *GroupDeviceMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) - // 更新分组设备 + //更新分组设备 GroupDeviceMultiUpdate(ctx context.Context, in *GroupDeviceMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) - // 获取分组设备信息列表 + //获取分组设备信息列表 GroupDeviceIndex(ctx context.Context, in *GroupDeviceIndexReq, opts ...grpc.CallOption) (*GroupDeviceIndexResp, error) - // 删除分组设备 + //删除分组设备 GroupDeviceMultiDelete(ctx context.Context, in *GroupDeviceMultiDeleteReq, opts ...grpc.CallOption) (*Empty, error) } @@ -2730,7 +2636,7 @@ func NewDeviceGroupClient(cc grpc.ClientConnInterface) DeviceGroupClient { func (c *deviceGroupClient) GroupInfoCreate(ctx context.Context, in *GroupInfo, opts ...grpc.CallOption) (*WithID, error) { out := new(WithID) - err := c.cc.Invoke(ctx, DeviceGroup_GroupInfoCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupInfoCreate", in, out, opts...) if err != nil { return nil, err } @@ -2739,7 +2645,7 @@ func (c *deviceGroupClient) GroupInfoCreate(ctx context.Context, in *GroupInfo, func (c *deviceGroupClient) GroupInfoIndex(ctx context.Context, in *GroupInfoIndexReq, opts ...grpc.CallOption) (*GroupInfoIndexResp, error) { out := new(GroupInfoIndexResp) - err := c.cc.Invoke(ctx, DeviceGroup_GroupInfoIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupInfoIndex", in, out, opts...) if err != nil { return nil, err } @@ -2748,7 +2654,7 @@ func (c *deviceGroupClient) GroupInfoIndex(ctx context.Context, in *GroupInfoInd func (c *deviceGroupClient) GroupInfoRead(ctx context.Context, in *WithIDChildren, opts ...grpc.CallOption) (*GroupInfo, error) { out := new(GroupInfo) - err := c.cc.Invoke(ctx, DeviceGroup_GroupInfoRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupInfoRead", in, out, opts...) if err != nil { return nil, err } @@ -2757,7 +2663,7 @@ func (c *deviceGroupClient) GroupInfoRead(ctx context.Context, in *WithIDChildre func (c *deviceGroupClient) GroupInfoUpdate(ctx context.Context, in *GroupInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceGroup_GroupInfoUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupInfoUpdate", in, out, opts...) if err != nil { return nil, err } @@ -2766,7 +2672,7 @@ func (c *deviceGroupClient) GroupInfoUpdate(ctx context.Context, in *GroupInfo, func (c *deviceGroupClient) GroupInfoDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceGroup_GroupInfoDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupInfoDelete", in, out, opts...) if err != nil { return nil, err } @@ -2775,7 +2681,7 @@ func (c *deviceGroupClient) GroupInfoDelete(ctx context.Context, in *WithID, opt func (c *deviceGroupClient) GroupDeviceMultiCreate(ctx context.Context, in *GroupDeviceMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceGroup_GroupDeviceMultiCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupDeviceMultiCreate", in, out, opts...) if err != nil { return nil, err } @@ -2784,7 +2690,7 @@ func (c *deviceGroupClient) GroupDeviceMultiCreate(ctx context.Context, in *Grou func (c *deviceGroupClient) GroupDeviceMultiUpdate(ctx context.Context, in *GroupDeviceMultiSaveReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceGroup_GroupDeviceMultiUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupDeviceMultiUpdate", in, out, opts...) if err != nil { return nil, err } @@ -2793,7 +2699,7 @@ func (c *deviceGroupClient) GroupDeviceMultiUpdate(ctx context.Context, in *Grou func (c *deviceGroupClient) GroupDeviceIndex(ctx context.Context, in *GroupDeviceIndexReq, opts ...grpc.CallOption) (*GroupDeviceIndexResp, error) { out := new(GroupDeviceIndexResp) - err := c.cc.Invoke(ctx, DeviceGroup_GroupDeviceIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupDeviceIndex", in, out, opts...) if err != nil { return nil, err } @@ -2802,7 +2708,7 @@ func (c *deviceGroupClient) GroupDeviceIndex(ctx context.Context, in *GroupDevic func (c *deviceGroupClient) GroupDeviceMultiDelete(ctx context.Context, in *GroupDeviceMultiDeleteReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceGroup_GroupDeviceMultiDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceGroup/groupDeviceMultiDelete", in, out, opts...) if err != nil { return nil, err } @@ -2813,23 +2719,23 @@ func (c *deviceGroupClient) GroupDeviceMultiDelete(ctx context.Context, in *Grou // All implementations must embed UnimplementedDeviceGroupServer // for forward compatibility type DeviceGroupServer interface { - // 创建分组 + //创建分组 GroupInfoCreate(context.Context, *GroupInfo) (*WithID, error) - // 获取分组信息列表 + //获取分组信息列表 GroupInfoIndex(context.Context, *GroupInfoIndexReq) (*GroupInfoIndexResp, error) - // 获取分组信息详情 + //获取分组信息详情 GroupInfoRead(context.Context, *WithIDChildren) (*GroupInfo, error) - // 更新分组 + //更新分组 GroupInfoUpdate(context.Context, *GroupInfo) (*Empty, error) - // 删除分组 + //删除分组 GroupInfoDelete(context.Context, *WithID) (*Empty, error) - // 创建分组设备 + //创建分组设备 GroupDeviceMultiCreate(context.Context, *GroupDeviceMultiSaveReq) (*Empty, error) - // 更新分组设备 + //更新分组设备 GroupDeviceMultiUpdate(context.Context, *GroupDeviceMultiSaveReq) (*Empty, error) - // 获取分组设备信息列表 + //获取分组设备信息列表 GroupDeviceIndex(context.Context, *GroupDeviceIndexReq) (*GroupDeviceIndexResp, error) - // 删除分组设备 + //删除分组设备 GroupDeviceMultiDelete(context.Context, *GroupDeviceMultiDeleteReq) (*Empty, error) mustEmbedUnimplementedDeviceGroupServer() } @@ -2888,7 +2794,7 @@ func _DeviceGroup_GroupInfoCreate_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupInfoCreate_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupInfoCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupInfoCreate(ctx, req.(*GroupInfo)) @@ -2906,7 +2812,7 @@ func _DeviceGroup_GroupInfoIndex_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupInfoIndex_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupInfoIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupInfoIndex(ctx, req.(*GroupInfoIndexReq)) @@ -2924,7 +2830,7 @@ func _DeviceGroup_GroupInfoRead_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupInfoRead_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupInfoRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupInfoRead(ctx, req.(*WithIDChildren)) @@ -2942,7 +2848,7 @@ func _DeviceGroup_GroupInfoUpdate_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupInfoUpdate_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupInfoUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupInfoUpdate(ctx, req.(*GroupInfo)) @@ -2960,7 +2866,7 @@ func _DeviceGroup_GroupInfoDelete_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupInfoDelete_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupInfoDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupInfoDelete(ctx, req.(*WithID)) @@ -2978,7 +2884,7 @@ func _DeviceGroup_GroupDeviceMultiCreate_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupDeviceMultiCreate_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupDeviceMultiCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupDeviceMultiCreate(ctx, req.(*GroupDeviceMultiSaveReq)) @@ -2996,7 +2902,7 @@ func _DeviceGroup_GroupDeviceMultiUpdate_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupDeviceMultiUpdate_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupDeviceMultiUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupDeviceMultiUpdate(ctx, req.(*GroupDeviceMultiSaveReq)) @@ -3014,7 +2920,7 @@ func _DeviceGroup_GroupDeviceIndex_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupDeviceIndex_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupDeviceIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupDeviceIndex(ctx, req.(*GroupDeviceIndexReq)) @@ -3032,7 +2938,7 @@ func _DeviceGroup_GroupDeviceMultiDelete_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceGroup_GroupDeviceMultiDelete_FullMethodName, + FullMethod: "/dm.DeviceGroup/groupDeviceMultiDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceGroupServer).GroupDeviceMultiDelete(ctx, req.(*GroupDeviceMultiDeleteReq)) @@ -3088,13 +2994,6 @@ var DeviceGroup_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - RemoteConfig_RemoteConfigCreate_FullMethodName = "/dm.RemoteConfig/RemoteConfigCreate" - RemoteConfig_RemoteConfigIndex_FullMethodName = "/dm.RemoteConfig/RemoteConfigIndex" - RemoteConfig_RemoteConfigPushAll_FullMethodName = "/dm.RemoteConfig/RemoteConfigPushAll" - RemoteConfig_RemoteConfigLastRead_FullMethodName = "/dm.RemoteConfig/RemoteConfigLastRead" -) - // RemoteConfigClient is the client API for RemoteConfig service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -3115,7 +3014,7 @@ func NewRemoteConfigClient(cc grpc.ClientConnInterface) RemoteConfigClient { func (c *remoteConfigClient) RemoteConfigCreate(ctx context.Context, in *RemoteConfigCreateReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, RemoteConfig_RemoteConfigCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.RemoteConfig/RemoteConfigCreate", in, out, opts...) if err != nil { return nil, err } @@ -3124,7 +3023,7 @@ func (c *remoteConfigClient) RemoteConfigCreate(ctx context.Context, in *RemoteC func (c *remoteConfigClient) RemoteConfigIndex(ctx context.Context, in *RemoteConfigIndexReq, opts ...grpc.CallOption) (*RemoteConfigIndexResp, error) { out := new(RemoteConfigIndexResp) - err := c.cc.Invoke(ctx, RemoteConfig_RemoteConfigIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.RemoteConfig/RemoteConfigIndex", in, out, opts...) if err != nil { return nil, err } @@ -3133,7 +3032,7 @@ func (c *remoteConfigClient) RemoteConfigIndex(ctx context.Context, in *RemoteCo func (c *remoteConfigClient) RemoteConfigPushAll(ctx context.Context, in *RemoteConfigPushAllReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, RemoteConfig_RemoteConfigPushAll_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.RemoteConfig/RemoteConfigPushAll", in, out, opts...) if err != nil { return nil, err } @@ -3142,7 +3041,7 @@ func (c *remoteConfigClient) RemoteConfigPushAll(ctx context.Context, in *Remote func (c *remoteConfigClient) RemoteConfigLastRead(ctx context.Context, in *RemoteConfigLastReadReq, opts ...grpc.CallOption) (*RemoteConfigLastReadResp, error) { out := new(RemoteConfigLastReadResp) - err := c.cc.Invoke(ctx, RemoteConfig_RemoteConfigLastRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.RemoteConfig/RemoteConfigLastRead", in, out, opts...) if err != nil { return nil, err } @@ -3199,7 +3098,7 @@ func _RemoteConfig_RemoteConfigCreate_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: RemoteConfig_RemoteConfigCreate_FullMethodName, + FullMethod: "/dm.RemoteConfig/RemoteConfigCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RemoteConfigServer).RemoteConfigCreate(ctx, req.(*RemoteConfigCreateReq)) @@ -3217,7 +3116,7 @@ func _RemoteConfig_RemoteConfigIndex_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: RemoteConfig_RemoteConfigIndex_FullMethodName, + FullMethod: "/dm.RemoteConfig/RemoteConfigIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RemoteConfigServer).RemoteConfigIndex(ctx, req.(*RemoteConfigIndexReq)) @@ -3235,7 +3134,7 @@ func _RemoteConfig_RemoteConfigPushAll_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: RemoteConfig_RemoteConfigPushAll_FullMethodName, + FullMethod: "/dm.RemoteConfig/RemoteConfigPushAll", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RemoteConfigServer).RemoteConfigPushAll(ctx, req.(*RemoteConfigPushAllReq)) @@ -3253,7 +3152,7 @@ func _RemoteConfig_RemoteConfigLastRead_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: RemoteConfig_RemoteConfigLastRead_FullMethodName, + FullMethod: "/dm.RemoteConfig/RemoteConfigLastRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RemoteConfigServer).RemoteConfigLastRead(ctx, req.(*RemoteConfigLastReadReq)) @@ -3289,37 +3188,25 @@ var RemoteConfig_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - DeviceMsg_SdkLogIndex_FullMethodName = "/dm.DeviceMsg/sdkLogIndex" - DeviceMsg_HubLogIndex_FullMethodName = "/dm.DeviceMsg/hubLogIndex" - DeviceMsg_SendLogIndex_FullMethodName = "/dm.DeviceMsg/sendLogIndex" - DeviceMsg_StatusLogIndex_FullMethodName = "/dm.DeviceMsg/statusLogIndex" - DeviceMsg_PropertyLogLatestIndex_FullMethodName = "/dm.DeviceMsg/propertyLogLatestIndex" - DeviceMsg_PropertyLogIndex_FullMethodName = "/dm.DeviceMsg/propertyLogIndex" - DeviceMsg_EventLogIndex_FullMethodName = "/dm.DeviceMsg/eventLogIndex" - DeviceMsg_ShadowIndex_FullMethodName = "/dm.DeviceMsg/shadowIndex" - DeviceMsg_GatewayCanBindIndex_FullMethodName = "/dm.DeviceMsg/gatewayCanBindIndex" -) - // DeviceMsgClient is the client API for DeviceMsg service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type DeviceMsgClient interface { - // 获取设备sdk调试日志 + //获取设备sdk调试日志 SdkLogIndex(ctx context.Context, in *SdkLogIndexReq, opts ...grpc.CallOption) (*SdkLogIndexResp, error) - // 获取设备调试信息记录登入登出,操作 + //获取设备调试信息记录登入登出,操作 HubLogIndex(ctx context.Context, in *HubLogIndexReq, opts ...grpc.CallOption) (*HubLogIndexResp, error) SendLogIndex(ctx context.Context, in *SendLogIndexReq, opts ...grpc.CallOption) (*SendLogIndexResp, error) StatusLogIndex(ctx context.Context, in *StatusLogIndexReq, opts ...grpc.CallOption) (*StatusLogIndexResp, error) - // 获取设备数据信息 + //获取设备数据信息 PropertyLogLatestIndex(ctx context.Context, in *PropertyLogLatestIndexReq, opts ...grpc.CallOption) (*PropertyLogIndexResp, error) - // 获取设备数据信息 + //获取设备数据信息 PropertyLogIndex(ctx context.Context, in *PropertyLogIndexReq, opts ...grpc.CallOption) (*PropertyLogIndexResp, error) - // 获取设备数据信息 + //获取设备数据信息 EventLogIndex(ctx context.Context, in *EventLogIndexReq, opts ...grpc.CallOption) (*EventLogIndexResp, error) - // 获取设备影子列表 + //获取设备影子列表 ShadowIndex(ctx context.Context, in *PropertyLogLatestIndexReq, opts ...grpc.CallOption) (*ShadowIndexResp, error) - // 获取网关可以绑定的子设备列表 + //获取网关可以绑定的子设备列表 GatewayCanBindIndex(ctx context.Context, in *GatewayCanBindIndexReq, opts ...grpc.CallOption) (*GatewayCanBindIndexResp, error) } @@ -3333,7 +3220,7 @@ func NewDeviceMsgClient(cc grpc.ClientConnInterface) DeviceMsgClient { func (c *deviceMsgClient) SdkLogIndex(ctx context.Context, in *SdkLogIndexReq, opts ...grpc.CallOption) (*SdkLogIndexResp, error) { out := new(SdkLogIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_SdkLogIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/sdkLogIndex", in, out, opts...) if err != nil { return nil, err } @@ -3342,7 +3229,7 @@ func (c *deviceMsgClient) SdkLogIndex(ctx context.Context, in *SdkLogIndexReq, o func (c *deviceMsgClient) HubLogIndex(ctx context.Context, in *HubLogIndexReq, opts ...grpc.CallOption) (*HubLogIndexResp, error) { out := new(HubLogIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_HubLogIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/hubLogIndex", in, out, opts...) if err != nil { return nil, err } @@ -3351,7 +3238,7 @@ func (c *deviceMsgClient) HubLogIndex(ctx context.Context, in *HubLogIndexReq, o func (c *deviceMsgClient) SendLogIndex(ctx context.Context, in *SendLogIndexReq, opts ...grpc.CallOption) (*SendLogIndexResp, error) { out := new(SendLogIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_SendLogIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/sendLogIndex", in, out, opts...) if err != nil { return nil, err } @@ -3360,7 +3247,7 @@ func (c *deviceMsgClient) SendLogIndex(ctx context.Context, in *SendLogIndexReq, func (c *deviceMsgClient) StatusLogIndex(ctx context.Context, in *StatusLogIndexReq, opts ...grpc.CallOption) (*StatusLogIndexResp, error) { out := new(StatusLogIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_StatusLogIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/statusLogIndex", in, out, opts...) if err != nil { return nil, err } @@ -3369,7 +3256,7 @@ func (c *deviceMsgClient) StatusLogIndex(ctx context.Context, in *StatusLogIndex func (c *deviceMsgClient) PropertyLogLatestIndex(ctx context.Context, in *PropertyLogLatestIndexReq, opts ...grpc.CallOption) (*PropertyLogIndexResp, error) { out := new(PropertyLogIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_PropertyLogLatestIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/propertyLogLatestIndex", in, out, opts...) if err != nil { return nil, err } @@ -3378,7 +3265,7 @@ func (c *deviceMsgClient) PropertyLogLatestIndex(ctx context.Context, in *Proper func (c *deviceMsgClient) PropertyLogIndex(ctx context.Context, in *PropertyLogIndexReq, opts ...grpc.CallOption) (*PropertyLogIndexResp, error) { out := new(PropertyLogIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_PropertyLogIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/propertyLogIndex", in, out, opts...) if err != nil { return nil, err } @@ -3387,7 +3274,7 @@ func (c *deviceMsgClient) PropertyLogIndex(ctx context.Context, in *PropertyLogI func (c *deviceMsgClient) EventLogIndex(ctx context.Context, in *EventLogIndexReq, opts ...grpc.CallOption) (*EventLogIndexResp, error) { out := new(EventLogIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_EventLogIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/eventLogIndex", in, out, opts...) if err != nil { return nil, err } @@ -3396,7 +3283,7 @@ func (c *deviceMsgClient) EventLogIndex(ctx context.Context, in *EventLogIndexRe func (c *deviceMsgClient) ShadowIndex(ctx context.Context, in *PropertyLogLatestIndexReq, opts ...grpc.CallOption) (*ShadowIndexResp, error) { out := new(ShadowIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_ShadowIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/shadowIndex", in, out, opts...) if err != nil { return nil, err } @@ -3405,7 +3292,7 @@ func (c *deviceMsgClient) ShadowIndex(ctx context.Context, in *PropertyLogLatest func (c *deviceMsgClient) GatewayCanBindIndex(ctx context.Context, in *GatewayCanBindIndexReq, opts ...grpc.CallOption) (*GatewayCanBindIndexResp, error) { out := new(GatewayCanBindIndexResp) - err := c.cc.Invoke(ctx, DeviceMsg_GatewayCanBindIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceMsg/gatewayCanBindIndex", in, out, opts...) if err != nil { return nil, err } @@ -3416,21 +3303,21 @@ func (c *deviceMsgClient) GatewayCanBindIndex(ctx context.Context, in *GatewayCa // All implementations must embed UnimplementedDeviceMsgServer // for forward compatibility type DeviceMsgServer interface { - // 获取设备sdk调试日志 + //获取设备sdk调试日志 SdkLogIndex(context.Context, *SdkLogIndexReq) (*SdkLogIndexResp, error) - // 获取设备调试信息记录登入登出,操作 + //获取设备调试信息记录登入登出,操作 HubLogIndex(context.Context, *HubLogIndexReq) (*HubLogIndexResp, error) SendLogIndex(context.Context, *SendLogIndexReq) (*SendLogIndexResp, error) StatusLogIndex(context.Context, *StatusLogIndexReq) (*StatusLogIndexResp, error) - // 获取设备数据信息 + //获取设备数据信息 PropertyLogLatestIndex(context.Context, *PropertyLogLatestIndexReq) (*PropertyLogIndexResp, error) - // 获取设备数据信息 + //获取设备数据信息 PropertyLogIndex(context.Context, *PropertyLogIndexReq) (*PropertyLogIndexResp, error) - // 获取设备数据信息 + //获取设备数据信息 EventLogIndex(context.Context, *EventLogIndexReq) (*EventLogIndexResp, error) - // 获取设备影子列表 + //获取设备影子列表 ShadowIndex(context.Context, *PropertyLogLatestIndexReq) (*ShadowIndexResp, error) - // 获取网关可以绑定的子设备列表 + //获取网关可以绑定的子设备列表 GatewayCanBindIndex(context.Context, *GatewayCanBindIndexReq) (*GatewayCanBindIndexResp, error) mustEmbedUnimplementedDeviceMsgServer() } @@ -3489,7 +3376,7 @@ func _DeviceMsg_SdkLogIndex_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_SdkLogIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/sdkLogIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).SdkLogIndex(ctx, req.(*SdkLogIndexReq)) @@ -3507,7 +3394,7 @@ func _DeviceMsg_HubLogIndex_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_HubLogIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/hubLogIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).HubLogIndex(ctx, req.(*HubLogIndexReq)) @@ -3525,7 +3412,7 @@ func _DeviceMsg_SendLogIndex_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_SendLogIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/sendLogIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).SendLogIndex(ctx, req.(*SendLogIndexReq)) @@ -3543,7 +3430,7 @@ func _DeviceMsg_StatusLogIndex_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_StatusLogIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/statusLogIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).StatusLogIndex(ctx, req.(*StatusLogIndexReq)) @@ -3561,7 +3448,7 @@ func _DeviceMsg_PropertyLogLatestIndex_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_PropertyLogLatestIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/propertyLogLatestIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).PropertyLogLatestIndex(ctx, req.(*PropertyLogLatestIndexReq)) @@ -3579,7 +3466,7 @@ func _DeviceMsg_PropertyLogIndex_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_PropertyLogIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/propertyLogIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).PropertyLogIndex(ctx, req.(*PropertyLogIndexReq)) @@ -3597,7 +3484,7 @@ func _DeviceMsg_EventLogIndex_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_EventLogIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/eventLogIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).EventLogIndex(ctx, req.(*EventLogIndexReq)) @@ -3615,7 +3502,7 @@ func _DeviceMsg_ShadowIndex_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_ShadowIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/shadowIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).ShadowIndex(ctx, req.(*PropertyLogLatestIndexReq)) @@ -3633,7 +3520,7 @@ func _DeviceMsg_GatewayCanBindIndex_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceMsg_GatewayCanBindIndex_FullMethodName, + FullMethod: "/dm.DeviceMsg/gatewayCanBindIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceMsgServer).GatewayCanBindIndex(ctx, req.(*GatewayCanBindIndexReq)) @@ -3689,42 +3576,29 @@ var DeviceMsg_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - DeviceInteract_ActionSend_FullMethodName = "/dm.DeviceInteract/actionSend" - DeviceInteract_ActionRead_FullMethodName = "/dm.DeviceInteract/actionRead" - DeviceInteract_ActionResp_FullMethodName = "/dm.DeviceInteract/actionResp" - DeviceInteract_PropertyGetReportSend_FullMethodName = "/dm.DeviceInteract/propertyGetReportSend" - DeviceInteract_PropertyControlSend_FullMethodName = "/dm.DeviceInteract/propertyControlSend" - DeviceInteract_PropertyControlMultiSend_FullMethodName = "/dm.DeviceInteract/propertyControlMultiSend" - DeviceInteract_PropertyControlRead_FullMethodName = "/dm.DeviceInteract/propertyControlRead" - DeviceInteract_SendMsg_FullMethodName = "/dm.DeviceInteract/sendMsg" - DeviceInteract_GatewayGetFoundSend_FullMethodName = "/dm.DeviceInteract/gatewayGetFoundSend" - DeviceInteract_GatewayNotifyBindSend_FullMethodName = "/dm.DeviceInteract/gatewayNotifyBindSend" -) - // DeviceInteractClient is the client API for DeviceInteract service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type DeviceInteractClient interface { - // 调用设备行为 + //调用设备行为 ActionSend(ctx context.Context, in *ActionSendReq, opts ...grpc.CallOption) (*ActionSendResp, error) - // 获取异步调用设备行为的结果 + //获取异步调用设备行为的结果 ActionRead(ctx context.Context, in *RespReadReq, opts ...grpc.CallOption) (*ActionSendResp, error) - // 回复调用设备行为 + //回复调用设备行为 ActionResp(ctx context.Context, in *ActionRespReq, opts ...grpc.CallOption) (*Empty, error) - // 请求设备获取设备最新属性 + //请求设备获取设备最新属性 PropertyGetReportSend(ctx context.Context, in *PropertyGetReportSendReq, opts ...grpc.CallOption) (*PropertyGetReportSendResp, error) - // 调用设备属性 + //调用设备属性 PropertyControlSend(ctx context.Context, in *PropertyControlSendReq, opts ...grpc.CallOption) (*PropertyControlSendResp, error) - // 批量调用设备属性 + //批量调用设备属性 PropertyControlMultiSend(ctx context.Context, in *PropertyControlMultiSendReq, opts ...grpc.CallOption) (*PropertyControlMultiSendResp, error) - // 获取异步调用设备属性的结果 + //获取异步调用设备属性的结果 PropertyControlRead(ctx context.Context, in *RespReadReq, opts ...grpc.CallOption) (*PropertyControlSendResp, error) - // 发送消息给设备 -- 调试使用 + //发送消息给设备 -- 调试使用 SendMsg(ctx context.Context, in *SendMsgReq, opts ...grpc.CallOption) (*SendMsgResp, error) - // 获取网关拓扑关系 + //获取网关拓扑关系 GatewayGetFoundSend(ctx context.Context, in *GatewayGetFoundReq, opts ...grpc.CallOption) (*Empty, error) - // 通知网关绑定子设备 + //通知网关绑定子设备 GatewayNotifyBindSend(ctx context.Context, in *GatewayNotifyBindSendReq, opts ...grpc.CallOption) (*Empty, error) } @@ -3738,7 +3612,7 @@ func NewDeviceInteractClient(cc grpc.ClientConnInterface) DeviceInteractClient { func (c *deviceInteractClient) ActionSend(ctx context.Context, in *ActionSendReq, opts ...grpc.CallOption) (*ActionSendResp, error) { out := new(ActionSendResp) - err := c.cc.Invoke(ctx, DeviceInteract_ActionSend_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/actionSend", in, out, opts...) if err != nil { return nil, err } @@ -3747,7 +3621,7 @@ func (c *deviceInteractClient) ActionSend(ctx context.Context, in *ActionSendReq func (c *deviceInteractClient) ActionRead(ctx context.Context, in *RespReadReq, opts ...grpc.CallOption) (*ActionSendResp, error) { out := new(ActionSendResp) - err := c.cc.Invoke(ctx, DeviceInteract_ActionRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/actionRead", in, out, opts...) if err != nil { return nil, err } @@ -3756,7 +3630,7 @@ func (c *deviceInteractClient) ActionRead(ctx context.Context, in *RespReadReq, func (c *deviceInteractClient) ActionResp(ctx context.Context, in *ActionRespReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceInteract_ActionResp_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/actionResp", in, out, opts...) if err != nil { return nil, err } @@ -3765,7 +3639,7 @@ func (c *deviceInteractClient) ActionResp(ctx context.Context, in *ActionRespReq func (c *deviceInteractClient) PropertyGetReportSend(ctx context.Context, in *PropertyGetReportSendReq, opts ...grpc.CallOption) (*PropertyGetReportSendResp, error) { out := new(PropertyGetReportSendResp) - err := c.cc.Invoke(ctx, DeviceInteract_PropertyGetReportSend_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/propertyGetReportSend", in, out, opts...) if err != nil { return nil, err } @@ -3774,7 +3648,7 @@ func (c *deviceInteractClient) PropertyGetReportSend(ctx context.Context, in *Pr func (c *deviceInteractClient) PropertyControlSend(ctx context.Context, in *PropertyControlSendReq, opts ...grpc.CallOption) (*PropertyControlSendResp, error) { out := new(PropertyControlSendResp) - err := c.cc.Invoke(ctx, DeviceInteract_PropertyControlSend_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/propertyControlSend", in, out, opts...) if err != nil { return nil, err } @@ -3783,7 +3657,7 @@ func (c *deviceInteractClient) PropertyControlSend(ctx context.Context, in *Prop func (c *deviceInteractClient) PropertyControlMultiSend(ctx context.Context, in *PropertyControlMultiSendReq, opts ...grpc.CallOption) (*PropertyControlMultiSendResp, error) { out := new(PropertyControlMultiSendResp) - err := c.cc.Invoke(ctx, DeviceInteract_PropertyControlMultiSend_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/propertyControlMultiSend", in, out, opts...) if err != nil { return nil, err } @@ -3792,7 +3666,7 @@ func (c *deviceInteractClient) PropertyControlMultiSend(ctx context.Context, in func (c *deviceInteractClient) PropertyControlRead(ctx context.Context, in *RespReadReq, opts ...grpc.CallOption) (*PropertyControlSendResp, error) { out := new(PropertyControlSendResp) - err := c.cc.Invoke(ctx, DeviceInteract_PropertyControlRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/propertyControlRead", in, out, opts...) if err != nil { return nil, err } @@ -3801,7 +3675,7 @@ func (c *deviceInteractClient) PropertyControlRead(ctx context.Context, in *Resp func (c *deviceInteractClient) SendMsg(ctx context.Context, in *SendMsgReq, opts ...grpc.CallOption) (*SendMsgResp, error) { out := new(SendMsgResp) - err := c.cc.Invoke(ctx, DeviceInteract_SendMsg_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/sendMsg", in, out, opts...) if err != nil { return nil, err } @@ -3810,7 +3684,7 @@ func (c *deviceInteractClient) SendMsg(ctx context.Context, in *SendMsgReq, opts func (c *deviceInteractClient) GatewayGetFoundSend(ctx context.Context, in *GatewayGetFoundReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceInteract_GatewayGetFoundSend_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/gatewayGetFoundSend", in, out, opts...) if err != nil { return nil, err } @@ -3819,7 +3693,7 @@ func (c *deviceInteractClient) GatewayGetFoundSend(ctx context.Context, in *Gate func (c *deviceInteractClient) GatewayNotifyBindSend(ctx context.Context, in *GatewayNotifyBindSendReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, DeviceInteract_GatewayNotifyBindSend_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.DeviceInteract/gatewayNotifyBindSend", in, out, opts...) if err != nil { return nil, err } @@ -3830,25 +3704,25 @@ func (c *deviceInteractClient) GatewayNotifyBindSend(ctx context.Context, in *Ga // All implementations must embed UnimplementedDeviceInteractServer // for forward compatibility type DeviceInteractServer interface { - // 调用设备行为 + //调用设备行为 ActionSend(context.Context, *ActionSendReq) (*ActionSendResp, error) - // 获取异步调用设备行为的结果 + //获取异步调用设备行为的结果 ActionRead(context.Context, *RespReadReq) (*ActionSendResp, error) - // 回复调用设备行为 + //回复调用设备行为 ActionResp(context.Context, *ActionRespReq) (*Empty, error) - // 请求设备获取设备最新属性 + //请求设备获取设备最新属性 PropertyGetReportSend(context.Context, *PropertyGetReportSendReq) (*PropertyGetReportSendResp, error) - // 调用设备属性 + //调用设备属性 PropertyControlSend(context.Context, *PropertyControlSendReq) (*PropertyControlSendResp, error) - // 批量调用设备属性 + //批量调用设备属性 PropertyControlMultiSend(context.Context, *PropertyControlMultiSendReq) (*PropertyControlMultiSendResp, error) - // 获取异步调用设备属性的结果 + //获取异步调用设备属性的结果 PropertyControlRead(context.Context, *RespReadReq) (*PropertyControlSendResp, error) - // 发送消息给设备 -- 调试使用 + //发送消息给设备 -- 调试使用 SendMsg(context.Context, *SendMsgReq) (*SendMsgResp, error) - // 获取网关拓扑关系 + //获取网关拓扑关系 GatewayGetFoundSend(context.Context, *GatewayGetFoundReq) (*Empty, error) - // 通知网关绑定子设备 + //通知网关绑定子设备 GatewayNotifyBindSend(context.Context, *GatewayNotifyBindSendReq) (*Empty, error) mustEmbedUnimplementedDeviceInteractServer() } @@ -3910,7 +3784,7 @@ func _DeviceInteract_ActionSend_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_ActionSend_FullMethodName, + FullMethod: "/dm.DeviceInteract/actionSend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).ActionSend(ctx, req.(*ActionSendReq)) @@ -3928,7 +3802,7 @@ func _DeviceInteract_ActionRead_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_ActionRead_FullMethodName, + FullMethod: "/dm.DeviceInteract/actionRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).ActionRead(ctx, req.(*RespReadReq)) @@ -3946,7 +3820,7 @@ func _DeviceInteract_ActionResp_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_ActionResp_FullMethodName, + FullMethod: "/dm.DeviceInteract/actionResp", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).ActionResp(ctx, req.(*ActionRespReq)) @@ -3964,7 +3838,7 @@ func _DeviceInteract_PropertyGetReportSend_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_PropertyGetReportSend_FullMethodName, + FullMethod: "/dm.DeviceInteract/propertyGetReportSend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).PropertyGetReportSend(ctx, req.(*PropertyGetReportSendReq)) @@ -3982,7 +3856,7 @@ func _DeviceInteract_PropertyControlSend_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_PropertyControlSend_FullMethodName, + FullMethod: "/dm.DeviceInteract/propertyControlSend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).PropertyControlSend(ctx, req.(*PropertyControlSendReq)) @@ -4000,7 +3874,7 @@ func _DeviceInteract_PropertyControlMultiSend_Handler(srv interface{}, ctx conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_PropertyControlMultiSend_FullMethodName, + FullMethod: "/dm.DeviceInteract/propertyControlMultiSend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).PropertyControlMultiSend(ctx, req.(*PropertyControlMultiSendReq)) @@ -4018,7 +3892,7 @@ func _DeviceInteract_PropertyControlRead_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_PropertyControlRead_FullMethodName, + FullMethod: "/dm.DeviceInteract/propertyControlRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).PropertyControlRead(ctx, req.(*RespReadReq)) @@ -4036,7 +3910,7 @@ func _DeviceInteract_SendMsg_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_SendMsg_FullMethodName, + FullMethod: "/dm.DeviceInteract/sendMsg", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).SendMsg(ctx, req.(*SendMsgReq)) @@ -4054,7 +3928,7 @@ func _DeviceInteract_GatewayGetFoundSend_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_GatewayGetFoundSend_FullMethodName, + FullMethod: "/dm.DeviceInteract/gatewayGetFoundSend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).GatewayGetFoundSend(ctx, req.(*GatewayGetFoundReq)) @@ -4072,7 +3946,7 @@ func _DeviceInteract_GatewayNotifyBindSend_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: DeviceInteract_GatewayNotifyBindSend_FullMethodName, + FullMethod: "/dm.DeviceInteract/gatewayNotifyBindSend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DeviceInteractServer).GatewayNotifyBindSend(ctx, req.(*GatewayNotifyBindSendReq)) @@ -4132,56 +4006,35 @@ var DeviceInteract_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - OtaManage_OtaFirmwareInfoCreate_FullMethodName = "/dm.OtaManage/otaFirmwareInfoCreate" - OtaManage_OtaFirmwareInfoUpdate_FullMethodName = "/dm.OtaManage/otaFirmwareInfoUpdate" - OtaManage_OtaFirmwareInfoDelete_FullMethodName = "/dm.OtaManage/otaFirmwareInfoDelete" - OtaManage_OtaFirmwareInfoIndex_FullMethodName = "/dm.OtaManage/otaFirmwareInfoIndex" - OtaManage_OtaFirmwareInfoRead_FullMethodName = "/dm.OtaManage/otaFirmwareInfoRead" - OtaManage_OtaFirmwareJobCreate_FullMethodName = "/dm.OtaManage/otaFirmwareJobCreate" - OtaManage_OtaFirmwareJobIndex_FullMethodName = "/dm.OtaManage/otaFirmwareJobIndex" - OtaManage_OtaFirmwareJobRead_FullMethodName = "/dm.OtaManage/otaFirmwareJobRead" - OtaManage_OtaFirmwareJobUpdate_FullMethodName = "/dm.OtaManage/otaFirmwareJobUpdate" - OtaManage_OtaFirmwareDeviceIndex_FullMethodName = "/dm.OtaManage/otaFirmwareDeviceIndex" - OtaManage_OtaFirmwareDeviceCancel_FullMethodName = "/dm.OtaManage/otaFirmwareDeviceCancel" - OtaManage_OtaFirmwareDeviceRetry_FullMethodName = "/dm.OtaManage/otaFirmwareDeviceRetry" - OtaManage_OtaFirmwareDeviceConfirm_FullMethodName = "/dm.OtaManage/otaFirmwareDeviceConfirm" - OtaManage_OtaModuleInfoCreate_FullMethodName = "/dm.OtaManage/otaModuleInfoCreate" - OtaManage_OtaModuleInfoUpdate_FullMethodName = "/dm.OtaManage/otaModuleInfoUpdate" - OtaManage_OtaModuleInfoDelete_FullMethodName = "/dm.OtaManage/otaModuleInfoDelete" - OtaManage_OtaModuleInfoIndex_FullMethodName = "/dm.OtaManage/otaModuleInfoIndex" - OtaManage_OtaModuleInfoRead_FullMethodName = "/dm.OtaManage/otaModuleInfoRead" -) - // OtaManageClient is the client API for OtaManage service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type OtaManageClient interface { - // 添加升级包 + //添加升级包 OtaFirmwareInfoCreate(ctx context.Context, in *OtaFirmwareInfoCreateReq, opts ...grpc.CallOption) (*WithID, error) - // 修改升级包 + //修改升级包 OtaFirmwareInfoUpdate(ctx context.Context, in *OtaFirmwareInfoUpdateReq, opts ...grpc.CallOption) (*WithID, error) - // 删除升级包 + //删除升级包 OtaFirmwareInfoDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) - // 升级包列表 + //升级包列表 OtaFirmwareInfoIndex(ctx context.Context, in *OtaFirmwareInfoIndexReq, opts ...grpc.CallOption) (*OtaFirmwareInfoIndexResp, error) - // 查询升级包 + //查询升级包 OtaFirmwareInfoRead(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*OtaFirmwareInfo, error) - // 创建静态升级批次 + //创建静态升级批次 OtaFirmwareJobCreate(ctx context.Context, in *OtaFirmwareJobInfo, opts ...grpc.CallOption) (*WithID, error) - // 获取升级包下的升级任务批次列表 + //获取升级包下的升级任务批次列表 OtaFirmwareJobIndex(ctx context.Context, in *OtaFirmwareJobIndexReq, opts ...grpc.CallOption) (*OtaFirmwareJobIndexResp, error) - // 查询指定升级批次的详情 + //查询指定升级批次的详情 OtaFirmwareJobRead(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*OtaFirmwareJobInfo, error) - // 取消动态升级策略 + //取消动态升级策略 OtaFirmwareJobUpdate(ctx context.Context, in *OtaFirmwareJobInfo, opts ...grpc.CallOption) (*Empty, error) - // 查询指定升级批次下的设备升级作业列表 + //查询指定升级批次下的设备升级作业列表 OtaFirmwareDeviceIndex(ctx context.Context, in *OtaFirmwareDeviceIndexReq, opts ...grpc.CallOption) (*OtaFirmwareDeviceIndexResp, error) - // 取消指定批次下的设备升级作业 + //取消指定批次下的设备升级作业 OtaFirmwareDeviceCancel(ctx context.Context, in *OtaFirmwareDeviceCancelReq, opts ...grpc.CallOption) (*Empty, error) - // 重新升级指定批次下升级失败或升级取消的设备升级作业 + //重新升级指定批次下升级失败或升级取消的设备升级作业 OtaFirmwareDeviceRetry(ctx context.Context, in *OtaFirmwareDeviceRetryReq, opts ...grpc.CallOption) (*Empty, error) - // app确认设备升级 + //app确认设备升级 OtaFirmwareDeviceConfirm(ctx context.Context, in *OtaFirmwareDeviceConfirmReq, opts ...grpc.CallOption) (*Empty, error) OtaModuleInfoCreate(ctx context.Context, in *OtaModuleInfo, opts ...grpc.CallOption) (*WithID, error) OtaModuleInfoUpdate(ctx context.Context, in *OtaModuleInfo, opts ...grpc.CallOption) (*Empty, error) @@ -4200,7 +4053,7 @@ func NewOtaManageClient(cc grpc.ClientConnInterface) OtaManageClient { func (c *otaManageClient) OtaFirmwareInfoCreate(ctx context.Context, in *OtaFirmwareInfoCreateReq, opts ...grpc.CallOption) (*WithID, error) { out := new(WithID) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareInfoCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareInfoCreate", in, out, opts...) if err != nil { return nil, err } @@ -4209,7 +4062,7 @@ func (c *otaManageClient) OtaFirmwareInfoCreate(ctx context.Context, in *OtaFirm func (c *otaManageClient) OtaFirmwareInfoUpdate(ctx context.Context, in *OtaFirmwareInfoUpdateReq, opts ...grpc.CallOption) (*WithID, error) { out := new(WithID) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareInfoUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareInfoUpdate", in, out, opts...) if err != nil { return nil, err } @@ -4218,7 +4071,7 @@ func (c *otaManageClient) OtaFirmwareInfoUpdate(ctx context.Context, in *OtaFirm func (c *otaManageClient) OtaFirmwareInfoDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareInfoDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareInfoDelete", in, out, opts...) if err != nil { return nil, err } @@ -4227,7 +4080,7 @@ func (c *otaManageClient) OtaFirmwareInfoDelete(ctx context.Context, in *WithID, func (c *otaManageClient) OtaFirmwareInfoIndex(ctx context.Context, in *OtaFirmwareInfoIndexReq, opts ...grpc.CallOption) (*OtaFirmwareInfoIndexResp, error) { out := new(OtaFirmwareInfoIndexResp) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareInfoIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareInfoIndex", in, out, opts...) if err != nil { return nil, err } @@ -4236,7 +4089,7 @@ func (c *otaManageClient) OtaFirmwareInfoIndex(ctx context.Context, in *OtaFirmw func (c *otaManageClient) OtaFirmwareInfoRead(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*OtaFirmwareInfo, error) { out := new(OtaFirmwareInfo) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareInfoRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareInfoRead", in, out, opts...) if err != nil { return nil, err } @@ -4245,7 +4098,7 @@ func (c *otaManageClient) OtaFirmwareInfoRead(ctx context.Context, in *WithID, o func (c *otaManageClient) OtaFirmwareJobCreate(ctx context.Context, in *OtaFirmwareJobInfo, opts ...grpc.CallOption) (*WithID, error) { out := new(WithID) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareJobCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareJobCreate", in, out, opts...) if err != nil { return nil, err } @@ -4254,7 +4107,7 @@ func (c *otaManageClient) OtaFirmwareJobCreate(ctx context.Context, in *OtaFirmw func (c *otaManageClient) OtaFirmwareJobIndex(ctx context.Context, in *OtaFirmwareJobIndexReq, opts ...grpc.CallOption) (*OtaFirmwareJobIndexResp, error) { out := new(OtaFirmwareJobIndexResp) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareJobIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareJobIndex", in, out, opts...) if err != nil { return nil, err } @@ -4263,7 +4116,7 @@ func (c *otaManageClient) OtaFirmwareJobIndex(ctx context.Context, in *OtaFirmwa func (c *otaManageClient) OtaFirmwareJobRead(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*OtaFirmwareJobInfo, error) { out := new(OtaFirmwareJobInfo) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareJobRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareJobRead", in, out, opts...) if err != nil { return nil, err } @@ -4272,7 +4125,7 @@ func (c *otaManageClient) OtaFirmwareJobRead(ctx context.Context, in *WithID, op func (c *otaManageClient) OtaFirmwareJobUpdate(ctx context.Context, in *OtaFirmwareJobInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareJobUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareJobUpdate", in, out, opts...) if err != nil { return nil, err } @@ -4281,7 +4134,7 @@ func (c *otaManageClient) OtaFirmwareJobUpdate(ctx context.Context, in *OtaFirmw func (c *otaManageClient) OtaFirmwareDeviceIndex(ctx context.Context, in *OtaFirmwareDeviceIndexReq, opts ...grpc.CallOption) (*OtaFirmwareDeviceIndexResp, error) { out := new(OtaFirmwareDeviceIndexResp) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareDeviceIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareDeviceIndex", in, out, opts...) if err != nil { return nil, err } @@ -4290,7 +4143,7 @@ func (c *otaManageClient) OtaFirmwareDeviceIndex(ctx context.Context, in *OtaFir func (c *otaManageClient) OtaFirmwareDeviceCancel(ctx context.Context, in *OtaFirmwareDeviceCancelReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareDeviceCancel_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareDeviceCancel", in, out, opts...) if err != nil { return nil, err } @@ -4299,7 +4152,7 @@ func (c *otaManageClient) OtaFirmwareDeviceCancel(ctx context.Context, in *OtaFi func (c *otaManageClient) OtaFirmwareDeviceRetry(ctx context.Context, in *OtaFirmwareDeviceRetryReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareDeviceRetry_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareDeviceRetry", in, out, opts...) if err != nil { return nil, err } @@ -4308,7 +4161,7 @@ func (c *otaManageClient) OtaFirmwareDeviceRetry(ctx context.Context, in *OtaFir func (c *otaManageClient) OtaFirmwareDeviceConfirm(ctx context.Context, in *OtaFirmwareDeviceConfirmReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, OtaManage_OtaFirmwareDeviceConfirm_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaFirmwareDeviceConfirm", in, out, opts...) if err != nil { return nil, err } @@ -4317,7 +4170,7 @@ func (c *otaManageClient) OtaFirmwareDeviceConfirm(ctx context.Context, in *OtaF func (c *otaManageClient) OtaModuleInfoCreate(ctx context.Context, in *OtaModuleInfo, opts ...grpc.CallOption) (*WithID, error) { out := new(WithID) - err := c.cc.Invoke(ctx, OtaManage_OtaModuleInfoCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaModuleInfoCreate", in, out, opts...) if err != nil { return nil, err } @@ -4326,7 +4179,7 @@ func (c *otaManageClient) OtaModuleInfoCreate(ctx context.Context, in *OtaModule func (c *otaManageClient) OtaModuleInfoUpdate(ctx context.Context, in *OtaModuleInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, OtaManage_OtaModuleInfoUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaModuleInfoUpdate", in, out, opts...) if err != nil { return nil, err } @@ -4335,7 +4188,7 @@ func (c *otaManageClient) OtaModuleInfoUpdate(ctx context.Context, in *OtaModule func (c *otaManageClient) OtaModuleInfoDelete(ctx context.Context, in *WithID, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, OtaManage_OtaModuleInfoDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaModuleInfoDelete", in, out, opts...) if err != nil { return nil, err } @@ -4344,7 +4197,7 @@ func (c *otaManageClient) OtaModuleInfoDelete(ctx context.Context, in *WithID, o func (c *otaManageClient) OtaModuleInfoIndex(ctx context.Context, in *OtaModuleInfoIndexReq, opts ...grpc.CallOption) (*OtaModuleInfoIndexResp, error) { out := new(OtaModuleInfoIndexResp) - err := c.cc.Invoke(ctx, OtaManage_OtaModuleInfoIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaModuleInfoIndex", in, out, opts...) if err != nil { return nil, err } @@ -4353,7 +4206,7 @@ func (c *otaManageClient) OtaModuleInfoIndex(ctx context.Context, in *OtaModuleI func (c *otaManageClient) OtaModuleInfoRead(ctx context.Context, in *WithIDCode, opts ...grpc.CallOption) (*OtaModuleInfo, error) { out := new(OtaModuleInfo) - err := c.cc.Invoke(ctx, OtaManage_OtaModuleInfoRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.OtaManage/otaModuleInfoRead", in, out, opts...) if err != nil { return nil, err } @@ -4364,31 +4217,31 @@ func (c *otaManageClient) OtaModuleInfoRead(ctx context.Context, in *WithIDCode, // All implementations must embed UnimplementedOtaManageServer // for forward compatibility type OtaManageServer interface { - // 添加升级包 + //添加升级包 OtaFirmwareInfoCreate(context.Context, *OtaFirmwareInfoCreateReq) (*WithID, error) - // 修改升级包 + //修改升级包 OtaFirmwareInfoUpdate(context.Context, *OtaFirmwareInfoUpdateReq) (*WithID, error) - // 删除升级包 + //删除升级包 OtaFirmwareInfoDelete(context.Context, *WithID) (*Empty, error) - // 升级包列表 + //升级包列表 OtaFirmwareInfoIndex(context.Context, *OtaFirmwareInfoIndexReq) (*OtaFirmwareInfoIndexResp, error) - // 查询升级包 + //查询升级包 OtaFirmwareInfoRead(context.Context, *WithID) (*OtaFirmwareInfo, error) - // 创建静态升级批次 + //创建静态升级批次 OtaFirmwareJobCreate(context.Context, *OtaFirmwareJobInfo) (*WithID, error) - // 获取升级包下的升级任务批次列表 + //获取升级包下的升级任务批次列表 OtaFirmwareJobIndex(context.Context, *OtaFirmwareJobIndexReq) (*OtaFirmwareJobIndexResp, error) - // 查询指定升级批次的详情 + //查询指定升级批次的详情 OtaFirmwareJobRead(context.Context, *WithID) (*OtaFirmwareJobInfo, error) - // 取消动态升级策略 + //取消动态升级策略 OtaFirmwareJobUpdate(context.Context, *OtaFirmwareJobInfo) (*Empty, error) - // 查询指定升级批次下的设备升级作业列表 + //查询指定升级批次下的设备升级作业列表 OtaFirmwareDeviceIndex(context.Context, *OtaFirmwareDeviceIndexReq) (*OtaFirmwareDeviceIndexResp, error) - // 取消指定批次下的设备升级作业 + //取消指定批次下的设备升级作业 OtaFirmwareDeviceCancel(context.Context, *OtaFirmwareDeviceCancelReq) (*Empty, error) - // 重新升级指定批次下升级失败或升级取消的设备升级作业 + //重新升级指定批次下升级失败或升级取消的设备升级作业 OtaFirmwareDeviceRetry(context.Context, *OtaFirmwareDeviceRetryReq) (*Empty, error) - // app确认设备升级 + //app确认设备升级 OtaFirmwareDeviceConfirm(context.Context, *OtaFirmwareDeviceConfirmReq) (*Empty, error) OtaModuleInfoCreate(context.Context, *OtaModuleInfo) (*WithID, error) OtaModuleInfoUpdate(context.Context, *OtaModuleInfo) (*Empty, error) @@ -4479,7 +4332,7 @@ func _OtaManage_OtaFirmwareInfoCreate_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareInfoCreate_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareInfoCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareInfoCreate(ctx, req.(*OtaFirmwareInfoCreateReq)) @@ -4497,7 +4350,7 @@ func _OtaManage_OtaFirmwareInfoUpdate_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareInfoUpdate_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareInfoUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareInfoUpdate(ctx, req.(*OtaFirmwareInfoUpdateReq)) @@ -4515,7 +4368,7 @@ func _OtaManage_OtaFirmwareInfoDelete_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareInfoDelete_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareInfoDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareInfoDelete(ctx, req.(*WithID)) @@ -4533,7 +4386,7 @@ func _OtaManage_OtaFirmwareInfoIndex_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareInfoIndex_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareInfoIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareInfoIndex(ctx, req.(*OtaFirmwareInfoIndexReq)) @@ -4551,7 +4404,7 @@ func _OtaManage_OtaFirmwareInfoRead_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareInfoRead_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareInfoRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareInfoRead(ctx, req.(*WithID)) @@ -4569,7 +4422,7 @@ func _OtaManage_OtaFirmwareJobCreate_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareJobCreate_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareJobCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareJobCreate(ctx, req.(*OtaFirmwareJobInfo)) @@ -4587,7 +4440,7 @@ func _OtaManage_OtaFirmwareJobIndex_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareJobIndex_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareJobIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareJobIndex(ctx, req.(*OtaFirmwareJobIndexReq)) @@ -4605,7 +4458,7 @@ func _OtaManage_OtaFirmwareJobRead_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareJobRead_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareJobRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareJobRead(ctx, req.(*WithID)) @@ -4623,7 +4476,7 @@ func _OtaManage_OtaFirmwareJobUpdate_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareJobUpdate_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareJobUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareJobUpdate(ctx, req.(*OtaFirmwareJobInfo)) @@ -4641,7 +4494,7 @@ func _OtaManage_OtaFirmwareDeviceIndex_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareDeviceIndex_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareDeviceIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareDeviceIndex(ctx, req.(*OtaFirmwareDeviceIndexReq)) @@ -4659,7 +4512,7 @@ func _OtaManage_OtaFirmwareDeviceCancel_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareDeviceCancel_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareDeviceCancel", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareDeviceCancel(ctx, req.(*OtaFirmwareDeviceCancelReq)) @@ -4677,7 +4530,7 @@ func _OtaManage_OtaFirmwareDeviceRetry_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareDeviceRetry_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareDeviceRetry", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareDeviceRetry(ctx, req.(*OtaFirmwareDeviceRetryReq)) @@ -4695,7 +4548,7 @@ func _OtaManage_OtaFirmwareDeviceConfirm_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaFirmwareDeviceConfirm_FullMethodName, + FullMethod: "/dm.OtaManage/otaFirmwareDeviceConfirm", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaFirmwareDeviceConfirm(ctx, req.(*OtaFirmwareDeviceConfirmReq)) @@ -4713,7 +4566,7 @@ func _OtaManage_OtaModuleInfoCreate_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaModuleInfoCreate_FullMethodName, + FullMethod: "/dm.OtaManage/otaModuleInfoCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaModuleInfoCreate(ctx, req.(*OtaModuleInfo)) @@ -4731,7 +4584,7 @@ func _OtaManage_OtaModuleInfoUpdate_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaModuleInfoUpdate_FullMethodName, + FullMethod: "/dm.OtaManage/otaModuleInfoUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaModuleInfoUpdate(ctx, req.(*OtaModuleInfo)) @@ -4749,7 +4602,7 @@ func _OtaManage_OtaModuleInfoDelete_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaModuleInfoDelete_FullMethodName, + FullMethod: "/dm.OtaManage/otaModuleInfoDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaModuleInfoDelete(ctx, req.(*WithID)) @@ -4767,7 +4620,7 @@ func _OtaManage_OtaModuleInfoIndex_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaModuleInfoIndex_FullMethodName, + FullMethod: "/dm.OtaManage/otaModuleInfoIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaModuleInfoIndex(ctx, req.(*OtaModuleInfoIndexReq)) @@ -4785,7 +4638,7 @@ func _OtaManage_OtaModuleInfoRead_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OtaManage_OtaModuleInfoRead_FullMethodName, + FullMethod: "/dm.OtaManage/otaModuleInfoRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OtaManageServer).OtaModuleInfoRead(ctx, req.(*WithIDCode)) @@ -4877,51 +4730,34 @@ var OtaManage_ServiceDesc = grpc.ServiceDesc{ Metadata: "proto/dm.proto", } -const ( - UserDevice_UserDeviceCollectMultiCreate_FullMethodName = "/dm.userDevice/userDeviceCollectMultiCreate" - UserDevice_UserDeviceCollectMultiDelete_FullMethodName = "/dm.userDevice/userDeviceCollectMultiDelete" - UserDevice_UserDeviceCollectIndex_FullMethodName = "/dm.userDevice/userDeviceCollectIndex" - UserDevice_UserDeviceShareCreate_FullMethodName = "/dm.userDevice/userDeviceShareCreate" - UserDevice_UserDeviceShareUpdate_FullMethodName = "/dm.userDevice/userDeviceShareUpdate" - UserDevice_UserDeviceShareDelete_FullMethodName = "/dm.userDevice/userDeviceShareDelete" - UserDevice_UserDeviceShareMultiDelete_FullMethodName = "/dm.userDevice/userDeviceShareMultiDelete" - UserDevice_UserDeviceShareIndex_FullMethodName = "/dm.userDevice/userDeviceShareIndex" - UserDevice_UserDeviceShareRead_FullMethodName = "/dm.userDevice/userDeviceShareRead" - UserDevice_UserDeviceTransfer_FullMethodName = "/dm.userDevice/userDeviceTransfer" - UserDevice_UserDeviceShareMultiCreate_FullMethodName = "/dm.userDevice/userDeviceShareMultiCreate" - UserDevice_UserDeivceShareMultiIndex_FullMethodName = "/dm.userDevice/userDeivceShareMultiIndex" - UserDevice_UserDeivceShareMultiAccept_FullMethodName = "/dm.userDevice/userDeivceShareMultiAccept" -) - // UserDeviceClient is the client API for UserDevice service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type UserDeviceClient interface { - // 用户收藏的设备 + //用户收藏的设备 UserDeviceCollectMultiCreate(ctx context.Context, in *UserDeviceCollectSave, opts ...grpc.CallOption) (*Empty, error) UserDeviceCollectMultiDelete(ctx context.Context, in *UserDeviceCollectSave, opts ...grpc.CallOption) (*Empty, error) UserDeviceCollectIndex(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*UserDeviceCollectSave, error) - // 分享设备 + //分享设备 UserDeviceShareCreate(ctx context.Context, in *UserDeviceShareInfo, opts ...grpc.CallOption) (*WithID, error) - // 更新权限 + //更新权限 UserDeviceShareUpdate(ctx context.Context, in *UserDeviceShareInfo, opts ...grpc.CallOption) (*Empty, error) - // 取消分享设备 + //取消分享设备 UserDeviceShareDelete(ctx context.Context, in *UserDeviceShareReadReq, opts ...grpc.CallOption) (*Empty, error) - // 取消分享设备 + //取消分享设备 UserDeviceShareMultiDelete(ctx context.Context, in *UserDeviceShareMultiDeleteReq, opts ...grpc.CallOption) (*Empty, error) - // 获取设备分享列表(只有设备的所有者才能获取) + //获取设备分享列表(只有设备的所有者才能获取) UserDeviceShareIndex(ctx context.Context, in *UserDeviceShareIndexReq, opts ...grpc.CallOption) (*UserDeviceShareIndexResp, error) - // 获取设备分享的详情 + //获取设备分享的详情 UserDeviceShareRead(ctx context.Context, in *UserDeviceShareReadReq, opts ...grpc.CallOption) (*UserDeviceShareInfo, error) - // 转让设备 + //转让设备 UserDeviceTransfer(ctx context.Context, in *DeviceTransferReq, opts ...grpc.CallOption) (*Empty, error) - // rpc userDeviceOtaGetVersion(UserDeviceOtaGetVersionReq)returns(userDeviceOtaGetVersionResp); - // - // 创建批量分享二维码,设备列表写入缓存 + // rpc userDeviceOtaGetVersion(UserDeviceOtaGetVersionReq)returns(userDeviceOtaGetVersionResp); + //创建批量分享二维码,设备列表写入缓存 UserDeviceShareMultiCreate(ctx context.Context, in *UserDeviceShareMultiInfo, opts ...grpc.CallOption) (*UserDeviceShareMultiToken, error) - // 扫码后获取设备列表 + //扫码后获取设备列表 UserDeivceShareMultiIndex(ctx context.Context, in *UserDeviceShareMultiToken, opts ...grpc.CallOption) (*UserDeviceShareMultiInfo, error) - // 接受批量分享的设备 + //接受批量分享的设备 UserDeivceShareMultiAccept(ctx context.Context, in *UserDeviceShareMultiAcceptReq, opts ...grpc.CallOption) (*Empty, error) } @@ -4935,7 +4771,7 @@ func NewUserDeviceClient(cc grpc.ClientConnInterface) UserDeviceClient { func (c *userDeviceClient) UserDeviceCollectMultiCreate(ctx context.Context, in *UserDeviceCollectSave, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceCollectMultiCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceCollectMultiCreate", in, out, opts...) if err != nil { return nil, err } @@ -4944,7 +4780,7 @@ func (c *userDeviceClient) UserDeviceCollectMultiCreate(ctx context.Context, in func (c *userDeviceClient) UserDeviceCollectMultiDelete(ctx context.Context, in *UserDeviceCollectSave, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceCollectMultiDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceCollectMultiDelete", in, out, opts...) if err != nil { return nil, err } @@ -4953,7 +4789,7 @@ func (c *userDeviceClient) UserDeviceCollectMultiDelete(ctx context.Context, in func (c *userDeviceClient) UserDeviceCollectIndex(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*UserDeviceCollectSave, error) { out := new(UserDeviceCollectSave) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceCollectIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceCollectIndex", in, out, opts...) if err != nil { return nil, err } @@ -4962,7 +4798,7 @@ func (c *userDeviceClient) UserDeviceCollectIndex(ctx context.Context, in *Empty func (c *userDeviceClient) UserDeviceShareCreate(ctx context.Context, in *UserDeviceShareInfo, opts ...grpc.CallOption) (*WithID, error) { out := new(WithID) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceShareCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceShareCreate", in, out, opts...) if err != nil { return nil, err } @@ -4971,7 +4807,7 @@ func (c *userDeviceClient) UserDeviceShareCreate(ctx context.Context, in *UserDe func (c *userDeviceClient) UserDeviceShareUpdate(ctx context.Context, in *UserDeviceShareInfo, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceShareUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceShareUpdate", in, out, opts...) if err != nil { return nil, err } @@ -4980,7 +4816,7 @@ func (c *userDeviceClient) UserDeviceShareUpdate(ctx context.Context, in *UserDe func (c *userDeviceClient) UserDeviceShareDelete(ctx context.Context, in *UserDeviceShareReadReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceShareDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceShareDelete", in, out, opts...) if err != nil { return nil, err } @@ -4989,7 +4825,7 @@ func (c *userDeviceClient) UserDeviceShareDelete(ctx context.Context, in *UserDe func (c *userDeviceClient) UserDeviceShareMultiDelete(ctx context.Context, in *UserDeviceShareMultiDeleteReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceShareMultiDelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceShareMultiDelete", in, out, opts...) if err != nil { return nil, err } @@ -4998,7 +4834,7 @@ func (c *userDeviceClient) UserDeviceShareMultiDelete(ctx context.Context, in *U func (c *userDeviceClient) UserDeviceShareIndex(ctx context.Context, in *UserDeviceShareIndexReq, opts ...grpc.CallOption) (*UserDeviceShareIndexResp, error) { out := new(UserDeviceShareIndexResp) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceShareIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceShareIndex", in, out, opts...) if err != nil { return nil, err } @@ -5007,7 +4843,7 @@ func (c *userDeviceClient) UserDeviceShareIndex(ctx context.Context, in *UserDev func (c *userDeviceClient) UserDeviceShareRead(ctx context.Context, in *UserDeviceShareReadReq, opts ...grpc.CallOption) (*UserDeviceShareInfo, error) { out := new(UserDeviceShareInfo) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceShareRead_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceShareRead", in, out, opts...) if err != nil { return nil, err } @@ -5016,7 +4852,7 @@ func (c *userDeviceClient) UserDeviceShareRead(ctx context.Context, in *UserDevi func (c *userDeviceClient) UserDeviceTransfer(ctx context.Context, in *DeviceTransferReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceTransfer_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceTransfer", in, out, opts...) if err != nil { return nil, err } @@ -5025,7 +4861,7 @@ func (c *userDeviceClient) UserDeviceTransfer(ctx context.Context, in *DeviceTra func (c *userDeviceClient) UserDeviceShareMultiCreate(ctx context.Context, in *UserDeviceShareMultiInfo, opts ...grpc.CallOption) (*UserDeviceShareMultiToken, error) { out := new(UserDeviceShareMultiToken) - err := c.cc.Invoke(ctx, UserDevice_UserDeviceShareMultiCreate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeviceShareMultiCreate", in, out, opts...) if err != nil { return nil, err } @@ -5034,7 +4870,7 @@ func (c *userDeviceClient) UserDeviceShareMultiCreate(ctx context.Context, in *U func (c *userDeviceClient) UserDeivceShareMultiIndex(ctx context.Context, in *UserDeviceShareMultiToken, opts ...grpc.CallOption) (*UserDeviceShareMultiInfo, error) { out := new(UserDeviceShareMultiInfo) - err := c.cc.Invoke(ctx, UserDevice_UserDeivceShareMultiIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeivceShareMultiIndex", in, out, opts...) if err != nil { return nil, err } @@ -5043,7 +4879,7 @@ func (c *userDeviceClient) UserDeivceShareMultiIndex(ctx context.Context, in *Us func (c *userDeviceClient) UserDeivceShareMultiAccept(ctx context.Context, in *UserDeviceShareMultiAcceptReq, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, UserDevice_UserDeivceShareMultiAccept_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/dm.userDevice/userDeivceShareMultiAccept", in, out, opts...) if err != nil { return nil, err } @@ -5054,31 +4890,30 @@ func (c *userDeviceClient) UserDeivceShareMultiAccept(ctx context.Context, in *U // All implementations must embed UnimplementedUserDeviceServer // for forward compatibility type UserDeviceServer interface { - // 用户收藏的设备 + //用户收藏的设备 UserDeviceCollectMultiCreate(context.Context, *UserDeviceCollectSave) (*Empty, error) UserDeviceCollectMultiDelete(context.Context, *UserDeviceCollectSave) (*Empty, error) UserDeviceCollectIndex(context.Context, *Empty) (*UserDeviceCollectSave, error) - // 分享设备 + //分享设备 UserDeviceShareCreate(context.Context, *UserDeviceShareInfo) (*WithID, error) - // 更新权限 + //更新权限 UserDeviceShareUpdate(context.Context, *UserDeviceShareInfo) (*Empty, error) - // 取消分享设备 + //取消分享设备 UserDeviceShareDelete(context.Context, *UserDeviceShareReadReq) (*Empty, error) - // 取消分享设备 + //取消分享设备 UserDeviceShareMultiDelete(context.Context, *UserDeviceShareMultiDeleteReq) (*Empty, error) - // 获取设备分享列表(只有设备的所有者才能获取) + //获取设备分享列表(只有设备的所有者才能获取) UserDeviceShareIndex(context.Context, *UserDeviceShareIndexReq) (*UserDeviceShareIndexResp, error) - // 获取设备分享的详情 + //获取设备分享的详情 UserDeviceShareRead(context.Context, *UserDeviceShareReadReq) (*UserDeviceShareInfo, error) - // 转让设备 + //转让设备 UserDeviceTransfer(context.Context, *DeviceTransferReq) (*Empty, error) - // rpc userDeviceOtaGetVersion(UserDeviceOtaGetVersionReq)returns(userDeviceOtaGetVersionResp); - // - // 创建批量分享二维码,设备列表写入缓存 + // rpc userDeviceOtaGetVersion(UserDeviceOtaGetVersionReq)returns(userDeviceOtaGetVersionResp); + //创建批量分享二维码,设备列表写入缓存 UserDeviceShareMultiCreate(context.Context, *UserDeviceShareMultiInfo) (*UserDeviceShareMultiToken, error) - // 扫码后获取设备列表 + //扫码后获取设备列表 UserDeivceShareMultiIndex(context.Context, *UserDeviceShareMultiToken) (*UserDeviceShareMultiInfo, error) - // 接受批量分享的设备 + //接受批量分享的设备 UserDeivceShareMultiAccept(context.Context, *UserDeviceShareMultiAcceptReq) (*Empty, error) mustEmbedUnimplementedUserDeviceServer() } @@ -5149,7 +4984,7 @@ func _UserDevice_UserDeviceCollectMultiCreate_Handler(srv interface{}, ctx conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceCollectMultiCreate_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceCollectMultiCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceCollectMultiCreate(ctx, req.(*UserDeviceCollectSave)) @@ -5167,7 +5002,7 @@ func _UserDevice_UserDeviceCollectMultiDelete_Handler(srv interface{}, ctx conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceCollectMultiDelete_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceCollectMultiDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceCollectMultiDelete(ctx, req.(*UserDeviceCollectSave)) @@ -5185,7 +5020,7 @@ func _UserDevice_UserDeviceCollectIndex_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceCollectIndex_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceCollectIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceCollectIndex(ctx, req.(*Empty)) @@ -5203,7 +5038,7 @@ func _UserDevice_UserDeviceShareCreate_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceShareCreate_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceShareCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceShareCreate(ctx, req.(*UserDeviceShareInfo)) @@ -5221,7 +5056,7 @@ func _UserDevice_UserDeviceShareUpdate_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceShareUpdate_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceShareUpdate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceShareUpdate(ctx, req.(*UserDeviceShareInfo)) @@ -5239,7 +5074,7 @@ func _UserDevice_UserDeviceShareDelete_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceShareDelete_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceShareDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceShareDelete(ctx, req.(*UserDeviceShareReadReq)) @@ -5257,7 +5092,7 @@ func _UserDevice_UserDeviceShareMultiDelete_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceShareMultiDelete_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceShareMultiDelete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceShareMultiDelete(ctx, req.(*UserDeviceShareMultiDeleteReq)) @@ -5275,7 +5110,7 @@ func _UserDevice_UserDeviceShareIndex_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceShareIndex_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceShareIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceShareIndex(ctx, req.(*UserDeviceShareIndexReq)) @@ -5293,7 +5128,7 @@ func _UserDevice_UserDeviceShareRead_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceShareRead_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceShareRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceShareRead(ctx, req.(*UserDeviceShareReadReq)) @@ -5311,7 +5146,7 @@ func _UserDevice_UserDeviceTransfer_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceTransfer_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceTransfer", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceTransfer(ctx, req.(*DeviceTransferReq)) @@ -5329,7 +5164,7 @@ func _UserDevice_UserDeviceShareMultiCreate_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeviceShareMultiCreate_FullMethodName, + FullMethod: "/dm.userDevice/userDeviceShareMultiCreate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeviceShareMultiCreate(ctx, req.(*UserDeviceShareMultiInfo)) @@ -5347,7 +5182,7 @@ func _UserDevice_UserDeivceShareMultiIndex_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeivceShareMultiIndex_FullMethodName, + FullMethod: "/dm.userDevice/userDeivceShareMultiIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeivceShareMultiIndex(ctx, req.(*UserDeviceShareMultiToken)) @@ -5365,7 +5200,7 @@ func _UserDevice_UserDeivceShareMultiAccept_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDevice_UserDeivceShareMultiAccept_FullMethodName, + FullMethod: "/dm.userDevice/userDeivceShareMultiAccept", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(UserDeviceServer).UserDeivceShareMultiAccept(ctx, req.(*UserDeviceShareMultiAcceptReq)) diff --git a/service/dmsvr/proto/dm.proto b/service/dmsvr/proto/dm.proto index 61026ac60..ae51b5e64 100644 --- a/service/dmsvr/proto/dm.proto +++ b/service/dmsvr/proto/dm.proto @@ -459,8 +459,16 @@ message SharePerm{ int64 perm =1;//1:r(只读) 3(默认):rw(可读可写) } +message DeviceShareInfo{ + string productID = 1; //产品id + string productName = 4; //产品名称 只读 + string deviceName = 2; //设备名称 + string productImg = 3; //产品图片 + google.protobuf.StringValue deviceAlias = 5; //设备别名 读写 +} + message UserDeviceShareMultiInfo{ - repeated DeviceCore devices = 1;//设备信息 + repeated DeviceShareInfo devices = 1;//设备信息 map schemaPerm = 2;//物模型权限,只需要填写需要授权并授权的物模型id map accessPerm = 3;//操作权限 hubLog:设备消息记录,ota:ota升级权限,deviceTiming:设备定时 int64 authType =4;//授权类型:1:全部授权 2:部分授权