فهرست منبع

feat:权限调整

wangshan 2 سال پیش
والد
کامیت
e2bac5b6b2
29فایلهای تغییر یافته به همراه624 افزوده شده و 539 حذف شده
  1. 1 0
      jyBXCore/api/bxcore.api
  2. 1 0
      jyBXCore/api/internal/logic/participateActionLogic.go
  3. 1 0
      jyBXCore/api/internal/logic/participateContentLogic.go
  4. 1 0
      jyBXCore/api/internal/logic/participateInfoLogic.go
  5. 1 0
      jyBXCore/api/internal/logic/participateListLogic.go
  6. 1 0
      jyBXCore/api/internal/logic/participatePersonsLogic.go
  7. 1 0
      jyBXCore/api/internal/logic/participateRecordsLogic.go
  8. 1 0
      jyBXCore/api/internal/logic/participateSetUpInfoLogic.go
  9. 1 0
      jyBXCore/api/internal/logic/participateShowLogic.go
  10. 1 0
      jyBXCore/api/internal/logic/updateBidStatusLogic.go
  11. 1 0
      jyBXCore/api/internal/types/types.go
  12. 9 5
      jyBXCore/rpc/bxcore.proto
  13. 3 1
      jyBXCore/rpc/etc/bxcore.yaml
  14. 2 1
      jyBXCore/rpc/init/init.go
  15. 2 0
      jyBXCore/rpc/internal/config/config.go
  16. 3 5
      jyBXCore/rpc/internal/logic/participateactionlogic.go
  17. 6 8
      jyBXCore/rpc/internal/logic/participatecontentlogic.go
  18. 6 8
      jyBXCore/rpc/internal/logic/participateinfologic.go
  19. 2 3
      jyBXCore/rpc/internal/logic/participatelistlogic.go
  20. 10 1
      jyBXCore/rpc/internal/logic/participatepersonslogic.go
  21. 5 7
      jyBXCore/rpc/internal/logic/participaterecordslogic.go
  22. 5 7
      jyBXCore/rpc/internal/logic/participateshowlogic.go
  23. 5 6
      jyBXCore/rpc/internal/logic/updatebidstatuslogic.go
  24. 1 1
      jyBXCore/rpc/model/mysql/participateBid.go
  25. 20 17
      jyBXCore/rpc/service/participate.go
  26. 0 1
      jyBXCore/rpc/service/participateBid.go
  27. 512 419
      jyBXCore/rpc/type/bxcore/bxcore.pb.go
  28. 22 0
      jyBXCore/rpc/util/participate.go
  29. 0 49
      jyBXCore/rpc/util/userInfo.go

+ 1 - 0
jyBXCore/api/bxcore.api

@@ -68,6 +68,7 @@ type (
 		AppId        string `header:"appId,optional"`        //剑鱼10000
 		UserId       string `header:"userId,optional"`       //用户id
 		NewUserId    int64  `header:"newUserId,optional"`    //base_user_id
+		EntAccountId int64  `header:"entAccountId,optional"` //企业账户id
 	}
 	// 列表数据参标信息请求参数
 	participateShowReq {

+ 1 - 0
jyBXCore/api/internal/logic/participateActionLogic.go

@@ -43,6 +43,7 @@ func (l *ParticipateActionLogic) ParticipateAction(req *types.ParticipateActionR
 		ToEntUserId:  req.ToEntUserId,
 		IsRetain:     req.IsRetain,
 		ActionType:   req.ActionType,
+		EntAccountId: req.EntAccountId,
 	})
 	if err != nil {
 		return &types.CommonResp{

+ 1 - 0
jyBXCore/api/internal/logic/participateContentLogic.go

@@ -39,6 +39,7 @@ func (l *ParticipateContentLogic) ParticipateContent(req *types.ParticipateConte
 		UserId:       req.UserId,
 		NewUserId:    req.NewUserId,
 		Sid:          req.Sid,
+		EntAccountId: req.EntAccountId,
 	})
 	if err != nil {
 		return &types.CommonResp{

+ 1 - 0
jyBXCore/api/internal/logic/participateInfoLogic.go

@@ -39,6 +39,7 @@ func (l *ParticipateInfoLogic) ParticipateInfo(req *types.ParticipateInfoReq) (r
 		UserId:       req.UserId,
 		NewUserId:    req.NewUserId,
 		Sid:          req.Sid,
+		EntAccountId: req.EntAccountId,
 	})
 	if err != nil {
 		return &types.CommonResp{

+ 1 - 0
jyBXCore/api/internal/logic/participateListLogic.go

@@ -51,6 +51,7 @@ func (l *ParticipateListLogic) ParticipateList(req *types.ParticipateListReq) (r
 		PageSize:      req.PageSize,
 		PageNum:       req.PageNum,
 		OrderNum:      req.OrderNum,
+		EntAccountId:  req.EntAccountId,
 	})
 	return &types.CommonResp{
 		Err_code: res.ErrCode,

+ 1 - 0
jyBXCore/api/internal/logic/participatePersonsLogic.go

@@ -39,6 +39,7 @@ func (l *ParticipatePersonsLogic) ParticipatePersons(req *types.ParticipatePerso
 		NewUserId:    req.NewUserId,
 		AccountId:    req.AccountId,
 		ProjectId:    req.ProjectId, //项目信息id 移动需要
+		EntAccountId: req.EntAccountId,
 	})
 	return &types.CommonResp{
 		Err_code: res.ErrCode,

+ 1 - 0
jyBXCore/api/internal/logic/participateRecordsLogic.go

@@ -41,6 +41,7 @@ func (l *ParticipateRecordsLogic) ParticipateRecords(req *types.ParticipateRecor
 		Sid:          req.Sid,
 		PageSize:     req.PageSize,
 		Page:         req.PageNum,
+		EntAccountId: req.EntAccountId,
 	})
 	if err != nil {
 		return &types.CommonResp{

+ 1 - 0
jyBXCore/api/internal/logic/participateSetUpInfoLogic.go

@@ -64,6 +64,7 @@ func (l *ParticipateSetUpInfoLogic) ParticipateSetUpInfo(req *types.ParticipateS
 		IsAllow:      req.IsAllow,
 		BidType:      bidType,
 		RemindRule:   remindRule,
+		EntAccountId: req.EntAccountId,
 	})
 	if err != nil {
 		return &types.CommonResp{

+ 1 - 0
jyBXCore/api/internal/logic/participateShowLogic.go

@@ -39,6 +39,7 @@ func (l *ParticipateShowLogic) ParticipateShow(req *types.ParticipateShowReq) (r
 		UserId:       req.UserId,
 		NewUserId:    req.NewUserId,
 		Ids:          req.Ids,
+		EntAccountId: req.EntAccountId,
 	})
 	if err != nil {
 		return &types.CommonResp{

+ 1 - 0
jyBXCore/api/internal/logic/updateBidStatusLogic.go

@@ -46,6 +46,7 @@ func (l *UpdateBidStatusLogic) UpdateBidStatus(req *types.UpdateBidStatusReq) (r
 		IsWin:         req.IsWin,
 		Winner:        req.Winner,
 		Sid:           req.Sid,
+		EntAccountId:  req.EntAccountId,
 	})
 	if err != nil {
 		return &types.CommonResp{

+ 1 - 0
jyBXCore/api/internal/types/types.go

@@ -61,6 +61,7 @@ type BaseParam struct {
 	AppId        string `header:"appId,optional"`        //剑鱼10000
 	UserId       string `header:"userId,optional"`       //用户id
 	NewUserId    int64  `header:"newUserId,optional"`    //base_user_id
+	EntAccountId int64  `header:"entAccountId,optional"` //企业账户id
 }
 
 type ParticipateShowReq struct {

+ 9 - 5
jyBXCore/rpc/bxcore.proto

@@ -141,7 +141,7 @@ message ParticipateShowReq{
   string userId = 8;//用户id
   int64 newUserId = 9;//base_user_id 新用户id
   int64 accountId = 10; //账户id
-
+  int64 entAccountId = 11;//企业账户id
 }
 
 // 列表数据参标信息返回值
@@ -166,7 +166,7 @@ message ParticipateInfoReq{
   string userId = 8;//用户id
   int64 newUserId = 9;//base_user_id 新用户id
   int64 accountId = 10; //账户id
-
+  int64 entAccountId = 11;//企业账户id
 }
 // 详情页参标信息返回值
 message ParticipateDetailInfo{
@@ -203,7 +203,7 @@ message UpdateBidStatusReq{
   string  userId = 15;//用户id
   int64  newUserId = 16;//base_user_id 新用户id
   int64 accountId = 17; //账户id
-
+  int64 entAccountId = 18;//企业账户id
 }
 // 投标状态更新返回值
 message UpdateBidStatusRes{
@@ -224,7 +224,7 @@ message ParticipateContentReq{
   string  userId = 8;//用户id
   int64  newUserId = 9;//base_user_id 新用户id
   int64 accountId = 10; //账户id
-
+  int64 entAccountId = 11;//企业账户id
 }
 
 // 获取投标状态信息结果
@@ -257,7 +257,7 @@ message ParticipateRecordsReq{
   string  userId = 10;//用户id
   int64  newUserId = 11;//base_user_id 新用户id
   int64  accountId = 12; //账户id
-
+  int64 entAccountId = 13;//企业账户id
 }
 // 参标操作记录返回
 message ParticipateRecords{
@@ -287,6 +287,7 @@ message ParticipatePersonsReq{
   int64  newUserId = 8;//base_user_id 新用户id
   int64 accountId = 9; //账户id
   string projectId = 10; //项目id  移动端需要
+  int64 entAccountId = 11;//企业账户id
 }
 
 message ParticipatePerson{
@@ -321,6 +322,7 @@ message ParticipateSetUpInfoReq{
   repeated BidTypeReq bidType = 12;
   repeated RemindRuleReq remindRule = 13;
   string  necessaryField = 14;//必填字段
+  int64 entAccountId = 15;//企业账户id
 }
 
 message  BidTypeReq{
@@ -362,6 +364,7 @@ message ParticipateActionReq{
   bool isRetain = 12;//是否保留原跟踪人
   string actionType = 13;//in:参标;out:终止参标;transfer:划转
   string projectIds = 14;//项目ids 多个,号隔开
+  int64 entAccountId = 15;//企业账户id
 }
 //
 message ParticipateActionRes{
@@ -392,6 +395,7 @@ message ParticipateListReq{
   int64  newUserId = 20;//base_user_id 新用户id
   int64 accountId = 21; //账户id
   int64 orderNum = 22;//排序:0:投标截止日期正序、1:开标时间正序、2:更新状态时间倒叙
+  int64 entAccountId = 23;//企业账户id
 }
 //参标列表
 message  ParticipateList{

+ 3 - 1
jyBXCore/rpc/etc/bxcore.yaml

@@ -47,4 +47,6 @@ Middleground:
     Hosts:
       - 192.168.3.149:2379
   PowerCheckCenterKey: powercheck.rpc #权益校验中台
-  UserCenterKey: usercenter.rpc #用户中台rpc
+  UserCenterKey: usercenter.rpc #用户中台rpc
+  ResourceCenterKey: resource.rpc #资源中台rpc
+ResourceCode: "cb_zy_code"

+ 2 - 1
jyBXCore/rpc/init/init.go

@@ -43,5 +43,6 @@ func init() {
 	//初始化中台相关
 	Middleground = middleground.NewMiddleground(C.Middleground.Etcd.Hosts).
 		RegUserCenter(C.Middleground.UserCenterKey).
-		RegPowerCheckCenter(C.Middleground.PowerCheckCenterKey)
+		RegPowerCheckCenter(C.Middleground.PowerCheckCenterKey).
+		RegResourceCenter(C.Middleground.ResourceCenterKey)
 }

+ 2 - 0
jyBXCore/rpc/internal/config/config.go

@@ -50,7 +50,9 @@ type Config struct {
 		}
 		PowerCheckCenterKey string
 		UserCenterKey       string
+		ResourceCenterKey   string
 	}
+	ResourceCode string
 }
 
 type Db struct {

+ 3 - 5
jyBXCore/rpc/internal/logic/participateactionlogic.go

@@ -2,9 +2,8 @@ package logic
 
 import (
 	"context"
-	"jyBXCore/rpc/service"
-
 	"jyBXCore/rpc/internal/svc"
+	"jyBXCore/rpc/service"
 	"jyBXCore/rpc/type/bxcore"
 
 	"github.com/zeromicro/go-zero/core/logx"
@@ -24,13 +23,12 @@ func NewParticipateActionLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 	}
 }
 
-//  项目参标 终止参标 划转等动作 in:参标;out:终止参标;transfer:划转
+// 项目参标 终止参标 划转等动作 in:参标;out:终止参标;transfer:划转
 func (l *ParticipateActionLogic) ParticipateAction(in *bxcore.ParticipateActionReq) (*bxcore.ParticipateActionRes, error) {
 	var res = &bxcore.ParticipateActionRes{
 		Data: true,
 	}
-	err := service.ParticipateDo(in)
-	if err != nil {
+	if err := service.ParticipateDo(in); err != nil {
 		res.ErrCode = -1
 		res.ErrMsg = err.Error()
 		res.Data = false

+ 6 - 8
jyBXCore/rpc/internal/logic/participatecontentlogic.go

@@ -3,9 +3,9 @@ package logic
 import (
 	"app.yhyue.com/moapp/jybase/common"
 	"context"
-	IC "jyBXCore/rpc/init"
 	"jyBXCore/rpc/model/es"
 	"jyBXCore/rpc/service"
+	"jyBXCore/rpc/util"
 
 	"jyBXCore/rpc/internal/svc"
 	"jyBXCore/rpc/type/bxcore"
@@ -27,21 +27,19 @@ func NewParticipateContentLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 	}
 }
 
-//  获取投标状态信息
+// 获取投标状态信息
 func (l *ParticipateContentLogic) ParticipateContent(in *bxcore.ParticipateContentReq) (*bxcore.ParticipateContentRes, error) {
 	// 验证权限
 	result := &bxcore.ParticipateContentRes{
 		ErrCode: -1,
 	}
-	// 1. 判断身份是否有权限 不是超级订阅也不是大会员  则直接返回不展示
-	userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
-	// 不是超级订阅 也不是大会员
-	if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
-		result.ErrMsg = "没有权限"
+	b, entRoleId := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
+	if !b {
+		result.ErrMsg = "暂无权限"
 		return result, nil
 	}
 	participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
-	participateService.EntRoleId = userInfo.Ent.EntRoleId
+	participateService.EntRoleId = entRoleId
 	// 信息id解密
 	infoList, _ := service.DecodeId(in.Sid)
 	if len(infoList) == 0 {

+ 6 - 8
jyBXCore/rpc/internal/logic/participateinfologic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"app.yhyue.com/moapp/jybase/common"
 	"context"
-	IC "jyBXCore/rpc/init"
 	"jyBXCore/rpc/model/es"
 	"jyBXCore/rpc/model/mysql"
 	"jyBXCore/rpc/service"
+	"jyBXCore/rpc/util"
 	"time"
 
 	"jyBXCore/rpc/internal/svc"
@@ -29,7 +29,7 @@ func NewParticipateInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *P
 	}
 }
 
-//  详情页参标信息接口
+// 详情页参标信息接口
 func (l *ParticipateInfoLogic) ParticipateInfo(in *bxcore.ParticipateInfoReq) (*bxcore.ParticipateInfoRes, error) {
 	format := &bxcore.ParticipateDetailInfo{}
 	result := bxcore.ParticipateInfoRes{
@@ -37,15 +37,13 @@ func (l *ParticipateInfoLogic) ParticipateInfo(in *bxcore.ParticipateInfoReq) (*
 		ErrCode: -1,
 		Data:    format,
 	}
-	// 1. 判断身份是否有权限 不是超级订阅也不是大会员  则直接返回不展示
-	userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
-	//不是超级订阅 也不是大会员
-	if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
-		result.ErrMsg = "没有权限"
+	b, entRoleId := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
+	if !b {
+		result.ErrMsg = "暂无权限"
 		return &result, nil
 	}
 	participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
-	participateService.EntRoleId = userInfo.Ent.EntRoleId
+	participateService.EntRoleId = entRoleId
 	// 信息id解密
 	infoList, infoSet := service.DecodeId(in.Sid)
 	if len(infoList) == 0 {

+ 2 - 3
jyBXCore/rpc/internal/logic/participatelistlogic.go

@@ -2,9 +2,8 @@ package logic
 
 import (
 	"context"
-	"jyBXCore/rpc/service"
-
 	"jyBXCore/rpc/internal/svc"
+	"jyBXCore/rpc/service"
 	"jyBXCore/rpc/type/bxcore"
 
 	"github.com/zeromicro/go-zero/core/logx"
@@ -24,7 +23,7 @@ func NewParticipateListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *P
 	}
 }
 
-//  我的参标项目列表|企业参标项目列表
+// 我的参标项目列表|企业参标项目列表
 func (l *ParticipateListLogic) ParticipateList(in *bxcore.ParticipateListReq) (*bxcore.ParticipateListRes, error) {
 	return service.ParticipateList(in)
 }

+ 10 - 1
jyBXCore/rpc/internal/logic/participatepersonslogic.go

@@ -3,6 +3,7 @@ package logic
 import (
 	"context"
 	"jyBXCore/rpc/service"
+	"jyBXCore/rpc/util"
 
 	"jyBXCore/rpc/internal/svc"
 	"jyBXCore/rpc/type/bxcore"
@@ -24,7 +25,15 @@ func NewParticipatePersonsLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 	}
 }
 
-//  当前部门/企业下参标人员信息
+// 当前部门/企业下参标人员信息
 func (l *ParticipatePersonsLogic) ParticipatePersons(in *bxcore.ParticipatePersonsReq) (*bxcore.ParticipatePersonsRes, error) {
+	b, _ := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
+	if !b {
+		return &bxcore.ParticipatePersonsRes{
+			ErrCode: -1,
+			ErrMsg:  "没有权限",
+			Data:    nil,
+		}, nil
+	}
 	return service.GetParticipatePersonInfo(in), nil
 }

+ 5 - 7
jyBXCore/rpc/internal/logic/participaterecordslogic.go

@@ -4,11 +4,11 @@ import (
 	"app.yhyue.com/moapp/jybase/common"
 	"context"
 	"fmt"
-	IC "jyBXCore/rpc/init"
 	"jyBXCore/rpc/internal/svc"
 	"jyBXCore/rpc/model/es"
 	"jyBXCore/rpc/service"
 	"jyBXCore/rpc/type/bxcore"
+	"jyBXCore/rpc/util"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )
@@ -27,21 +27,19 @@ func NewParticipateRecordsLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 	}
 }
 
-//  参标操作记录
+// 参标操作记录
 func (l *ParticipateRecordsLogic) ParticipateRecords(in *bxcore.ParticipateRecordsReq) (*bxcore.ParticipateRecordsRes, error) {
 	// 验证权限
 	result := &bxcore.ParticipateRecordsRes{
 		ErrCode: -1,
 	}
-	// 1. 判断身份是否有权限 不是超级订阅也不是大会员  则直接返回
-	userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
-	// 不是超级订阅 也不是大会员
-	if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
+	b, entRoleId := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
+	if !b {
 		result.ErrMsg = "没有权限"
 		return result, nil
 	}
 	participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
-	participateService.EntRoleId = userInfo.Ent.EntRoleId
+	participateService.EntRoleId = entRoleId
 	// 信息id解密
 	infoList, _ := service.DecodeId(in.Sid)
 	if len(infoList) == 0 {

+ 5 - 7
jyBXCore/rpc/internal/logic/participateshowlogic.go

@@ -3,12 +3,12 @@ package logic
 import (
 	"context"
 	"github.com/zeromicro/go-zero/core/logx"
-	IC "jyBXCore/rpc/init"
 	"jyBXCore/rpc/internal/svc"
 	"jyBXCore/rpc/model/es"
 	"jyBXCore/rpc/model/mysql"
 	"jyBXCore/rpc/service"
 	"jyBXCore/rpc/type/bxcore"
+	"jyBXCore/rpc/util"
 )
 
 type ParticipateShowLogic struct {
@@ -25,22 +25,20 @@ func NewParticipateShowLogic(ctx context.Context, svcCtx *svc.ServiceContext) *P
 	}
 }
 
-//  列表数据参标信息接口
+// 列表数据参标信息接口
 func (l *ParticipateShowLogic) ParticipateShow(in *bxcore.ParticipateShowReq) (*bxcore.ParticipateShowRes, error) {
 	result := bxcore.ParticipateShowRes{
 		ErrMsg:  "",
 		ErrCode: -1,
 		Data:    []*bxcore.ShowInfo{},
 	}
-	// 1. 判断身份是否有权限 不是超级订阅也不是大会员  则直接返回不展示
-	userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
-	//不是超级订阅 也不是大会员
-	if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
+	b, entRoleId := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
+	if !b {
 		result.ErrMsg = "没有权限"
 		return &result, nil
 	}
 	participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
-	participateService.EntRoleId = userInfo.Ent.EntRoleId
+	participateService.EntRoleId = entRoleId
 	// 2. 根据标讯id 查询项目信息 拿到有效的项目id (无项目信息或者已经过开标时间  则不展示按钮  在开标时间内或者没有开标时间字段需要展示)
 	// 信息id解密
 	infoList, infoSet := service.DecodeId(in.Ids)

+ 5 - 6
jyBXCore/rpc/internal/logic/updatebidstatuslogic.go

@@ -3,9 +3,9 @@ package logic
 import (
 	"app.yhyue.com/moapp/jybase/common"
 	"context"
-	IC "jyBXCore/rpc/init"
 	"jyBXCore/rpc/model/es"
 	"jyBXCore/rpc/service"
+	"jyBXCore/rpc/util"
 	"time"
 
 	"jyBXCore/rpc/internal/svc"
@@ -28,20 +28,19 @@ func NewUpdateBidStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *U
 	}
 }
 
-//   投标状态更新
+// 投标状态更新
 func (l *UpdateBidStatusLogic) UpdateBidStatus(in *bxcore.UpdateBidStatusReq) (*bxcore.UpdateBidStatusRes, error) {
 	result := &bxcore.UpdateBidStatusRes{
 		ErrCode: -1,
 	}
-	// 1. 判断身份是否有权限 不是超级订阅也不是大会员  则直接返回不展示
-	userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
+	b, entRoleId := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
 	// 不是超级订阅 也不是大会员
-	if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
+	if !b {
 		result.ErrMsg = "没有权限"
 		return result, nil
 	}
 	participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
-	participateService.EntRoleId = userInfo.Ent.EntRoleId
+	participateService.EntRoleId = entRoleId
 	// 信息id解密
 	infoList, _ := service.DecodeId(in.Sid)
 	if len(infoList) == 0 {

+ 1 - 1
jyBXCore/rpc/model/mysql/participateBid.go

@@ -315,7 +315,7 @@ func UpdateParticipateSetInfo(in *bxcore.ParticipateSetUpInfoReq) error {
 			datas := IC.BaseMysql.SelectBySql(sql, in.EntId)
 			if datas != nil && len(*datas) > 0 {
 				if max := MC.IntAll((*datas)[0]["c"]); max > 1 {
-					return fmt.Errorf("存在多人参标的项目,暂时无法更新配置")
+					return fmt.Errorf("公司当前有项目多人参标的情况,请先确保项目都是单人参标的前提下再调整配置。\n前往”企业参标项目列表“查看具体情况。")
 				}
 			}
 		}

+ 20 - 17
jyBXCore/rpc/service/participate.go

@@ -5,27 +5,27 @@ import (
 	"app.yhyue.com/moapp/jybase/encrypt"
 	"fmt"
 	"github.com/zeromicro/go-zero/core/logx"
-	IC "jyBXCore/rpc/init"
 	"jyBXCore/rpc/model/es"
 	"jyBXCore/rpc/model/mysql"
 	"jyBXCore/rpc/type/bxcore"
+	"jyBXCore/rpc/util"
 	"strconv"
 	"strings"
+	"time"
 )
 
 // 我的参标项目|企业参标项目 列表
 func ParticipateList(in *bxcore.ParticipateListReq) (*bxcore.ParticipateListRes, error) {
 	defer MC.Catch()
 	res := &bxcore.ParticipateListRes{Data: &bxcore.ParticipateData{}}
-	userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
-	//不是超级订阅 也不是大会员
-	if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
+	b, entRoleId := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
+	if !b {
 		res.ErrCode = -1
 		res.ErrMsg = "没有权限"
 		return res, nil
 	}
 	if in.PositionType > 0 {
-		if userInfo.Ent.EntRoleId == 0 {
+		if entRoleId == 0 {
 			in.EntUserIds = ""
 		}
 	}
@@ -68,10 +68,8 @@ func ParticipateList(in *bxcore.ParticipateListReq) (*bxcore.ParticipateListRes,
 // 参标动作:参标、终止参标、划转:in:参标;out:终止参标;transfer:划转
 func ParticipateDo(in *bxcore.ParticipateActionReq) error {
 	defer MC.Catch()
-	// 1. 判断身份是否有权限 不是超级订阅也不是大会员  则直接返回不展示
-	userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
-	//不是超级订阅 也不是大会员
-	if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
+	b, entRoleId := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
+	if !b {
 		return fmt.Errorf("暂无权限")
 	}
 	//企业版 判断是否是管理员
@@ -101,7 +99,7 @@ func ParticipateDo(in *bxcore.ParticipateActionReq) error {
 		if err := GetProjectInfoByES(in); err != nil {
 			return err
 		}
-		if err := mysql.CancelParticipateInfo(in, userInfo.Ent.EntRoleId); err != nil {
+		if err := mysql.CancelParticipateInfo(in, entRoleId); err != nil {
 			return err
 		}
 	case "transfer":
@@ -115,7 +113,7 @@ func ParticipateDo(in *bxcore.ParticipateActionReq) error {
 			return fmt.Errorf("当前企业身份有误")
 		}
 		//非管理员
-		if userInfo.Ent.EntRoleId == 0 { //1:企业管理员;2:部门管理员
+		if entRoleId == 0 { //1:企业管理员;2:部门管理员
 			return fmt.Errorf("当前企业身份无权限")
 		}
 		//判断划转人
@@ -157,17 +155,16 @@ func GetParticipateSetInfo(in *bxcore.ParticipateSetUpInfoReq) (*bxcore.Particip
 		BidType:    nil,
 		RemindRule: nil,
 	}}
-	// 1. 判断身份是否有权限 不是超级订阅也不是大会员  则直接返回
-	userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
-	// 不是超级订阅 也不是大会员
-	if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
+	b, entRoleId := util.IsAllowedParticipate(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
+	if !b {
+		res.ErrMsg = "没有权限"
+		res.Data = nil
 		res.ErrCode = -1
-		res.ErrMsg = "暂无权限"
 	} else {
 		switch in.SetAction {
 		case "U": //update 更新设置信息
 			res.Data = nil
-			if userInfo.Ent.EntRoleId == 0 {
+			if entRoleId == 0 {
 				res.ErrCode = -1
 				res.ErrMsg = "当前企业身份无权限"
 			}
@@ -245,9 +242,15 @@ func GetProjectInfoByES(in *bxcore.ParticipateActionReq) error {
 		if projectInfos == nil || len(*projectInfos) == 0 {
 			return fmt.Errorf(fmt.Sprintf("当前项目信息不满足%s条件", tip))
 		}
+	}
+	if projectInfos != nil && len(*projectInfos) > 0 {
 		//符合参标项目id
 		projectInfo := (*projectInfos)[0]
 		if projectInfo["_id"] != nil && MC.ObjToString(projectInfo["_id"]) != "" {
+			bidEndTime := MC.Int64All(projectInfo["bidendtime"])           //1292126400:2010.12.12
+			if bidEndTime > 1292126400 && bidEndTime < time.Now().Unix() { //招标结束时间已到期
+				return fmt.Errorf("招标时间已结束")
+			}
 			//项目信息id
 			in.ProjectIds = MC.ObjToString(projectInfo["_id"])
 		} else {

+ 0 - 1
jyBXCore/rpc/service/participateBid.go

@@ -238,7 +238,6 @@ func ContainId(ids string, objId string) bool {
 
 // CheckBidPower 投标状态更新/查看记录 验证权限(参标人或者是该企业下的管理员)
 func (p *ParticipateBid) CheckBidPower(projectId string, valid bool) (b bool) {
-
 	switch p.PositionType {
 	case PositionTypePersonal:
 		// 查个人id

+ 512 - 419
jyBXCore/rpc/type/bxcore/bxcore.pb.go

@@ -1174,16 +1174,17 @@ type ParticipateShowReq struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Ids          string `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"`                    // 标讯id  逗号分割
-	EntId        int64  `protobuf:"varint,2,opt,name=entId,proto3" json:"entId,omitempty"`               //企业id
-	EntUserId    int64  `protobuf:"varint,3,opt,name=entUserId,proto3" json:"entUserId,omitempty"`       // 企业下用户id
-	PositionId   int64  `protobuf:"varint,4,opt,name=positionId,proto3" json:"positionId,omitempty"`     // 职位id
-	PositionType int64  `protobuf:"varint,5,opt,name=positionType,proto3" json:"positionType,omitempty"` // 职位类型 0个人 1企业
-	MgoUserId    string `protobuf:"bytes,6,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`        //原userId
-	AppId        string `protobuf:"bytes,7,opt,name=appId,proto3" json:"appId,omitempty"`                //剑鱼默认10000
-	UserId       string `protobuf:"bytes,8,opt,name=userId,proto3" json:"userId,omitempty"`              //用户id
-	NewUserId    int64  `protobuf:"varint,9,opt,name=newUserId,proto3" json:"newUserId,omitempty"`       //base_user_id 新用户id
-	AccountId    int64  `protobuf:"varint,10,opt,name=accountId,proto3" json:"accountId,omitempty"`      //账户id
+	Ids          string `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"`                     // 标讯id  逗号分割
+	EntId        int64  `protobuf:"varint,2,opt,name=entId,proto3" json:"entId,omitempty"`                //企业id
+	EntUserId    int64  `protobuf:"varint,3,opt,name=entUserId,proto3" json:"entUserId,omitempty"`        // 企业下用户id
+	PositionId   int64  `protobuf:"varint,4,opt,name=positionId,proto3" json:"positionId,omitempty"`      // 职位id
+	PositionType int64  `protobuf:"varint,5,opt,name=positionType,proto3" json:"positionType,omitempty"`  // 职位类型 0个人 1企业
+	MgoUserId    string `protobuf:"bytes,6,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`         //原userId
+	AppId        string `protobuf:"bytes,7,opt,name=appId,proto3" json:"appId,omitempty"`                 //剑鱼默认10000
+	UserId       string `protobuf:"bytes,8,opt,name=userId,proto3" json:"userId,omitempty"`               //用户id
+	NewUserId    int64  `protobuf:"varint,9,opt,name=newUserId,proto3" json:"newUserId,omitempty"`        //base_user_id 新用户id
+	AccountId    int64  `protobuf:"varint,10,opt,name=accountId,proto3" json:"accountId,omitempty"`       //账户id
+	EntAccountId int64  `protobuf:"varint,11,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"` //企业账户id
 }
 
 func (x *ParticipateShowReq) Reset() {
@@ -1288,6 +1289,13 @@ func (x *ParticipateShowReq) GetAccountId() int64 {
 	return 0
 }
 
+func (x *ParticipateShowReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 // 列表数据参标信息返回值
 type ShowInfo struct {
 	state         protoimpl.MessageState
@@ -1413,16 +1421,17 @@ type ParticipateInfoReq struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Sid          string `protobuf:"bytes,1,opt,name=sid,proto3" json:"sid,omitempty"`                    // 标讯id
-	EntId        int64  `protobuf:"varint,2,opt,name=entId,proto3" json:"entId,omitempty"`               //企业id
-	EntUserId    int64  `protobuf:"varint,3,opt,name=entUserId,proto3" json:"entUserId,omitempty"`       // 企业下用户id
-	PositionId   int64  `protobuf:"varint,4,opt,name=positionId,proto3" json:"positionId,omitempty"`     // 职位id
-	PositionType int64  `protobuf:"varint,5,opt,name=positionType,proto3" json:"positionType,omitempty"` // 职位类型 0个人 1企业
-	MgoUserId    string `protobuf:"bytes,6,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`        //原userId
-	AppId        string `protobuf:"bytes,7,opt,name=appId,proto3" json:"appId,omitempty"`                //剑鱼默认10000
-	UserId       string `protobuf:"bytes,8,opt,name=userId,proto3" json:"userId,omitempty"`              //用户id
-	NewUserId    int64  `protobuf:"varint,9,opt,name=newUserId,proto3" json:"newUserId,omitempty"`       //base_user_id 新用户id
-	AccountId    int64  `protobuf:"varint,10,opt,name=accountId,proto3" json:"accountId,omitempty"`      //账户id
+	Sid          string `protobuf:"bytes,1,opt,name=sid,proto3" json:"sid,omitempty"`                     // 标讯id
+	EntId        int64  `protobuf:"varint,2,opt,name=entId,proto3" json:"entId,omitempty"`                //企业id
+	EntUserId    int64  `protobuf:"varint,3,opt,name=entUserId,proto3" json:"entUserId,omitempty"`        // 企业下用户id
+	PositionId   int64  `protobuf:"varint,4,opt,name=positionId,proto3" json:"positionId,omitempty"`      // 职位id
+	PositionType int64  `protobuf:"varint,5,opt,name=positionType,proto3" json:"positionType,omitempty"`  // 职位类型 0个人 1企业
+	MgoUserId    string `protobuf:"bytes,6,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`         //原userId
+	AppId        string `protobuf:"bytes,7,opt,name=appId,proto3" json:"appId,omitempty"`                 //剑鱼默认10000
+	UserId       string `protobuf:"bytes,8,opt,name=userId,proto3" json:"userId,omitempty"`               //用户id
+	NewUserId    int64  `protobuf:"varint,9,opt,name=newUserId,proto3" json:"newUserId,omitempty"`        //base_user_id 新用户id
+	AccountId    int64  `protobuf:"varint,10,opt,name=accountId,proto3" json:"accountId,omitempty"`       //账户id
+	EntAccountId int64  `protobuf:"varint,11,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"` //企业账户id
 }
 
 func (x *ParticipateInfoReq) Reset() {
@@ -1527,6 +1536,13 @@ func (x *ParticipateInfoReq) GetAccountId() int64 {
 	return 0
 }
 
+func (x *ParticipateInfoReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 // 详情页参标信息返回值
 type ParticipateDetailInfo struct {
 	state         protoimpl.MessageState
@@ -1709,6 +1725,7 @@ type UpdateBidStatusReq struct {
 	UserId        string   `protobuf:"bytes,15,opt,name=userId,proto3" json:"userId,omitempty"`              //用户id
 	NewUserId     int64    `protobuf:"varint,16,opt,name=newUserId,proto3" json:"newUserId,omitempty"`       //base_user_id 新用户id
 	AccountId     int64    `protobuf:"varint,17,opt,name=accountId,proto3" json:"accountId,omitempty"`       //账户id
+	EntAccountId  int64    `protobuf:"varint,18,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"` //企业账户id
 }
 
 func (x *UpdateBidStatusReq) Reset() {
@@ -1862,6 +1879,13 @@ func (x *UpdateBidStatusReq) GetAccountId() int64 {
 	return 0
 }
 
+func (x *UpdateBidStatusReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 // 投标状态更新返回值
 type UpdateBidStatusRes struct {
 	state         protoimpl.MessageState
@@ -1932,16 +1956,17 @@ type ParticipateContentReq struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Sid          string `protobuf:"bytes,1,opt,name=sid,proto3" json:"sid,omitempty"`                    // 标讯id
-	EntId        int64  `protobuf:"varint,2,opt,name=entId,proto3" json:"entId,omitempty"`               //企业id
-	EntUserId    int64  `protobuf:"varint,3,opt,name=entUserId,proto3" json:"entUserId,omitempty"`       // 企业下用户id
-	PositionId   int64  `protobuf:"varint,4,opt,name=positionId,proto3" json:"positionId,omitempty"`     // 职位id
-	PositionType int64  `protobuf:"varint,5,opt,name=positionType,proto3" json:"positionType,omitempty"` // 职位类型 0个人 1企业
-	MgoUserId    string `protobuf:"bytes,6,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`        //原userId
-	AppId        string `protobuf:"bytes,7,opt,name=appId,proto3" json:"appId,omitempty"`                //剑鱼默认10000
-	UserId       string `protobuf:"bytes,8,opt,name=userId,proto3" json:"userId,omitempty"`              //用户id
-	NewUserId    int64  `protobuf:"varint,9,opt,name=newUserId,proto3" json:"newUserId,omitempty"`       //base_user_id 新用户id
-	AccountId    int64  `protobuf:"varint,10,opt,name=accountId,proto3" json:"accountId,omitempty"`      //账户id
+	Sid          string `protobuf:"bytes,1,opt,name=sid,proto3" json:"sid,omitempty"`                     // 标讯id
+	EntId        int64  `protobuf:"varint,2,opt,name=entId,proto3" json:"entId,omitempty"`                //企业id
+	EntUserId    int64  `protobuf:"varint,3,opt,name=entUserId,proto3" json:"entUserId,omitempty"`        // 企业下用户id
+	PositionId   int64  `protobuf:"varint,4,opt,name=positionId,proto3" json:"positionId,omitempty"`      // 职位id
+	PositionType int64  `protobuf:"varint,5,opt,name=positionType,proto3" json:"positionType,omitempty"`  // 职位类型 0个人 1企业
+	MgoUserId    string `protobuf:"bytes,6,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`         //原userId
+	AppId        string `protobuf:"bytes,7,opt,name=appId,proto3" json:"appId,omitempty"`                 //剑鱼默认10000
+	UserId       string `protobuf:"bytes,8,opt,name=userId,proto3" json:"userId,omitempty"`               //用户id
+	NewUserId    int64  `protobuf:"varint,9,opt,name=newUserId,proto3" json:"newUserId,omitempty"`        //base_user_id 新用户id
+	AccountId    int64  `protobuf:"varint,10,opt,name=accountId,proto3" json:"accountId,omitempty"`       //账户id
+	EntAccountId int64  `protobuf:"varint,11,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"` //企业账户id
 }
 
 func (x *ParticipateContentReq) Reset() {
@@ -2046,6 +2071,13 @@ func (x *ParticipateContentReq) GetAccountId() int64 {
 	return 0
 }
 
+func (x *ParticipateContentReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 // 获取投标状态信息结果
 type ParticipateContentData struct {
 	state         protoimpl.MessageState
@@ -2211,18 +2243,19 @@ type ParticipateRecordsReq struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Page         int64  `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"`                 // 页码
-	PageSize     int64  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`         // 每页条数
-	Sid          string `protobuf:"bytes,3,opt,name=sid,proto3" json:"sid,omitempty"`                    // 标讯id
-	EntId        int64  `protobuf:"varint,4,opt,name=entId,proto3" json:"entId,omitempty"`               //企业id
-	EntUserId    int64  `protobuf:"varint,5,opt,name=entUserId,proto3" json:"entUserId,omitempty"`       // 企业下用户id
-	PositionId   int64  `protobuf:"varint,6,opt,name=positionId,proto3" json:"positionId,omitempty"`     // 职位id
-	PositionType int64  `protobuf:"varint,7,opt,name=positionType,proto3" json:"positionType,omitempty"` // 职位类型 0个人 1企业
-	MgoUserId    string `protobuf:"bytes,8,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`        //原userId
-	AppId        string `protobuf:"bytes,9,opt,name=appId,proto3" json:"appId,omitempty"`                //剑鱼默认10000
-	UserId       string `protobuf:"bytes,10,opt,name=userId,proto3" json:"userId,omitempty"`             //用户id
-	NewUserId    int64  `protobuf:"varint,11,opt,name=newUserId,proto3" json:"newUserId,omitempty"`      //base_user_id 新用户id
-	AccountId    int64  `protobuf:"varint,12,opt,name=accountId,proto3" json:"accountId,omitempty"`      //账户id
+	Page         int64  `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"`                  // 页码
+	PageSize     int64  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`          // 每页条数
+	Sid          string `protobuf:"bytes,3,opt,name=sid,proto3" json:"sid,omitempty"`                     // 标讯id
+	EntId        int64  `protobuf:"varint,4,opt,name=entId,proto3" json:"entId,omitempty"`                //企业id
+	EntUserId    int64  `protobuf:"varint,5,opt,name=entUserId,proto3" json:"entUserId,omitempty"`        // 企业下用户id
+	PositionId   int64  `protobuf:"varint,6,opt,name=positionId,proto3" json:"positionId,omitempty"`      // 职位id
+	PositionType int64  `protobuf:"varint,7,opt,name=positionType,proto3" json:"positionType,omitempty"`  // 职位类型 0个人 1企业
+	MgoUserId    string `protobuf:"bytes,8,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`         //原userId
+	AppId        string `protobuf:"bytes,9,opt,name=appId,proto3" json:"appId,omitempty"`                 //剑鱼默认10000
+	UserId       string `protobuf:"bytes,10,opt,name=userId,proto3" json:"userId,omitempty"`              //用户id
+	NewUserId    int64  `protobuf:"varint,11,opt,name=newUserId,proto3" json:"newUserId,omitempty"`       //base_user_id 新用户id
+	AccountId    int64  `protobuf:"varint,12,opt,name=accountId,proto3" json:"accountId,omitempty"`       //账户id
+	EntAccountId int64  `protobuf:"varint,13,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"` //企业账户id
 }
 
 func (x *ParticipateRecordsReq) Reset() {
@@ -2341,6 +2374,13 @@ func (x *ParticipateRecordsReq) GetAccountId() int64 {
 	return 0
 }
 
+func (x *ParticipateRecordsReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 // 参标操作记录返回
 type ParticipateRecords struct {
 	state         protoimpl.MessageState
@@ -2537,16 +2577,17 @@ type ParticipatePersonsReq struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	EntId        int64  `protobuf:"varint,1,opt,name=entId,proto3" json:"entId,omitempty"`               //企业id
-	EntUserId    int64  `protobuf:"varint,2,opt,name=entUserId,proto3" json:"entUserId,omitempty"`       // 企业下用户id
-	PositionId   int64  `protobuf:"varint,3,opt,name=positionId,proto3" json:"positionId,omitempty"`     // 职位id
-	PositionType int64  `protobuf:"varint,4,opt,name=positionType,proto3" json:"positionType,omitempty"` // 职位类型 0个人 1企业
-	MgoUserId    string `protobuf:"bytes,5,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`        //原userId
-	AppId        string `protobuf:"bytes,6,opt,name=appId,proto3" json:"appId,omitempty"`                //剑鱼默认10000
-	UserId       string `protobuf:"bytes,7,opt,name=userId,proto3" json:"userId,omitempty"`              //用户id
-	NewUserId    int64  `protobuf:"varint,8,opt,name=newUserId,proto3" json:"newUserId,omitempty"`       //base_user_id 新用户id
-	AccountId    int64  `protobuf:"varint,9,opt,name=accountId,proto3" json:"accountId,omitempty"`       //账户id
-	ProjectId    string `protobuf:"bytes,10,opt,name=projectId,proto3" json:"projectId,omitempty"`       //项目id  移动端需要
+	EntId        int64  `protobuf:"varint,1,opt,name=entId,proto3" json:"entId,omitempty"`                //企业id
+	EntUserId    int64  `protobuf:"varint,2,opt,name=entUserId,proto3" json:"entUserId,omitempty"`        // 企业下用户id
+	PositionId   int64  `protobuf:"varint,3,opt,name=positionId,proto3" json:"positionId,omitempty"`      // 职位id
+	PositionType int64  `protobuf:"varint,4,opt,name=positionType,proto3" json:"positionType,omitempty"`  // 职位类型 0个人 1企业
+	MgoUserId    string `protobuf:"bytes,5,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`         //原userId
+	AppId        string `protobuf:"bytes,6,opt,name=appId,proto3" json:"appId,omitempty"`                 //剑鱼默认10000
+	UserId       string `protobuf:"bytes,7,opt,name=userId,proto3" json:"userId,omitempty"`               //用户id
+	NewUserId    int64  `protobuf:"varint,8,opt,name=newUserId,proto3" json:"newUserId,omitempty"`        //base_user_id 新用户id
+	AccountId    int64  `protobuf:"varint,9,opt,name=accountId,proto3" json:"accountId,omitempty"`        //账户id
+	ProjectId    string `protobuf:"bytes,10,opt,name=projectId,proto3" json:"projectId,omitempty"`        //项目id  移动端需要
+	EntAccountId int64  `protobuf:"varint,11,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"` //企业账户id
 }
 
 func (x *ParticipatePersonsReq) Reset() {
@@ -2651,6 +2692,13 @@ func (x *ParticipatePersonsReq) GetProjectId() string {
 	return ""
 }
 
+func (x *ParticipatePersonsReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 type ParticipatePerson struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2837,6 +2885,7 @@ type ParticipateSetUpInfoReq struct {
 	BidType        []*BidTypeReq    `protobuf:"bytes,12,rep,name=bidType,proto3" json:"bidType,omitempty"`
 	RemindRule     []*RemindRuleReq `protobuf:"bytes,13,rep,name=remindRule,proto3" json:"remindRule,omitempty"`
 	NecessaryField string           `protobuf:"bytes,14,opt,name=necessaryField,proto3" json:"necessaryField,omitempty"` //必填字段
+	EntAccountId   int64            `protobuf:"varint,15,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"`    //企业账户id
 }
 
 func (x *ParticipateSetUpInfoReq) Reset() {
@@ -2969,6 +3018,13 @@ func (x *ParticipateSetUpInfoReq) GetNecessaryField() string {
 	return ""
 }
 
+func (x *ParticipateSetUpInfoReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 type BidTypeReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3230,20 +3286,21 @@ type ParticipateActionReq struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	EntId        int64  `protobuf:"varint,1,opt,name=entId,proto3" json:"entId,omitempty"`               //企业id
-	EntUserId    int64  `protobuf:"varint,2,opt,name=entUserId,proto3" json:"entUserId,omitempty"`       // 企业下用户id
-	PositionId   int64  `protobuf:"varint,3,opt,name=positionId,proto3" json:"positionId,omitempty"`     // 职位id
-	PositionType int64  `protobuf:"varint,4,opt,name=positionType,proto3" json:"positionType,omitempty"` // 职位类型 0个人 1企业
-	MgoUserId    string `protobuf:"bytes,5,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`        //原userId
-	AppId        string `protobuf:"bytes,6,opt,name=appId,proto3" json:"appId,omitempty"`                //剑鱼默认10000
-	UserId       string `protobuf:"bytes,7,opt,name=userId,proto3" json:"userId,omitempty"`              //用户id
-	NewUserId    int64  `protobuf:"varint,8,opt,name=newUserId,proto3" json:"newUserId,omitempty"`       //base_user_id 新用户id
-	AccountId    int64  `protobuf:"varint,9,opt,name=accountId,proto3" json:"accountId,omitempty"`       //账户id
-	BidIds       string `protobuf:"bytes,10,opt,name=bidIds,proto3" json:"bidIds,omitempty"`             //招标信息id
-	ToEntUserId  string `protobuf:"bytes,11,opt,name=toEntUserId,proto3" json:"toEntUserId,omitempty"`   //划转对象的企业用户id
-	IsRetain     bool   `protobuf:"varint,12,opt,name=isRetain,proto3" json:"isRetain,omitempty"`        //是否保留原跟踪人
-	ActionType   string `protobuf:"bytes,13,opt,name=actionType,proto3" json:"actionType,omitempty"`     //in:参标;out:终止参标;transfer:划转
-	ProjectIds   string `protobuf:"bytes,14,opt,name=projectIds,proto3" json:"projectIds,omitempty"`     //项目ids 多个,号隔开
+	EntId        int64  `protobuf:"varint,1,opt,name=entId,proto3" json:"entId,omitempty"`                //企业id
+	EntUserId    int64  `protobuf:"varint,2,opt,name=entUserId,proto3" json:"entUserId,omitempty"`        // 企业下用户id
+	PositionId   int64  `protobuf:"varint,3,opt,name=positionId,proto3" json:"positionId,omitempty"`      // 职位id
+	PositionType int64  `protobuf:"varint,4,opt,name=positionType,proto3" json:"positionType,omitempty"`  // 职位类型 0个人 1企业
+	MgoUserId    string `protobuf:"bytes,5,opt,name=mgoUserId,proto3" json:"mgoUserId,omitempty"`         //原userId
+	AppId        string `protobuf:"bytes,6,opt,name=appId,proto3" json:"appId,omitempty"`                 //剑鱼默认10000
+	UserId       string `protobuf:"bytes,7,opt,name=userId,proto3" json:"userId,omitempty"`               //用户id
+	NewUserId    int64  `protobuf:"varint,8,opt,name=newUserId,proto3" json:"newUserId,omitempty"`        //base_user_id 新用户id
+	AccountId    int64  `protobuf:"varint,9,opt,name=accountId,proto3" json:"accountId,omitempty"`        //账户id
+	BidIds       string `protobuf:"bytes,10,opt,name=bidIds,proto3" json:"bidIds,omitempty"`              //招标信息id
+	ToEntUserId  string `protobuf:"bytes,11,opt,name=toEntUserId,proto3" json:"toEntUserId,omitempty"`    //划转对象的企业用户id
+	IsRetain     bool   `protobuf:"varint,12,opt,name=isRetain,proto3" json:"isRetain,omitempty"`         //是否保留原跟踪人
+	ActionType   string `protobuf:"bytes,13,opt,name=actionType,proto3" json:"actionType,omitempty"`      //in:参标;out:终止参标;transfer:划转
+	ProjectIds   string `protobuf:"bytes,14,opt,name=projectIds,proto3" json:"projectIds,omitempty"`      //项目ids 多个,号隔开
+	EntAccountId int64  `protobuf:"varint,15,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"` //企业账户id
 }
 
 func (x *ParticipateActionReq) Reset() {
@@ -3376,6 +3433,13 @@ func (x *ParticipateActionReq) GetProjectIds() string {
 	return ""
 }
 
+func (x *ParticipateActionReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 //
 type ParticipateActionRes struct {
 	state         protoimpl.MessageState
@@ -3467,6 +3531,7 @@ type ParticipateListReq struct {
 	NewUserId     int64  `protobuf:"varint,20,opt,name=newUserId,proto3" json:"newUserId,omitempty"`         //base_user_id 新用户id
 	AccountId     int64  `protobuf:"varint,21,opt,name=accountId,proto3" json:"accountId,omitempty"`         //账户id
 	OrderNum      int64  `protobuf:"varint,22,opt,name=orderNum,proto3" json:"orderNum,omitempty"`           //排序:0:投标截止日期正序、1:开标时间正序、2:更新状态时间倒叙
+	EntAccountId  int64  `protobuf:"varint,23,opt,name=entAccountId,proto3" json:"entAccountId,omitempty"`   //企业账户id
 }
 
 func (x *ParticipateListReq) Reset() {
@@ -3655,6 +3720,13 @@ func (x *ParticipateListReq) GetOrderNum() int64 {
 	return 0
 }
 
+func (x *ParticipateListReq) GetEntAccountId() int64 {
+	if x != nil {
+		return x.EntAccountId
+	}
+	return 0
+}
+
 //参标列表
 type ParticipateList struct {
 	state         protoimpl.MessageState
@@ -4116,7 +4188,7 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72,
 	0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d,
 	0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa6, 0x02, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xca, 0x02, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69,
 	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a,
 	0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12,
 	0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
@@ -4134,117 +4206,126 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
 	0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49,
 	0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22,
-	0x30, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x22, 0x6e, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
-	0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63,
-	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f,
-	0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x04, 0x64,
-	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x78, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74,
-	0x61, 0x22, 0xa6, 0x02, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74,
-	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e,
-	0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64,
-	0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e,
-	0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22,
-	0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
-	0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
-	0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c,
-	0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09,
-	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x93, 0x02, 0x0a, 0x15, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
-	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74,
-	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73,
-	0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x12, 0x30,
-	0x0a, 0x13, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x6f, 0x70, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x68, 0x6f,
-	0x77, 0x53, 0x74, 0x6f, 0x70, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
-	0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e,
-	0x73, 0x66, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
-	0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1e,
-	0x0a, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20,
-	0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65,
-	0x22, 0x7b, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f,
-	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64,
-	0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61,
-	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
-	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74,
-	0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf6, 0x03,
-	0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a,
-	0x0a, 0x08, 0x62, 0x69, 0x64, 0x53, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x08, 0x62, 0x69, 0x64, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73,
-	0x57, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x73, 0x57, 0x69, 0x6e,
-	0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61,
-	0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x65, 0x72,
-	0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e,
-	0x65, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e,
-	0x6e, 0x65, 0x6c, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
-	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06,
-	0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x69,
-	0x6e, 0x6e, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09,
-	0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f,
-	0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
-	0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f,
-	0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c,
-	0x0a, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
-	0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70,
-	0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65,
-	0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e,
-	0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63,
-	0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08,
-	0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
-	0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d,
-	0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67,
-	0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,
-	0x64, 0x61, 0x74, 0x61, 0x22, 0xa9, 0x02, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x10,
-	0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64,
-	0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65,
-	0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73,
-	0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x67, 0x6f, 0x55,
-	0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x67, 0x6f,
-	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
-	0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73,
-	0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49,
-	0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72,
-	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12,
+	0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6e, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
+	0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65,
+	0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65,
+	0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73,
+	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12,
+	0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
+	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+	0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xca, 0x02, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
+	0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03,
+	0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x14,
+	0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65,
+	0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
+	0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18,
+	0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
+	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22,
+	0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0b,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x49, 0x64, 0x22, 0x93, 0x02, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
+	0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f,
+	0x73, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x74,
+	0x6f, 0x70, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x6f, 0x70, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x77,
+	0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
+	0x73, 0x68, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08,
+	0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+	0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a,
+	0x65, 0x63, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f,
+	0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64,
+	0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x45,
+	0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+	0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x75, 0x72,
+	0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x19,
+	0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72,
+	0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d,
+	0x73, 0x67, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
+	0x69, 0x70, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+	0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9a, 0x04, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07,
+	0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62,
+	0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x64, 0x53, 0x74, 0x61,
+	0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x62, 0x69, 0x64, 0x53, 0x74, 0x61,
+	0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x05, 0x69, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63,
+	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e,
+	0x12, 0x22, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x68, 0x6f, 0x6e, 0x65,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50,
+	0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03,
+	0x73, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x14,
+	0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65,
+	0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
+	0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
+	0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x0e, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18,
+	0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
+	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x11, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22,
+	0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x12,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x49, 0x64, 0x22, 0x5c, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x64, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f,
+	0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43,
+	0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
+	0x22, 0xcd, 0x02, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
+	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05,
+	0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74,
+	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
+	0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
+	0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
+	0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x09, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c,
+	0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c,
+	0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64,
 	0x22, 0xe8, 0x01, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
 	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x62,
 	0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x69,
@@ -4267,7 +4348,7 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
 	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
 	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65,
-	0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd9, 0x02, 0x0a,
+	0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xfd, 0x02, 0x0a,
 	0x15, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f,
 	0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01,
 	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61,
@@ -4289,164 +4370,173 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52,
 	0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63,
 	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61,
-	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x12, 0x50, 0x61, 0x72,
-	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12,
-	0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x61, 0x74,
-	0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74,
-	0x65, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f,
-	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,
-	0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54,
-	0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x72,
-	0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12,
-	0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
-	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
-	0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 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, 0x7f, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x12, 0x19,
-	0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72,
-	0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d,
-	0x73, 0x67, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x1e, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x61, 0x74, 0x61,
-	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb5, 0x02, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x74, 0x69,
-	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
-	0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65,
-	0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73,
-	0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69,
-	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x67, 0x6f, 0x55,
-	0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x67, 0x6f,
-	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
-	0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73,
-	0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49,
-	0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72,
-	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64,
-	0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xd2,
-	0x01, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65,
-	0x72, 0x73, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f,
-	0x77, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72,
-	0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73,
-	0x50, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x73, 0x50, 0x61,
-	0x72, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69,
-	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x52, 0x05, 0x75, 0x73,
-	0x65, 0x72, 0x73, 0x22, 0x7a, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
-	0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08,
-	0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
-	0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d,
-	0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67,
-	0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
-	0xde, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53,
-	0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x65,
-	0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49,
-	0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
-	0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
-	0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54,
-	0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49,
-	0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
-	0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
-	0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a,
-	0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73,
-	0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41,
-	0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x73, 0x41, 0x6c,
-	0x6c, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69,
-	0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x52, 0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70,
-	0x65, 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x18,
-	0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52,
-	0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x52, 0x0a, 0x72, 0x65,
-	0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x63, 0x65,
-	0x73, 0x73, 0x61, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x22, 0x3a, 0x0a, 0x0a, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12,
-	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x0d,
-	0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a,
-	0x08, 0x62, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x62, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d,
-	0x61, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65,
-	0x6d, 0x61, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x14,
-	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70,
-	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2c,
-	0x0a, 0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65,
-	0x52, 0x65, 0x71, 0x52, 0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0a,
-	0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x15, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64,
-	0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52,
-	0x75, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x63,
-	0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x7f, 0x0a, 0x17, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f,
-	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64,
-	0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61,
-	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
-	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74,
-	0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xac, 0x03, 0x0a,
-	0x14, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65,
-	0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70,
-	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a,
-	0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61,
-	0x70, 0x70, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49,
-	0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77,
-	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65,
-	0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x49, 0x64, 0x73, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x64, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a,
-	0x0b, 0x74, 0x6f, 0x45, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x45, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
-	0x1a, 0x0a, 0x08, 0x69, 0x73, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x08, 0x69, 0x73, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70,
-	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x73, 0x22, 0x5e, 0x0a, 0x14, 0x50,
+	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x41,
+	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c,
+	0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x9a, 0x01, 0x0a,
+	0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f,
+	0x72, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x61,
+	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
+	0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44,
+	0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,
+	0x65, 0x72, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x63,
+	0x6f, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72,
+	0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x16, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44,
+	0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 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, 0x7f, 0x0a, 0x15, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52,
+	0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a,
+	0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+	0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
+	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73,
+	0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd9, 0x02, 0x0a, 0x15, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e,
+	0x73, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e,
+	0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65,
+	0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c,
+	0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09,
+	0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70,
+	0x70, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64,
+	0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55,
+	0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77,
+	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49,
+	0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63,
+	0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd2, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
+	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70,
+	0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e,
+	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x12,
+	0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f,
+	0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x06, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x75, 0x73,
+	0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f,
+	0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65,
+	0x72, 0x73, 0x6f, 0x6e, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x7a, 0x0a, 0x15, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e,
+	0x73, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
+	0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
+	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
+	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f,
+	0x6e, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x82, 0x04, 0x0a, 0x17, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f,
+	0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74,
+	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e,
+	0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70,
+	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d,
+	0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+	0x6d, 0x67, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70,
+	0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12,
+	0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55,
+	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x0b, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x07, 0x62,
+	0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71,
+	0x52, 0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x6d,
+	0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e,
+	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c,
+	0x65, 0x52, 0x65, 0x71, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65,
+	0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x46, 0x69, 0x65,
+	0x6c, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73,
+	0x61, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x41,
+	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c,
+	0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x0a,
+	0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18,
+	0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
+	0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x69,
+	0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x64,
+	0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x69, 0x64,
+	0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64,
+	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e,
+	0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f,
+	0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x07, 0x62, 0x69,
+	0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x78,
+	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x52,
+	0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x69,
+	0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65,
+	0x52, 0x65, 0x71, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12,
+	0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c,
+	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61,
+	0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x7f, 0x0a, 0x17, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+	0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a,
+	0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+	0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
+	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e,
+	0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd0, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+	0x71, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55,
+	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x67, 0x6f,
+	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x67,
+	0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a,
+	0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75,
+	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64,
+	0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49,
+	0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x49, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x62, 0x69, 0x64, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x45,
+	0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+	0x74, 0x6f, 0x45, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69,
+	0x73, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69,
+	0x73, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65,
+	0x63, 0x74, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f,
+	0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63,
+	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65,
+	0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x14, 0x50,
 	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
 	0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18,
 	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17,
 	0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
 	0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8c, 0x05, 0x0a, 0x12,
+	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb0, 0x05, 0x0a, 0x12,
 	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
 	0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
 	0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55,
@@ -4487,98 +4577,101 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x15, 0x20,
 	0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a,
 	0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22, 0xc7, 0x02, 0x0a, 0x0f, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e,
-	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20,
-	0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65,
-	0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x22,
-	0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
-	0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x69, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
-	0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b,
-	0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a,
-	0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x69,
-	0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x70,
-	0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x43, 0x6f, 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x6f, 0x77, 0x54,
-	0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x6f, 0x77, 0x54, 0x69,
-	0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05,
-	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22,
-	0x75, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69,
-	0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65,
-	0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74,
-	0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
-	0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61,
-	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd3, 0x06, 0x0a, 0x06, 0x42, 0x78, 0x43, 0x6f, 0x72,
-	0x65, 0x12, 0x36, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69,
-	0x73, 0x74, 0x12, 0x11, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72,
-	0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53,
-	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3e, 0x0a, 0x0b, 0x53, 0x65, 0x61,
-	0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
-	0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71,
-	0x1a, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
-	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72,
-	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1a, 0x2e, 0x62,
+	0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e,
+	0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x0c, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc7,
+	0x02, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69,
+	0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
+	0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75,
+	0x64, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67,
+	0x65, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
+	0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
+	0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x64, 0x54, 0x69, 0x6d,
+	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x69, 0x64, 0x54, 0x69, 0x6d, 0x65,
+	0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
+	0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69,
+	0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x75, 0x70,
+	0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28,
+	0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f,
+	0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07,
+	0x6e, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e,
+	0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f,
+	0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77,
+	0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
+	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x6c,
+	0x69, 0x73, 0x74, 0x22, 0x75, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
+	0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72,
+	0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72,
+	0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a,
+	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x78,
+	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
+	0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd3, 0x06, 0x0a, 0x06, 0x42,
+	0x78, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
+	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f,
+	0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3e, 0x0a,
+	0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69,
+	0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65,
+	0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a,
+	0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77,
+	0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
+	0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62,
 	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74,
-	0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
-	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f,
-	0x77, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
+	0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e, 0x62, 0x78,
+	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
+	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
 	0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f,
-	0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72,
-	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12,
-	0x49, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61,
-	0x74, 0x65, 0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69,
-	0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61,
+	0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x64,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
+	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+	0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61,
+	0x74, 0x65, 0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x12, 0x52,
+	0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e,
+	0x74, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
 	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
-	0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a,
-	0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x12, 0x52,
-	0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63,
-	0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
-	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73,
 	0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72,
-	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52,
 	0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74,
-	0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
-	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72,
-	0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
-	0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73,
-	0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a,
-	0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
-	0x12, 0x4f, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72,
-	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
-	0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
-	0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
-	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
-	0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x42, 0x0a, 0x5a, 0x08,
-	0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
+	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63,
+	0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
+	0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f,
+	0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
+	0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74,
+	0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78,
+	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
+	0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x50, 0x61,
+	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e,
+	0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f,
+	0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66,
+	0x6f, 0x52, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+	0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f,
+	0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
+	0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
+	0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
+	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73,
+	0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
+	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
+	0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (

+ 22 - 0
jyBXCore/rpc/util/participate.go

@@ -1,6 +1,7 @@
 package util
 
 import (
+	IC "jyBXCore/rpc/init"
 	"sync"
 )
 
@@ -27,3 +28,24 @@ func GetParticipateLock(str string) *sync.Mutex {
 	PLock.Unlock()
 	return PLock.UserLock[str]
 }
+
+// 参标权限判断
+func IsAllowedParticipate(appId, userId string, newUserId, accountId, entAccountId, entId, entUserId, positionId, positionType int64) (b bool, role int64) {
+	powerCheck := IC.Middleground.PowerCheckCenter.Check(appId, userId, newUserId, accountId, entId, positionType, positionId)
+	//不是超级订阅 也不是大会员
+	if powerCheck.Vip.Status <= 0 && powerCheck.Member.Status <= 0 {
+		return
+	}
+	role = powerCheck.Ent.EntRoleId
+	resource := IC.Middleground.ResourceCenter.Haspowers(accountId, entAccountId, entId, entUserId)
+	if len(resource.Powers) != 0 {
+		for _, r := range resource.Powers {
+			//资源中台 cb_zy_code
+			if r == IC.C.ResourceCode {
+				b = true
+				break
+			}
+		}
+	}
+	return
+}

+ 0 - 49
jyBXCore/rpc/util/userInfo.go

@@ -1,12 +1,7 @@
 package util
 
 import (
-	IC "jyBXCore/rpc/init"
 	"strings"
-
-	MC "app.yhyue.com/moapp/jybase/common"
-	"app.yhyue.com/moapp/jybase/mongodb"
-	"app.yhyue.com/moapp/jybase/mysql"
 )
 
 // VipState 是否是付费用户
@@ -19,50 +14,6 @@ type VipState struct {
 	IsNewEnt     bool  //新版商机管理
 }
 
-func GetVipState(mysql *mysql.Mysql, mg mongodb.MongodbSim, userId string, entId int64) (vs *VipState) {
-	vs = &VipState{}
-	if userId == "" {
-		return
-	}
-	phone := ""
-	data, ok := mg.FindById("user", userId, `"i_member_status":1,"i_vip_status":1,"s_m_phone":1,"s_phone":1,"o_vipjy":1,"l_registedate":1`)
-	if data != nil && len(*data) > 0 && ok {
-		iVipStatus := MC.Int64All((*data)["i_vip_status"])
-		if iVipStatus > 1 {
-			vs.VipState = 1
-			oVipJY, _ := (*data)["o_vipjy"].(map[string]interface{})
-			if oVipJY["o_buyset"] != nil {
-				oBuys := oVipJY["o_buyset"].(map[string]interface{})
-				if oBuys["upgrade"] != nil {
-					vs.VipState = 2
-				}
-			}
-		}
-		if iMemberStatus := MC.Int64All((*data)["i_member_status"]); iMemberStatus > 0 {
-			vs.BigMember = iMemberStatus
-		}
-		if sPhone, _ := (*data)["s_phone"].(string); sPhone != "" {
-			phone = sPhone
-		} else if sMPhone, _ := (*data)["s_m_phone"].(string); sMPhone != "" {
-			phone = sMPhone
-		}
-		if phone != "" && entId > 0 {
-			entNicheInfos := mysql.SelectBySql(`SELECT i.status,i.isNew,r.role_id,u.power FROM (entniche_user u LEFT JOIN entniche_user_role r ON r.user_id = u.id)  LEFT JOIN entniche_info i ON u.ent_id=i.id WHERE u.phone = ? and i.id = ? `, phone, entId)
-			//商机管理用户信息判断
-			if entNicheInfos != nil && len(*entNicheInfos) > 0 {
-				entNicheInfo := (*entNicheInfos)[0]
-				if MC.IntAll(entNicheInfo["status"]) > 0 && (MC.IntAll(entNicheInfo["power"]) == 1 || MC.IntAll(entNicheInfo["role_id"]) > 0) {
-					vs.EntMember = 1
-				}
-				vs.IsNewEnt = MC.Int64All(entNicheInfo["isNew"]) > 0
-			}
-		}
-		vs.RegisterData, _ = ((*data)["l_registedate"]).(int64)
-		vs.IsOldVip = vs.VipState > 0 && vs.RegisterData < IC.C.ContextOldVipLimit
-	}
-	return
-}
-
 // IsPayedUser 是否是付费账户
 func (vs *VipState) IsPayedUser() bool {
 	return vs.VipState > 0 || vs.BigMember > 0 || vs.EntMember > 0