Commit 2ffe574c authored by pengjun's avatar pengjun

#627 update coll & issuance query result

parent af89673b
...@@ -584,6 +584,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -584,6 +584,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
// 构造借出记录 // 构造借出记录
borrowRecord := &pty.BorrowRecord{} borrowRecord := &pty.BorrowRecord{}
borrowRecord.RecordId = common.ToHex(action.txhash) borrowRecord.RecordId = common.ToHex(action.txhash)
borrowRecord.CollateralizeId = coll.CollateralizeId
borrowRecord.AccountAddr = action.fromaddr borrowRecord.AccountAddr = action.fromaddr
borrowRecord.CollateralValue = btyFrozen borrowRecord.CollateralValue = btyFrozen
borrowRecord.StartTime = action.blocktime borrowRecord.StartTime = action.blocktime
......
...@@ -25,6 +25,7 @@ func (c *Collateralize) Query_CollateralizeInfoByID(req *pty.ReqCollateralizeInf ...@@ -25,6 +25,7 @@ func (c *Collateralize) Query_CollateralizeInfoByID(req *pty.ReqCollateralizeInf
CreateAddr: coll.CreateAddr, CreateAddr: coll.CreateAddr,
Balance: coll.Balance, Balance: coll.Balance,
Period: coll.Period, Period: coll.Period,
CollateralizeId: coll.CollateralizeId,
}, nil }, nil
} }
...@@ -46,6 +47,7 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn ...@@ -46,6 +47,7 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn
CreateAddr: coll.CreateAddr, CreateAddr: coll.CreateAddr,
Balance: coll.Balance, Balance: coll.Balance,
Period: coll.Period, Period: coll.Period,
CollateralizeId: coll.CollateralizeId,
}) })
} }
...@@ -100,6 +102,18 @@ func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateraliz ...@@ -100,6 +102,18 @@ func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateraliz
return ret, nil return ret, nil
} }
func (c *Collateralize) Query_CollateralizeRecordByStatus(req *pty.ReqCollateralizeRecordByStatus) (types.Message, error) {
ret := &pty.RepCollateralizeRecords{}
records, err := queryCollateralizeRecordByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status, req.Index)
if err != nil {
clog.Error("Query_CollateralizeRecordByStatus", "get collateralize record error", err)
return nil, err
}
ret.Records = records
return ret, nil
}
func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecordByAddr) (types.Message, error) { func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecordByAddr) (types.Message, error) {
config, err := getCollateralizeConfig(c.GetStateDB()) config, err := getCollateralizeConfig(c.GetStateDB())
if err != nil { if err != nil {
......
...@@ -2,15 +2,15 @@ syntax = "proto3"; ...@@ -2,15 +2,15 @@ syntax = "proto3";
package types; package types;
// 贷信息 // 贷信息
message Collateralize { message Collateralize {
string collateralizeId = 1; //借贷ID,一期借贷对应一个ID string collateralizeId = 1; //放贷ID,一期放贷对应一个ID
int64 totalBalance = 2; //当期可借贷的总金额(ccny) int64 totalBalance = 2; //当期贷的总金额(ccny)
int64 debtCeiling = 3; //单用户可借出的限额(ccny) int64 debtCeiling = 3; //单用户可借出的限额(ccny)
float liquidationRatio = 4; //清算比例 float liquidationRatio = 4; //清算比例
float stabilityFeeRatio = 5; //稳定费率 float stabilityFeeRatio = 5; //稳定费率
string createAddr = 6; //创建人地址 string createAddr = 6; //创建人地址
int64 balance = 7; //剩余可借贷金额(ccny) int64 balance = 7; //放贷剩余金额(ccny)
repeated BorrowRecord borrowRecords = 8; //借贷记录 repeated BorrowRecord borrowRecords = 8; //借贷记录
repeated BorrowRecord InvalidRecords = 9; //失效的借贷记录 repeated BorrowRecord InvalidRecords = 9; //失效的借贷记录
int32 status = 10;//当期借贷的状态,是否关闭 int32 status = 10;//当期借贷的状态,是否关闭
...@@ -33,9 +33,10 @@ message BorrowRecord { ...@@ -33,9 +33,10 @@ message BorrowRecord {
int64 liquidateTime = 8; //清算时间 int64 liquidateTime = 8; //清算时间
int64 expireTime = 9; //超时清算时间 int64 expireTime = 9; //超时清算时间
int32 preStatus = 10;//上一次抵押状态,用于告警恢复 int32 preStatus = 10;//上一次抵押状态,用于告警恢复
string recordId = 11;//借出id,标识一次借出记录 string recordId = 11;//借贷id,标识一次借出记录
int64 index = 12;//当前索引 string collateralizeId = 12;//放贷id
int64 preIndex = 13;//上级索引 int64 index = 13;//当前索引
int64 preIndex = 14;//上级索引
} }
// 资产价格记录 // 资产价格记录
...@@ -71,7 +72,7 @@ message CollateralizeManage { ...@@ -71,7 +72,7 @@ message CollateralizeManage {
message CollateralizeAddr { message CollateralizeAddr {
repeated string superAddrs = 1; //大户地址 repeated string superAddrs = 1; //大户地址
} }
// 创建 // 创建
message CollateralizeCreate { message CollateralizeCreate {
int64 totalBalance = 1; //可借贷总金额 int64 totalBalance = 1; //可借贷总金额
} }
...@@ -102,12 +103,12 @@ message CollateralizeFeed { ...@@ -102,12 +103,12 @@ message CollateralizeFeed {
repeated int64 volume = 3; //成交量 repeated int64 volume = 3; //成交量
} }
// 贷关闭 // 贷关闭
message CollateralizeClose { message CollateralizeClose {
string collateralizeId = 1; //借贷期数ID string collateralizeId = 1; //借贷期数ID
} }
// exec_local 贷信息 // exec_local 贷信息
message ReceiptCollateralize { message ReceiptCollateralize {
string collateralizeId = 1; string collateralizeId = 1;
string createAddr = 2; string createAddr = 2;
...@@ -119,7 +120,7 @@ message ReceiptCollateralize { ...@@ -119,7 +120,7 @@ message ReceiptCollateralize {
int64 preIndex = 8; int64 preIndex = 8;
} }
// exec_local 贷记录信息 // exec_local 贷记录信息
message CollateralizeRecord { message CollateralizeRecord {
string collateralizeId = 1; string collateralizeId = 1;
string addr = 2; string addr = 2;
...@@ -127,17 +128,17 @@ message CollateralizeRecord { ...@@ -127,17 +128,17 @@ message CollateralizeRecord {
int64 index = 4; int64 index = 4;
} }
// exec_local 贷记录信息列表 // exec_local 贷记录信息列表
message CollateralizeRecords { message CollateralizeRecords {
repeated CollateralizeRecord records = 1; repeated CollateralizeRecord records = 1;
} }
// 根据ID查询一期贷信息 // 根据ID查询一期贷信息
message ReqCollateralizeInfo { message ReqCollateralizeInfo {
string collateralizeId = 1; string collateralizeId = 1;
} }
// 返回一期贷信息 // 返回一期贷信息
message RepCollateralizeCurrentInfo { message RepCollateralizeCurrentInfo {
int32 status = 1;//当期借贷的状态,是否关闭 int32 status = 1;//当期借贷的状态,是否关闭
int64 totalBalance = 2; //当期可借贷的总金额(ccny) int64 totalBalance = 2; //当期可借贷的总金额(ccny)
...@@ -147,19 +148,20 @@ message RepCollateralizeCurrentInfo { ...@@ -147,19 +148,20 @@ message RepCollateralizeCurrentInfo {
string createAddr = 6; //创建人地址 string createAddr = 6; //创建人地址
int64 balance = 7; //剩余可借贷金额(ccny) int64 balance = 7; //剩余可借贷金额(ccny)
int64 period = 8; //合约期限 int64 period = 8; //合约期限
string collateralizeId = 9; //放贷ID
} }
// 根据ID列表查询多期贷信息 // 根据ID列表查询多期贷信息
message ReqCollateralizeInfos { message ReqCollateralizeInfos {
repeated string collateralizeIds = 1; repeated string collateralizeIds = 1;
} }
// 返回多期贷信息 // 返回多期贷信息
message RepCollateralizeCurrentInfos { message RepCollateralizeCurrentInfos {
repeated RepCollateralizeCurrentInfo infos = 1; repeated RepCollateralizeCurrentInfo infos = 1;
} }
// 根据贷状态查询 // 根据贷状态查询
message ReqCollateralizeByStatus { message ReqCollateralizeByStatus {
int32 status = 1; int32 status = 1;
int64 index = 2; int64 index = 2;
...@@ -171,7 +173,7 @@ message ReqCollateralizeByAddr { ...@@ -171,7 +173,7 @@ message ReqCollateralizeByAddr {
int64 index = 2; int64 index = 2;
} }
// 返回贷ID列表 // 返回贷ID列表
message RepCollateralizeIDs { message RepCollateralizeIDs {
repeated string IDs = 1; repeated string IDs = 1;
} }
...@@ -201,7 +203,7 @@ message ReqCollateralizeRecord { ...@@ -201,7 +203,7 @@ message ReqCollateralizeRecord {
string recordId = 2; string recordId = 2;
} }
// 返回记录 // 返回借贷记录
message RepCollateralizeRecord { message RepCollateralizeRecord {
BorrowRecord record = 1; BorrowRecord record = 1;
} }
......
...@@ -20,7 +20,7 @@ var _ = math.Inf ...@@ -20,7 +20,7 @@ var _ = math.Inf
// proto package needs to be updated. // proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// 贷信息 // 贷信息
type Collateralize struct { type Collateralize struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"` CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
...@@ -185,8 +185,9 @@ type BorrowRecord struct { ...@@ -185,8 +185,9 @@ type BorrowRecord struct {
ExpireTime int64 `protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"` ExpireTime int64 `protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"`
PreStatus int32 `protobuf:"varint,10,opt,name=preStatus,proto3" json:"preStatus,omitempty"` PreStatus int32 `protobuf:"varint,10,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
RecordId string `protobuf:"bytes,11,opt,name=recordId,proto3" json:"recordId,omitempty"` RecordId string `protobuf:"bytes,11,opt,name=recordId,proto3" json:"recordId,omitempty"`
Index int64 `protobuf:"varint,12,opt,name=index,proto3" json:"index,omitempty"` CollateralizeId string `protobuf:"bytes,12,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
PreIndex int64 `protobuf:"varint,13,opt,name=preIndex,proto3" json:"preIndex,omitempty"` Index int64 `protobuf:"varint,13,opt,name=index,proto3" json:"index,omitempty"`
PreIndex int64 `protobuf:"varint,14,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -294,6 +295,13 @@ func (m *BorrowRecord) GetRecordId() string { ...@@ -294,6 +295,13 @@ func (m *BorrowRecord) GetRecordId() string {
return "" return ""
} }
func (m *BorrowRecord) GetCollateralizeId() string {
if m != nil {
return m.CollateralizeId
}
return ""
}
func (m *BorrowRecord) GetIndex() int64 { func (m *BorrowRecord) GetIndex() int64 {
if m != nil { if m != nil {
return m.Index return m.Index
...@@ -646,7 +654,7 @@ func (m *CollateralizeAddr) GetSuperAddrs() []string { ...@@ -646,7 +654,7 @@ func (m *CollateralizeAddr) GetSuperAddrs() []string {
return nil return nil
} }
// 创建 // 创建
type CollateralizeCreate struct { type CollateralizeCreate struct {
TotalBalance int64 `protobuf:"varint,1,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,1,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -894,7 +902,7 @@ func (m *CollateralizeFeed) GetVolume() []int64 { ...@@ -894,7 +902,7 @@ func (m *CollateralizeFeed) GetVolume() []int64 {
return nil return nil
} }
// 贷关闭 // 贷关闭
type CollateralizeClose struct { type CollateralizeClose struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"` CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -934,7 +942,7 @@ func (m *CollateralizeClose) GetCollateralizeId() string { ...@@ -934,7 +942,7 @@ func (m *CollateralizeClose) GetCollateralizeId() string {
return "" return ""
} }
// exec_local 贷信息 // exec_local 贷信息
type ReceiptCollateralize struct { type ReceiptCollateralize struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"` CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
CreateAddr string `protobuf:"bytes,2,opt,name=createAddr,proto3" json:"createAddr,omitempty"` CreateAddr string `protobuf:"bytes,2,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
...@@ -1030,7 +1038,7 @@ func (m *ReceiptCollateralize) GetPreIndex() int64 { ...@@ -1030,7 +1038,7 @@ func (m *ReceiptCollateralize) GetPreIndex() int64 {
return 0 return 0
} }
// exec_local 贷记录信息 // exec_local 贷记录信息
type CollateralizeRecord struct { type CollateralizeRecord struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"` CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
...@@ -1094,7 +1102,7 @@ func (m *CollateralizeRecord) GetIndex() int64 { ...@@ -1094,7 +1102,7 @@ func (m *CollateralizeRecord) GetIndex() int64 {
return 0 return 0
} }
// exec_local 贷记录信息列表 // exec_local 贷记录信息列表
type CollateralizeRecords struct { type CollateralizeRecords struct {
Records []*CollateralizeRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` Records []*CollateralizeRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1134,7 +1142,7 @@ func (m *CollateralizeRecords) GetRecords() []*CollateralizeRecord { ...@@ -1134,7 +1142,7 @@ func (m *CollateralizeRecords) GetRecords() []*CollateralizeRecord {
return nil return nil
} }
// 根据ID查询一期贷信息 // 根据ID查询一期贷信息
type ReqCollateralizeInfo struct { type ReqCollateralizeInfo struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"` CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1174,7 +1182,7 @@ func (m *ReqCollateralizeInfo) GetCollateralizeId() string { ...@@ -1174,7 +1182,7 @@ func (m *ReqCollateralizeInfo) GetCollateralizeId() string {
return "" return ""
} }
// 返回一期贷信息 // 返回一期贷信息
type RepCollateralizeCurrentInfo struct { type RepCollateralizeCurrentInfo struct {
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
...@@ -1184,6 +1192,7 @@ type RepCollateralizeCurrentInfo struct { ...@@ -1184,6 +1192,7 @@ type RepCollateralizeCurrentInfo struct {
CreateAddr string `protobuf:"bytes,6,opt,name=createAddr,proto3" json:"createAddr,omitempty"` CreateAddr string `protobuf:"bytes,6,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
Balance int64 `protobuf:"varint,7,opt,name=balance,proto3" json:"balance,omitempty"` Balance int64 `protobuf:"varint,7,opt,name=balance,proto3" json:"balance,omitempty"`
Period int64 `protobuf:"varint,8,opt,name=period,proto3" json:"period,omitempty"` Period int64 `protobuf:"varint,8,opt,name=period,proto3" json:"period,omitempty"`
CollateralizeId string `protobuf:"bytes,9,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1270,7 +1279,14 @@ func (m *RepCollateralizeCurrentInfo) GetPeriod() int64 { ...@@ -1270,7 +1279,14 @@ func (m *RepCollateralizeCurrentInfo) GetPeriod() int64 {
return 0 return 0
} }
// 根据ID列表查询多期借贷信息 func (m *RepCollateralizeCurrentInfo) GetCollateralizeId() string {
if m != nil {
return m.CollateralizeId
}
return ""
}
// 根据ID列表查询多期放贷信息
type ReqCollateralizeInfos struct { type ReqCollateralizeInfos struct {
CollateralizeIds []string `protobuf:"bytes,1,rep,name=collateralizeIds,proto3" json:"collateralizeIds,omitempty"` CollateralizeIds []string `protobuf:"bytes,1,rep,name=collateralizeIds,proto3" json:"collateralizeIds,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1310,7 +1326,7 @@ func (m *ReqCollateralizeInfos) GetCollateralizeIds() []string { ...@@ -1310,7 +1326,7 @@ func (m *ReqCollateralizeInfos) GetCollateralizeIds() []string {
return nil return nil
} }
// 返回多期贷信息 // 返回多期贷信息
type RepCollateralizeCurrentInfos struct { type RepCollateralizeCurrentInfos struct {
Infos []*RepCollateralizeCurrentInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` Infos []*RepCollateralizeCurrentInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1350,7 +1366,7 @@ func (m *RepCollateralizeCurrentInfos) GetInfos() []*RepCollateralizeCurrentInfo ...@@ -1350,7 +1366,7 @@ func (m *RepCollateralizeCurrentInfos) GetInfos() []*RepCollateralizeCurrentInfo
return nil return nil
} }
// 根据贷状态查询 // 根据贷状态查询
type ReqCollateralizeByStatus struct { type ReqCollateralizeByStatus struct {
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
Index int64 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"` Index int64 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
...@@ -1446,7 +1462,7 @@ func (m *ReqCollateralizeByAddr) GetIndex() int64 { ...@@ -1446,7 +1462,7 @@ func (m *ReqCollateralizeByAddr) GetIndex() int64 {
return 0 return 0
} }
// 返回贷ID列表 // 返回贷ID列表
type RepCollateralizeIDs struct { type RepCollateralizeIDs struct {
IDs []string `protobuf:"bytes,1,rep,name=IDs,proto3" json:"IDs,omitempty"` IDs []string `protobuf:"bytes,1,rep,name=IDs,proto3" json:"IDs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1686,7 +1702,7 @@ func (m *ReqCollateralizeRecord) GetRecordId() string { ...@@ -1686,7 +1702,7 @@ func (m *ReqCollateralizeRecord) GetRecordId() string {
return "" return ""
} }
// 返回记录 // 返回借贷记录
type RepCollateralizeRecord struct { type RepCollateralizeRecord struct {
Record *BorrowRecord `protobuf:"bytes,1,opt,name=record,proto3" json:"record,omitempty"` Record *BorrowRecord `protobuf:"bytes,1,opt,name=record,proto3" json:"record,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1840,79 +1856,80 @@ func init() { ...@@ -1840,79 +1856,80 @@ func init() {
func init() { proto.RegisterFile("collateralize.proto", fileDescriptor_a988fb4a61381972) } func init() { proto.RegisterFile("collateralize.proto", fileDescriptor_a988fb4a61381972) }
var fileDescriptor_a988fb4a61381972 = []byte{ var fileDescriptor_a988fb4a61381972 = []byte{
// 1181 bytes of a gzipped FileDescriptorProto // 1192 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xdd, 0x6e, 0xdc, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xdd, 0x6e, 0xdc, 0x44,
0x14, 0xae, 0xed, 0xfd, 0xc9, 0x9e, 0x4d, 0xda, 0x74, 0x12, 0x82, 0x09, 0x51, 0xb4, 0xb2, 0x90, 0x14, 0xae, 0xed, 0xfd, 0xc9, 0x9e, 0x4d, 0xd2, 0x76, 0x12, 0x82, 0x09, 0x51, 0xb4, 0xb2, 0x90,
0x58, 0xf1, 0x13, 0x89, 0xb4, 0x42, 0x54, 0x48, 0x88, 0x64, 0xdb, 0x2a, 0x2b, 0x15, 0xa9, 0x32, 0x58, 0xf1, 0x13, 0x89, 0xb4, 0x42, 0x54, 0x48, 0x88, 0x64, 0xdb, 0x2a, 0x2b, 0x15, 0xa9, 0x32,
0x05, 0x21, 0x24, 0x90, 0xbc, 0xf6, 0x24, 0x58, 0x72, 0x6c, 0x67, 0x3c, 0x1b, 0xb2, 0xdc, 0xd3, 0x05, 0x21, 0x24, 0x90, 0xbc, 0xf6, 0x24, 0x58, 0x72, 0x6c, 0x67, 0x3c, 0x1b, 0xb2, 0xdc, 0xd3,
0xa7, 0xe0, 0x9e, 0x37, 0xe0, 0x3d, 0xb8, 0xe0, 0x65, 0xb8, 0x42, 0x73, 0x66, 0xfc, 0x37, 0xb6, 0xa7, 0xe0, 0xa5, 0x7a, 0xc1, 0x3d, 0xcf, 0xc1, 0x15, 0x9a, 0x33, 0xe3, 0xbf, 0xb1, 0x1d, 0x65,
0xa3, 0x2c, 0x70, 0x03, 0x37, 0xd5, 0xce, 0x99, 0x6f, 0xce, 0x1c, 0x7f, 0xe7, 0x3b, 0xe7, 0x4c, 0x81, 0x1b, 0xb8, 0x89, 0x3c, 0x67, 0xbe, 0x99, 0x39, 0xf3, 0x9d, 0xef, 0x9c, 0x33, 0x59, 0xd8,
0x03, 0x3b, 0x7e, 0x12, 0x45, 0x1e, 0xa7, 0xcc, 0x8b, 0xc2, 0x9f, 0xe8, 0x51, 0xca, 0x12, 0x9e, 0xf1, 0x93, 0x28, 0xf2, 0x38, 0x65, 0x5e, 0x14, 0xfe, 0x42, 0x8f, 0x52, 0x96, 0xf0, 0x84, 0xf4,
0x90, 0x3e, 0x5f, 0xa5, 0x34, 0x73, 0x7e, 0xef, 0xc1, 0xd6, 0xac, 0xba, 0x4d, 0xa6, 0xf0, 0xa0, 0xf9, 0x2a, 0xa5, 0x99, 0xf3, 0xa6, 0x07, 0x5b, 0xb3, 0xea, 0x34, 0x99, 0xc2, 0xfd, 0x1a, 0x7e,
0x86, 0x9f, 0x07, 0xb6, 0x31, 0x31, 0xa6, 0x23, 0x57, 0x37, 0x13, 0x07, 0x36, 0x79, 0xc2, 0xbd, 0x1e, 0xd8, 0xc6, 0xc4, 0x98, 0x8e, 0x5c, 0xdd, 0x4c, 0x1c, 0xd8, 0xe4, 0x09, 0xf7, 0xa2, 0x53,
0xe8, 0xd4, 0x8b, 0xbc, 0xd8, 0xa7, 0xb6, 0x39, 0x31, 0xa6, 0x96, 0x5b, 0xb3, 0x91, 0x09, 0x8c, 0x2f, 0xf2, 0x62, 0x9f, 0xda, 0xe6, 0xc4, 0x98, 0x5a, 0x6e, 0xcd, 0x46, 0x26, 0x30, 0x0e, 0xe8,
0x03, 0xba, 0xe0, 0x33, 0x1a, 0x46, 0x61, 0x7c, 0x61, 0x5b, 0x08, 0xa9, 0x9a, 0xc8, 0x7b, 0xb0, 0x82, 0xcf, 0x68, 0x18, 0x85, 0xf1, 0x85, 0x6d, 0x21, 0xa4, 0x6a, 0x22, 0x1f, 0xc0, 0x83, 0x28,
0x1d, 0x85, 0x57, 0xcb, 0x30, 0xf0, 0x78, 0x98, 0xc4, 0xae, 0xf8, 0xd7, 0xee, 0x4d, 0x8c, 0xa9, 0xbc, 0x5a, 0x86, 0x81, 0xc7, 0xc3, 0x24, 0x76, 0xc5, 0x5f, 0xbb, 0x37, 0x31, 0xa6, 0xa6, 0xdb,
0xe9, 0x36, 0xec, 0xe4, 0x03, 0x78, 0x98, 0x71, 0x6f, 0x11, 0x46, 0x21, 0x5f, 0x3d, 0xa7, 0x54, 0xb0, 0x93, 0x8f, 0xe0, 0x61, 0xc6, 0xbd, 0x45, 0x18, 0x85, 0x7c, 0xf5, 0x9c, 0x52, 0x09, 0xee,
0x82, 0xfb, 0x08, 0x6e, 0x6e, 0x90, 0x43, 0x00, 0x9f, 0x51, 0x8f, 0xd3, 0x93, 0x20, 0x60, 0xf6, 0x23, 0xb8, 0x39, 0x41, 0x0e, 0x01, 0x7c, 0x46, 0x3d, 0x4e, 0x4f, 0x82, 0x80, 0xd9, 0x03, 0xbc,
0x00, 0x3f, 0xa2, 0x62, 0x21, 0x36, 0x0c, 0x17, 0x2a, 0xf4, 0x21, 0xc6, 0x95, 0x2f, 0xc9, 0x13, 0x44, 0xc5, 0x42, 0x6c, 0x18, 0x2e, 0x94, 0xeb, 0x43, 0xf4, 0x2b, 0x1f, 0x92, 0x27, 0xb0, 0xb5,
0xd8, 0x5a, 0x24, 0x8c, 0x25, 0x3f, 0xba, 0xd4, 0x4f, 0x58, 0x90, 0xd9, 0x1b, 0x13, 0x6b, 0x3a, 0x48, 0x18, 0x4b, 0x7e, 0x76, 0xa9, 0x9f, 0xb0, 0x20, 0xb3, 0x37, 0x26, 0xd6, 0x74, 0x7c, 0xbc,
0x3e, 0xde, 0x39, 0x42, 0xd2, 0x8e, 0x4e, 0x2b, 0x7b, 0x6e, 0x1d, 0x49, 0x3e, 0x85, 0xfb, 0xf3, 0x73, 0x84, 0xa4, 0x1d, 0x9d, 0x56, 0xe6, 0xdc, 0x3a, 0x92, 0x7c, 0x0e, 0xdb, 0xf3, 0xf8, 0xda,
0xf8, 0xda, 0x8b, 0xc2, 0x20, 0x3f, 0x3b, 0xea, 0x3e, 0xab, 0x41, 0xc9, 0x1e, 0x0c, 0x32, 0xee, 0x8b, 0xc2, 0x20, 0x5f, 0x3b, 0xea, 0x5e, 0xab, 0x41, 0xc9, 0x1e, 0x0c, 0x32, 0xee, 0xf1, 0x65,
0xf1, 0x65, 0x66, 0xc3, 0xc4, 0x98, 0xf6, 0x5d, 0xb5, 0x22, 0x1f, 0xc3, 0x9e, 0x60, 0x3e, 0xe3, 0x66, 0xc3, 0xc4, 0x98, 0xf6, 0x5d, 0x35, 0x22, 0x9f, 0xc2, 0x9e, 0x60, 0x3e, 0xe3, 0x2f, 0x4a,
0x2f, 0x4a, 0x46, 0x5e, 0xb2, 0xd0, 0xa7, 0xf6, 0x18, 0x3f, 0xbe, 0x63, 0x57, 0xf8, 0x4b, 0x29, 0x46, 0x5e, 0xb2, 0xd0, 0xa7, 0xf6, 0x18, 0x2f, 0xdf, 0x31, 0x2b, 0xf6, 0x4b, 0x29, 0x0b, 0x93,
0x0b, 0x93, 0xc0, 0xde, 0xc4, 0x0f, 0x54, 0x2b, 0xe4, 0x1c, 0x4f, 0x3c, 0xbb, 0x49, 0x43, 0x46, 0xc0, 0xde, 0xc4, 0x0b, 0xaa, 0x11, 0x72, 0x8e, 0x2b, 0x9e, 0xdd, 0xa4, 0x21, 0xa3, 0xaf, 0xc2,
0x5f, 0x85, 0x97, 0xd4, 0xde, 0x42, 0x44, 0xc3, 0x4e, 0x76, 0xa1, 0x1f, 0xc6, 0x01, 0xbd, 0xb1, 0x4b, 0x6a, 0x6f, 0x21, 0xa2, 0x61, 0x27, 0xbb, 0xd0, 0x0f, 0xe3, 0x80, 0xde, 0xd8, 0xdb, 0x08,
0xef, 0x23, 0x40, 0x2e, 0xc8, 0x3e, 0x6c, 0xa4, 0x8c, 0xce, 0x71, 0xe3, 0x01, 0x6e, 0x14, 0x6b, 0x90, 0x03, 0xb2, 0x0f, 0x1b, 0x29, 0xa3, 0x73, 0x9c, 0xb8, 0x8f, 0x13, 0xc5, 0xd8, 0xf9, 0xc3,
0xe7, 0x37, 0x0b, 0x36, 0xab, 0x9f, 0x29, 0x44, 0xe0, 0xf9, 0x7e, 0xb2, 0x8c, 0x39, 0x66, 0x42, 0x82, 0xcd, 0xea, 0x35, 0x85, 0x08, 0x3c, 0xdf, 0x4f, 0x96, 0x31, 0xc7, 0x48, 0x48, 0x39, 0x55,
0xca, 0xa9, 0x6a, 0x22, 0x07, 0x30, 0xca, 0xb8, 0xc7, 0x38, 0x46, 0x22, 0x75, 0x54, 0x1a, 0xea, 0x4d, 0xe4, 0x00, 0x46, 0x19, 0xf7, 0x18, 0x47, 0x4f, 0xa4, 0x8e, 0x4a, 0x43, 0x5d, 0x92, 0xdf,
0x92, 0xfc, 0xda, 0x8b, 0x96, 0x54, 0x09, 0x49, 0x37, 0xd7, 0x91, 0x92, 0x21, 0xa9, 0x25, 0xdd, 0x7a, 0xd1, 0x92, 0x2a, 0x21, 0xe9, 0xe6, 0x3a, 0x52, 0x32, 0x24, 0xb5, 0xa4, 0x9b, 0xc5, 0x89,
0x2c, 0x6e, 0x14, 0x2a, 0x94, 0xde, 0xfa, 0xf2, 0xc6, 0xc2, 0xa0, 0x89, 0x52, 0x3a, 0x1a, 0x34, 0x42, 0x85, 0x72, 0xb7, 0xbe, 0x3c, 0xb1, 0x30, 0x68, 0xa2, 0x94, 0x1b, 0x0d, 0x1a, 0xa2, 0x2c,
0x44, 0x59, 0x90, 0xac, 0x92, 0x36, 0xac, 0x25, 0xed, 0x1d, 0xd8, 0xca, 0xb1, 0x92, 0xe1, 0x0d, 0x48, 0x56, 0x41, 0x1b, 0xd6, 0x82, 0xf6, 0x1e, 0x6c, 0xe5, 0x58, 0xc9, 0xf0, 0x06, 0x9e, 0x52,
0xbc, 0xa5, 0x6e, 0x14, 0x22, 0xa5, 0x65, 0x12, 0x46, 0x08, 0xa9, 0x58, 0x44, 0x9c, 0x29, 0xa3, 0x37, 0x0a, 0x91, 0xd2, 0x32, 0x08, 0x23, 0x84, 0x54, 0x2c, 0xc2, 0xcf, 0x94, 0xd1, 0xaf, 0xab,
0x5f, 0x56, 0x55, 0x51, 0x1a, 0x44, 0x1a, 0x18, 0x72, 0x3c, 0x0f, 0x50, 0x0a, 0x23, 0xb7, 0x58, 0xaa, 0x28, 0x0d, 0x22, 0x0c, 0x0c, 0x39, 0x9e, 0x07, 0x28, 0x85, 0x91, 0x5b, 0x8c, 0xdb, 0x12,
0x97, 0x89, 0xdb, 0xec, 0x4a, 0xdc, 0x96, 0x96, 0xb8, 0xd7, 0x06, 0x6c, 0x9f, 0x64, 0x19, 0xe5, 0x79, 0xb3, 0x3d, 0x91, 0x8b, 0x10, 0x6f, 0x75, 0x85, 0x78, 0x5b, 0x0b, 0xf1, 0x6b, 0x03, 0x1e,
0xf8, 0x61, 0x2a, 0x79, 0x87, 0x00, 0xd2, 0x25, 0x06, 0x68, 0xc8, 0x00, 0x4b, 0x8b, 0x70, 0xb8, 0x9c, 0x64, 0x19, 0xe5, 0x48, 0x81, 0x0a, 0xf3, 0x21, 0x80, 0x3c, 0x1c, 0xaf, 0x62, 0xc8, 0xab,
0xe0, 0x2b, 0x49, 0x91, 0x89, 0x14, 0x15, 0x6b, 0xb9, 0xe7, 0xcb, 0x3d, 0x2b, 0xdf, 0xf3, 0x8b, 0x94, 0x16, 0xb1, 0xe1, 0x82, 0xaf, 0x24, 0x99, 0x26, 0x92, 0x59, 0x8c, 0xe5, 0x9c, 0x2f, 0xe7,
0x3d, 0xca, 0x7f, 0xa8, 0xe6, 0xa8, 0x58, 0x3b, 0xbf, 0x58, 0xb0, 0x53, 0xeb, 0x4a, 0x27, 0xbe, 0xac, 0x7c, 0xce, 0x2f, 0xe6, 0x28, 0xff, 0xa9, 0x1a, 0xcd, 0x62, 0xec, 0xfc, 0x66, 0xc1, 0x4e,
0xe0, 0x9b, 0x3c, 0x86, 0x81, 0xac, 0x5f, 0x8c, 0x63, 0x7c, 0xbc, 0xaf, 0x8a, 0xaa, 0x86, 0x9d, 0xad, 0x7e, 0x9d, 0xf8, 0x22, 0x32, 0xe4, 0x31, 0x0c, 0x64, 0xa6, 0xa3, 0x1f, 0xe3, 0xe3, 0x7d,
0x21, 0xe2, 0xec, 0x9e, 0xab, 0xb0, 0xe2, 0x94, 0xac, 0x51, 0x8c, 0xaf, 0xe3, 0x94, 0x14, 0xac, 0x95, 0x7e, 0x35, 0xec, 0x0c, 0x11, 0x67, 0xf7, 0x5c, 0x85, 0x15, 0xab, 0x64, 0x36, 0xa3, 0x7f,
0x38, 0x25, 0xb1, 0xe4, 0x23, 0xe8, 0x33, 0x9a, 0x7a, 0x2b, 0x0c, 0x7c, 0x7c, 0xfc, 0x56, 0xdb, 0x1d, 0xab, 0xa4, 0xb4, 0xc5, 0x2a, 0x89, 0x25, 0x9f, 0x40, 0x9f, 0xd1, 0xd4, 0x5b, 0xa1, 0xe3,
0x21, 0x57, 0x00, 0xce, 0xee, 0xb9, 0x12, 0x29, 0x2e, 0xf2, 0xd2, 0x94, 0xc6, 0x01, 0x7e, 0x50, 0xe3, 0xe3, 0x77, 0xda, 0x16, 0xb9, 0x02, 0x70, 0x76, 0xcf, 0x95, 0x48, 0x71, 0x90, 0x97, 0xa6,
0xc7, 0x45, 0x27, 0x88, 0x10, 0x17, 0x49, 0x2c, 0x39, 0x82, 0xde, 0x39, 0xa5, 0x01, 0x8a, 0x70, 0x34, 0x0e, 0xf0, 0x42, 0x1d, 0x07, 0x9d, 0x20, 0x42, 0x1c, 0x24, 0xb1, 0xe4, 0x08, 0x7a, 0xe7,
0x7c, 0x6c, 0xb7, 0x9d, 0x79, 0x4e, 0xa9, 0x38, 0x81, 0x38, 0x11, 0x98, 0x1f, 0x25, 0x99, 0x14, 0x94, 0x06, 0x28, 0xd7, 0xf1, 0xb1, 0xdd, 0xb6, 0xe6, 0x39, 0xa5, 0x62, 0x05, 0xe2, 0x84, 0x63,
0x64, 0x47, 0x60, 0x33, 0x01, 0x10, 0x81, 0x21, 0x52, 0x04, 0x76, 0xe9, 0xc5, 0xde, 0x85, 0x6c, 0x7e, 0x94, 0x64, 0x52, 0xba, 0x1d, 0x8e, 0xcd, 0x04, 0x40, 0x38, 0x86, 0x48, 0xe1, 0xd8, 0xa5,
0x74, 0x1d, 0x81, 0x7d, 0x81, 0x08, 0x11, 0x98, 0xc4, 0x92, 0xfb, 0x60, 0xf2, 0x95, 0xd2, 0x9c, 0x17, 0x7b, 0x17, 0xb2, 0x24, 0x76, 0x38, 0xf6, 0x15, 0x22, 0x84, 0x63, 0x12, 0x4b, 0xb6, 0xc1,
0xc9, 0x57, 0xa7, 0x43, 0xe8, 0x5f, 0x8b, 0xea, 0x70, 0xfe, 0x30, 0xb4, 0xf4, 0xc8, 0xa3, 0x7a, 0xe4, 0x2b, 0xa5, 0x4e, 0x93, 0xaf, 0x4e, 0x87, 0xd0, 0xbf, 0x16, 0x79, 0xe4, 0xfc, 0x6e, 0x68,
0xb3, 0x37, 0xee, 0xd6, 0xec, 0xcd, 0x75, 0x9a, 0xbd, 0xd5, 0xd5, 0xec, 0xcb, 0x56, 0xd7, 0xd3, 0xe1, 0x91, 0x4b, 0xf5, 0xb6, 0x60, 0xdc, 0xad, 0x2d, 0x98, 0xeb, 0xb4, 0x05, 0xab, 0xab, 0x2d,
0x5b, 0x9d, 0x28, 0xfd, 0x57, 0xd5, 0x41, 0x25, 0xcb, 0xbd, 0x61, 0x77, 0x1e, 0xc1, 0xc3, 0x7a, 0x94, 0x45, 0xb1, 0xa7, 0x17, 0x45, 0x91, 0x18, 0xaf, 0xaa, 0x2d, 0x4d, 0x16, 0x86, 0x86, 0xdd,
0xaa, 0x44, 0x6b, 0x3a, 0x04, 0xc8, 0x96, 0x29, 0x65, 0x62, 0x91, 0xd9, 0xc6, 0xc4, 0x12, 0x53, 0x79, 0x04, 0x0f, 0xeb, 0xa1, 0x12, 0x45, 0xec, 0x10, 0x20, 0x5b, 0xa6, 0x94, 0x89, 0x41, 0x66,
0xa4, 0xb4, 0x38, 0x4f, 0x34, 0x2e, 0xa4, 0xfc, 0x1a, 0xc3, 0xd1, 0x68, 0x0e, 0x47, 0xe7, 0x2b, 0x1b, 0x13, 0x4b, 0xf4, 0x9b, 0xd2, 0xe2, 0x3c, 0xd1, 0xb8, 0x90, 0xf2, 0x6b, 0xb4, 0x51, 0xa3,
0xed, 0xa8, 0xd4, 0xe0, 0x1a, 0x13, 0x78, 0x57, 0x65, 0x44, 0xb5, 0x4c, 0x95, 0x9e, 0x6f, 0x81, 0xd9, 0x46, 0x9d, 0x6f, 0xb4, 0xa5, 0x52, 0x83, 0x6b, 0xf4, 0xea, 0x5d, 0x15, 0x11, 0x55, 0x5c,
0x34, 0x55, 0xba, 0x86, 0xd7, 0x6a, 0x53, 0x31, 0xeb, 0x4d, 0xc5, 0xf9, 0x59, 0x4f, 0xbd, 0x94, 0x55, 0x78, 0xbe, 0x07, 0xd2, 0x54, 0xe9, 0x1a, 0xbb, 0x56, 0xcb, 0x8f, 0x59, 0x2f, 0x3f, 0xce,
0xf3, 0xbf, 0xe3, 0xfd, 0xee, 0x8d, 0xde, 0xf9, 0x4e, 0x4b, 0x95, 0xa8, 0x10, 0xe1, 0x1a, 0x73, 0xaf, 0x7a, 0xe8, 0xa5, 0x9c, 0xff, 0x9d, 0xdd, 0xef, 0xde, 0x12, 0x9c, 0x1f, 0xb4, 0x50, 0x89,
0xba, 0x4a, 0x25, 0xdf, 0x7d, 0xb7, 0x58, 0x0b, 0xaa, 0x52, 0xd5, 0xa3, 0xac, 0xa9, 0xe9, 0xca, 0x0c, 0x11, 0x5b, 0x63, 0x4c, 0x57, 0xa9, 0xe4, 0xbb, 0xef, 0x16, 0x63, 0x41, 0x55, 0xaa, 0x6a,
0x85, 0x50, 0xcd, 0x75, 0x12, 0x2d, 0x2f, 0xc5, 0x3d, 0x96, 0x50, 0x8d, 0x5c, 0x39, 0x9f, 0x69, 0x94, 0x35, 0x35, 0x5d, 0x39, 0x10, 0xaa, 0xb9, 0x4e, 0xa2, 0xe5, 0xa5, 0x38, 0xc7, 0x12, 0xaa,
0x14, 0x62, 0x3d, 0xdd, 0xfd, 0x23, 0x9d, 0xd7, 0x26, 0xec, 0xba, 0xd4, 0xa7, 0x61, 0xca, 0xff, 0x91, 0x23, 0xe7, 0x0b, 0x8d, 0x42, 0xcc, 0xa7, 0xbb, 0x5f, 0xd2, 0x79, 0x6d, 0xc2, 0xae, 0x4b,
0xee, 0xeb, 0xaa, 0xfe, 0x7a, 0x31, 0x1b, 0xaf, 0x17, 0x6d, 0xa8, 0x5a, 0xcd, 0xa1, 0x5a, 0x65, 0x7d, 0x1a, 0xa6, 0xfc, 0xef, 0xbe, 0xc3, 0xea, 0xef, 0x1c, 0xb3, 0xf1, 0xce, 0xd1, 0xda, 0xaf,
0xba, 0xa7, 0x31, 0x5d, 0x0e, 0xad, 0x7e, 0x6d, 0x68, 0x1d, 0xc0, 0xe8, 0x65, 0x31, 0x6e, 0x06, 0xd5, 0x6c, 0xbf, 0x55, 0xa6, 0x7b, 0x1a, 0xd3, 0x65, 0x7b, 0xeb, 0xd7, 0xda, 0xdb, 0x01, 0x8c,
0x72, 0xdc, 0x14, 0x86, 0x72, 0xa4, 0x0c, 0xbb, 0x46, 0xca, 0x86, 0x36, 0x52, 0x1a, 0x7a, 0x51, 0x5e, 0x16, 0x8d, 0x69, 0x20, 0x1b, 0x53, 0x61, 0x28, 0x5b, 0xca, 0xb0, 0xab, 0xa5, 0x6c, 0x68,
0x53, 0xe5, 0xee, 0x3c, 0x10, 0xe8, 0x79, 0x25, 0x03, 0xf8, 0xbb, 0xf6, 0x65, 0x56, 0xd7, 0xd8, 0x2d, 0xa5, 0xa1, 0x17, 0xd5, 0x55, 0xee, 0xce, 0x03, 0x81, 0x9e, 0x57, 0x32, 0x80, 0xdf, 0xb5,
0xeb, 0x55, 0x62, 0x74, 0x5e, 0xc0, 0x6e, 0x4b, 0x18, 0x19, 0x79, 0x0c, 0x43, 0xa6, 0xde, 0x69, 0x9b, 0x59, 0xda, 0xcd, 0x0a, 0x1f, 0x7b, 0x15, 0x1f, 0x9d, 0x17, 0xb0, 0xdb, 0xe2, 0x46, 0x46,
0x06, 0xbe, 0xd3, 0xf6, 0xdb, 0xfb, 0x3c, 0x3e, 0xd7, 0x72, 0xa8, 0xf3, 0xb9, 0xc8, 0xee, 0x55, 0x1e, 0xc3, 0x90, 0xa9, 0x17, 0x9d, 0x81, 0x2f, 0xba, 0xfd, 0xf6, 0x3a, 0x8f, 0x0f, 0xbb, 0x1c,
0x0d, 0x32, 0x8f, 0xcf, 0x93, 0x35, 0x04, 0xf2, 0xab, 0x09, 0x6f, 0xbb, 0x34, 0xad, 0x8b, 0x6c, 0xea, 0x7c, 0x29, 0xa2, 0x7b, 0x55, 0x83, 0xcc, 0xe3, 0xf3, 0x64, 0x0d, 0x81, 0xbc, 0x31, 0xe1,
0xc9, 0x18, 0x8d, 0x39, 0x7a, 0x2a, 0xf3, 0x63, 0xd4, 0xf2, 0xf3, 0xff, 0x7d, 0x73, 0x97, 0x0d, 0x5d, 0x97, 0xa6, 0x75, 0x91, 0x2d, 0x19, 0xa3, 0x31, 0xc7, 0x9d, 0xca, 0xf8, 0x18, 0xb5, 0xf8,
0x7c, 0xa3, 0xda, 0xc0, 0x9d, 0x19, 0xbc, 0xd1, 0xc6, 0x75, 0x96, 0x77, 0xf6, 0x0a, 0xab, 0x79, 0xfc, 0x7f, 0x5f, 0xe7, 0x65, 0x01, 0xdf, 0xa8, 0x15, 0xf0, 0x16, 0x4e, 0x47, 0xed, 0x9c, 0xce,
0x7b, 0x6e, 0xd8, 0x9d, 0x6f, 0xe0, 0xe0, 0x16, 0xb6, 0x33, 0xf2, 0x89, 0x10, 0xcd, 0x79, 0x92, 0xe0, 0xad, 0xb6, 0xa8, 0x64, 0x79, 0x0f, 0xa8, 0x60, 0xf3, 0x42, 0xde, 0xb0, 0x3b, 0xdf, 0xc1,
0x8b, 0xc0, 0x51, 0x22, 0xb8, 0xe5, 0x8c, 0x2b, 0x0f, 0x38, 0x67, 0x60, 0xeb, 0xe1, 0x9d, 0xae, 0xc1, 0x2d, 0x71, 0xc9, 0xc8, 0x67, 0x42, 0x5e, 0xe7, 0x49, 0x2e, 0x17, 0x47, 0xc9, 0xe5, 0x96,
0x54, 0xb9, 0x74, 0x25, 0xb1, 0x90, 0xa8, 0x59, 0x95, 0xe8, 0x29, 0xec, 0x35, 0x3d, 0x21, 0x69, 0x35, 0xae, 0x5c, 0xe0, 0x9c, 0x81, 0xad, 0xbb, 0x77, 0xba, 0x52, 0x89, 0xd5, 0x15, 0xee, 0x42,
0x79, 0x09, 0x18, 0x95, 0x12, 0x68, 0xf7, 0xf1, 0x2e, 0xec, 0xe8, 0x31, 0xcf, 0x9f, 0x66, 0x64, 0xcc, 0x66, 0x55, 0xcc, 0xa7, 0xb0, 0xd7, 0xdc, 0x09, 0xe9, 0xcd, 0x93, 0xc5, 0xa8, 0x24, 0x4b,
0x1b, 0xac, 0xf9, 0xd3, 0x9c, 0x1d, 0xf1, 0xd3, 0x61, 0x82, 0x90, 0xab, 0x16, 0x91, 0xab, 0x2b, 0xfb, 0x1e, 0xef, 0xc3, 0x8e, 0xee, 0xf3, 0xfc, 0x69, 0x46, 0x1e, 0x80, 0x35, 0x7f, 0x9a, 0xb3,
0xff, 0x59, 0x7d, 0x16, 0xc1, 0x59, 0xd5, 0xe0, 0x6e, 0xe0, 0xb0, 0xeb, 0x4e, 0x45, 0xd8, 0xdd, 0x23, 0x3e, 0x1d, 0x26, 0x08, 0xb9, 0x6a, 0x49, 0x07, 0x75, 0xe4, 0x3f, 0xcb, 0xe4, 0xc2, 0x39,
0x6f, 0x2d, 0xa9, 0x35, 0xdb, 0xa9, 0xad, 0xdd, 0x7c, 0x06, 0x6f, 0xea, 0xb4, 0xe4, 0x0d, 0xe0, 0xab, 0xea, 0xdc, 0x0d, 0x1c, 0x76, 0x9d, 0xa9, 0x08, 0xbb, 0xfb, 0xa9, 0x25, 0xb5, 0x66, 0x3b,
0x43, 0xbd, 0x01, 0xb4, 0xfe, 0x47, 0xad, 0xa8, 0xfc, 0xef, 0x9b, 0x49, 0x5a, 0xbb, 0xa3, 0xdd, 0xb5, 0xb5, 0x93, 0xcf, 0xe0, 0x6d, 0x9d, 0x96, 0xbc, 0x54, 0x7c, 0xac, 0x97, 0x8a, 0xd6, 0x7f,
0x36, 0x5f, 0x9f, 0x09, 0xff, 0x6d, 0x91, 0x92, 0xf7, 0x61, 0x20, 0x51, 0xea, 0xed, 0xdb, 0x1a, 0xfe, 0x8a, 0x1a, 0xf1, 0x63, 0x33, 0x48, 0x6b, 0xd7, 0xbe, 0xdb, 0x3a, 0xf1, 0x33, 0xb1, 0x7f,
0xa7, 0x82, 0x38, 0x7f, 0x1a, 0x4d, 0x3f, 0xb3, 0x24, 0x3e, 0x0f, 0x2f, 0xfe, 0xeb, 0x8f, 0x34, 0x9b, 0xa7, 0xe4, 0x43, 0x18, 0x48, 0x94, 0x7a, 0x25, 0xb7, 0xfa, 0xa9, 0x20, 0xce, 0x9f, 0x46,
0x11, 0xbf, 0xb0, 0xe5, 0xb0, 0x81, 0x8c, 0xbf, 0x62, 0x5a, 0x0c, 0xf0, 0x2f, 0x1c, 0x8f, 0xfe, 0x73, 0x9f, 0x59, 0x12, 0x9f, 0x87, 0x17, 0xff, 0xf5, 0xe7, 0x9c, 0xf0, 0x5f, 0xd8, 0x72, 0xd8,
0x0a, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x88, 0x66, 0x50, 0xf8, 0x10, 0x00, 0x00, 0x40, 0xfa, 0x5f, 0x31, 0x2d, 0x06, 0xf8, 0xab, 0xc9, 0xa3, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff,
0xab, 0xcf, 0xc4, 0xe0, 0x4c, 0x11, 0x00, 0x00,
} }
...@@ -594,6 +594,7 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro ...@@ -594,6 +594,7 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro
debtRecord := &pty.DebtRecord{} debtRecord := &pty.DebtRecord{}
debtRecord.AccountAddr = action.fromaddr debtRecord.AccountAddr = action.fromaddr
debtRecord.DebtId = common.ToHex(action.txhash) debtRecord.DebtId = common.ToHex(action.txhash)
debtRecord.IssuId = issu.IssuanceId
debtRecord.CollateralValue = btyFrozen debtRecord.CollateralValue = btyFrozen
debtRecord.StartTime = action.blocktime debtRecord.StartTime = action.blocktime
debtRecord.CollateralPrice = lastPrice debtRecord.CollateralPrice = lastPrice
......
...@@ -25,6 +25,7 @@ func (c *Issuance) Query_IssuanceInfoByID(req *pty.ReqIssuanceInfo) (types.Messa ...@@ -25,6 +25,7 @@ func (c *Issuance) Query_IssuanceInfoByID(req *pty.ReqIssuanceInfo) (types.Messa
CollateralValue: issu.CollateralValue, CollateralValue: issu.CollateralValue,
DebtValue: issu.DebtValue, DebtValue: issu.DebtValue,
Period: issu.Period, Period: issu.Period,
IssuId: issu.IssuanceId,
}, nil }, nil
} }
...@@ -46,6 +47,7 @@ func (c *Issuance) Query_IssuanceInfoByIDs(req *pty.ReqIssuanceInfos) (types.Mes ...@@ -46,6 +47,7 @@ func (c *Issuance) Query_IssuanceInfoByIDs(req *pty.ReqIssuanceInfos) (types.Mes
CollateralValue: issu.CollateralValue, CollateralValue: issu.CollateralValue,
DebtValue: issu.DebtValue, DebtValue: issu.DebtValue,
Period: issu.Period, Period: issu.Period,
IssuId: issu.IssuanceId,
}) })
} }
......
...@@ -2,19 +2,19 @@ syntax = "proto3"; ...@@ -2,19 +2,19 @@ syntax = "proto3";
package types; package types;
// 借贷信息 // 发行信息
message Issuance { message Issuance {
string issuanceId = 1; //借贷ID,一期借贷对应一个ID string issuanceId = 1; //发行ID,一期发行对应一个ID
int64 totalBalance = 2; //当期可借贷的总金额(ccny) int64 totalBalance = 2; //当期发行的总金额(ccny)
int64 debtCeiling = 3; //单用户可借出的限额(ccny) int64 debtCeiling = 3; //单用户可借出的限额(ccny)
float liquidationRatio = 4; //清算比例 float liquidationRatio = 4; //清算比例
int64 collateralValue = 5; //抵押物总数量(bty) int64 collateralValue = 5; //抵押物总数量(bty)
int64 debtValue = 6; //产生的ccny数量 int64 debtValue = 6; //产生的ccny数量
repeated DebtRecord debtRecords = 7; //大户抵押记录 repeated DebtRecord debtRecords = 7; //大户抵押记录
repeated DebtRecord invalidRecords = 8; //大户抵押记录 repeated DebtRecord invalidRecords = 8; //大户抵押记录
int32 status = 9; //当期借贷的状态,是否关闭 int32 status = 9; //当期发行的状态,是否关闭
float latestLiquidationPrice = 10; //最高清算价格 float latestLiquidationPrice = 10;//最高清算价格
int64 period = 11;//借贷最大期限 int64 period = 11;//发行最大期限
int64 latestExpireTime = 12;//最近超期时间 int64 latestExpireTime = 12;//最近超期时间
int64 createTime = 13;//创建时间 int64 createTime = 13;//创建时间
int64 balance = 14;//剩余可发行ccny int64 balance = 14;//剩余可发行ccny
...@@ -25,8 +25,8 @@ message Issuance { ...@@ -25,8 +25,8 @@ message Issuance {
// 抵押记录 // 抵押记录
message DebtRecord { message DebtRecord {
string accountAddr = 1; //借贷人地址 string accountAddr = 1; //抵押人地址
int64 startTime = 2; //借贷时间 int64 startTime = 2; //抵押时间
int64 collateralValue = 3; //抵押物价值(bty) int64 collateralValue = 3; //抵押物价值(bty)
float collateralPrice = 4; //抵押物价格 float collateralPrice = 4; //抵押物价格
int64 debtValue = 5; //债务价值(ccny) int64 debtValue = 5; //债务价值(ccny)
...@@ -36,8 +36,9 @@ message DebtRecord { ...@@ -36,8 +36,9 @@ message DebtRecord {
int64 expireTime = 9; //超时清算时间 int64 expireTime = 9; //超时清算时间
int32 preStatus = 10;//上一次抵押状态,用于告警恢复 int32 preStatus = 10;//上一次抵押状态,用于告警恢复
string debtId = 11;//借贷id string debtId = 11;//借贷id
int64 index = 12;//当前索引 string issuId = 12;//发行id
int64 preIndex = 13;//上级索引 int64 index = 13;//当前索引
int64 preIndex = 14;//上级索引
} }
// 资产价格记录 // 资产价格记录
...@@ -49,8 +50,8 @@ message IssuanceAssetPriceRecord { ...@@ -49,8 +50,8 @@ message IssuanceAssetPriceRecord {
// action // action
message IssuanceAction { message IssuanceAction {
oneof value { oneof value {
IssuanceCreate create = 1; //创建一期借贷 IssuanceCreate create = 1; //创建一期发行
IssuanceDebt debt = 2; //借贷 IssuanceDebt debt = 2; //抵押
IssuanceRepay repay = 3; //清算 IssuanceRepay repay = 3; //清算
IssuanceFeed feed = 4; //喂价 IssuanceFeed feed = 4; //喂价
IssuanceClose close = 5; //关闭 IssuanceClose close = 5; //关闭
...@@ -63,24 +64,24 @@ message IssuanceManage { ...@@ -63,24 +64,24 @@ message IssuanceManage {
repeated string superAddrs = 1; //大户地址 repeated string superAddrs = 1; //大户地址
} }
// 创建借贷 // 创建发行
message IssuanceCreate { message IssuanceCreate {
int64 totalBalance = 1; //可借贷总金额 int64 totalBalance = 1; //发行总金额
int64 debtCeiling = 2; //单用户可借出的限额(ccny) int64 debtCeiling = 2; //单用户可借出的限额(ccny)
float liquidationRatio = 3; //清算比例 float liquidationRatio = 3; //清算比例
int64 period = 4;//借贷最大期限 int64 period = 4; //发行最大期限
} }
// 质押借出 // 抵押
message IssuanceDebt { message IssuanceDebt {
string issuanceId = 1; //借贷期数ID string issuanceId = 1; //发行ID
int64 value = 2; //借贷价值(ccny) int64 value = 2; //借贷金额(ccny)
} }
// 质押清算 // 质押清算
message IssuanceRepay { message IssuanceRepay {
string issuanceId = 1; //借贷期数ID string issuanceId = 1; //发行ID
string debtId = 2; //借贷ID string debtId = 2; //抵押ID
} }
// 喂价 // 喂价
...@@ -92,10 +93,10 @@ message IssuanceFeed { ...@@ -92,10 +93,10 @@ message IssuanceFeed {
// 借贷关闭 // 借贷关闭
message IssuanceClose { message IssuanceClose {
string issuanceId = 1; //借贷期数ID string issuanceId = 1; //发行ID
} }
// exec_local 借贷信息 // exec_local 发行信息
message ReceiptIssuance { message ReceiptIssuance {
string issuanceId = 1; string issuanceId = 1;
string accountAddr = 2; string accountAddr = 2;
...@@ -108,7 +109,7 @@ message ReceiptIssuance { ...@@ -108,7 +109,7 @@ message ReceiptIssuance {
float btyPrice = 9; //bty价格 float btyPrice = 9; //bty价格
} }
// exec_local 借贷记录信息 // exec_local 抵押记录信息
message IssuanceRecord { message IssuanceRecord {
string issuanceId = 1; string issuanceId = 1;
string addr = 2; string addr = 2;
...@@ -116,34 +117,35 @@ message IssuanceRecord { ...@@ -116,34 +117,35 @@ message IssuanceRecord {
int64 index = 4; int64 index = 4;
} }
// exec_local 借贷记录信息列表 // exec_local 抵押记录信息列表
message IssuanceRecords { message IssuanceRecords {
repeated IssuanceRecord records = 1; repeated IssuanceRecord records = 1;
} }
// 根据ID查询一期借贷信息 // 根据ID查询发行信息
message ReqIssuanceInfo { message ReqIssuanceInfo {
string issuanceId = 1; string issuanceId = 1;
} }
// 返回一期借贷信息 // 返回一期发行信息
message RepIssuanceCurrentInfo { message RepIssuanceCurrentInfo {
int32 status = 1;//当期借贷的状态,是否关闭 int32 status = 1; //当期发行的状态,是否关闭
int64 totalBalance = 2; //当期可借贷的总金额(ccny) int64 totalBalance = 2; //当期发行总金额(ccny)
int64 debtCeiling = 3; //单用户可借出的限额(ccny) int64 debtCeiling = 3; //单用户可借出的限额(ccny)
float liquidationRatio = 4; //清算比例 float liquidationRatio = 4; //清算比例
int64 balance = 5; //剩余可借贷金额(ccny) int64 balance = 5; //剩余可借贷金额(ccny)
int64 collateralValue = 6; //抵押物总数量(bty) int64 collateralValue = 6; //抵押物总数量(bty)
int64 debtValue = 7; //产生的ccny数量 int64 debtValue = 7; //产生的ccny数量
int64 period = 8;//借贷最大期限 int64 period = 8; //发行最大期限
string issuId = 9; //发行ID
} }
// 根据ID列表查询多期借贷信息 // 根据ID列表查询多期发行信息
message ReqIssuanceInfos { message ReqIssuanceInfos {
repeated string issuanceIds = 1; repeated string issuanceIds = 1;
} }
// 返回多期借贷信息 // 返回多期发行信息
message RepIssuanceCurrentInfos { message RepIssuanceCurrentInfos {
repeated RepIssuanceCurrentInfo infos = 1; repeated RepIssuanceCurrentInfo infos = 1;
} }
...@@ -154,19 +156,19 @@ message ReqIssuanceByStatus { ...@@ -154,19 +156,19 @@ message ReqIssuanceByStatus {
int64 index = 2; int64 index = 2;
} }
// 返回借贷ID列表 // 返回发行ID列表
message RepIssuanceIDs { message RepIssuanceIDs {
repeated string IDs = 1; repeated string IDs = 1;
} }
// 根据用户地址查询发行记录 // 根据用户地址查询抵押记录
message ReqIssuanceRecordsByAddr { message ReqIssuanceRecordsByAddr {
string issuanceId = 1; string issuanceId = 1;
string addr = 2; string addr = 2;
int64 index = 3; int64 index = 3;
} }
// 根据状态查询发行记录 // 根据状态查询抵押记录
message ReqIssuanceRecordsByStatus { message ReqIssuanceRecordsByStatus {
string issuanceId = 1; string issuanceId = 1;
int32 status = 2; int32 status = 2;
...@@ -178,7 +180,7 @@ message RepIssuanceRecords { ...@@ -178,7 +180,7 @@ message RepIssuanceRecords {
repeated DebtRecord records = 1; repeated DebtRecord records = 1;
} }
// 精确查找发行记录 // 精确查找抵押记录
message ReqIssuanceDebtInfo { message ReqIssuanceDebtInfo {
string issuanceId = 1; string issuanceId = 1;
string debtId = 2; string debtId = 2;
......
...@@ -20,7 +20,7 @@ var _ = math.Inf ...@@ -20,7 +20,7 @@ var _ = math.Inf
// proto package needs to be updated. // proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// 借贷信息 // 发行信息
type Issuance struct { type Issuance struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
...@@ -201,8 +201,9 @@ type DebtRecord struct { ...@@ -201,8 +201,9 @@ type DebtRecord struct {
ExpireTime int64 `protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"` ExpireTime int64 `protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"`
PreStatus int32 `protobuf:"varint,10,opt,name=preStatus,proto3" json:"preStatus,omitempty"` PreStatus int32 `protobuf:"varint,10,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
DebtId string `protobuf:"bytes,11,opt,name=debtId,proto3" json:"debtId,omitempty"` DebtId string `protobuf:"bytes,11,opt,name=debtId,proto3" json:"debtId,omitempty"`
Index int64 `protobuf:"varint,12,opt,name=index,proto3" json:"index,omitempty"` IssuId string `protobuf:"bytes,12,opt,name=issuId,proto3" json:"issuId,omitempty"`
PreIndex int64 `protobuf:"varint,13,opt,name=preIndex,proto3" json:"preIndex,omitempty"` Index int64 `protobuf:"varint,13,opt,name=index,proto3" json:"index,omitempty"`
PreIndex int64 `protobuf:"varint,14,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -310,6 +311,13 @@ func (m *DebtRecord) GetDebtId() string { ...@@ -310,6 +311,13 @@ func (m *DebtRecord) GetDebtId() string {
return "" return ""
} }
func (m *DebtRecord) GetIssuId() string {
if m != nil {
return m.IssuId
}
return ""
}
func (m *DebtRecord) GetIndex() int64 { func (m *DebtRecord) GetIndex() int64 {
if m != nil { if m != nil {
return m.Index return m.Index
...@@ -560,7 +568,7 @@ func (m *IssuanceManage) GetSuperAddrs() []string { ...@@ -560,7 +568,7 @@ func (m *IssuanceManage) GetSuperAddrs() []string {
return nil return nil
} }
// 创建借贷 // 创建发行
type IssuanceCreate struct { type IssuanceCreate struct {
TotalBalance int64 `protobuf:"varint,1,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,1,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
DebtCeiling int64 `protobuf:"varint,2,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"` DebtCeiling int64 `protobuf:"varint,2,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"`
...@@ -624,7 +632,7 @@ func (m *IssuanceCreate) GetPeriod() int64 { ...@@ -624,7 +632,7 @@ func (m *IssuanceCreate) GetPeriod() int64 {
return 0 return 0
} }
// 质押借出 // 抵押
type IssuanceDebt struct { type IssuanceDebt struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"`
...@@ -816,7 +824,7 @@ func (m *IssuanceClose) GetIssuanceId() string { ...@@ -816,7 +824,7 @@ func (m *IssuanceClose) GetIssuanceId() string {
return "" return ""
} }
// exec_local 借贷信息 // exec_local 发行信息
type ReceiptIssuance struct { type ReceiptIssuance struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
AccountAddr string `protobuf:"bytes,2,opt,name=accountAddr,proto3" json:"accountAddr,omitempty"` AccountAddr string `protobuf:"bytes,2,opt,name=accountAddr,proto3" json:"accountAddr,omitempty"`
...@@ -920,7 +928,7 @@ func (m *ReceiptIssuance) GetBtyPrice() float32 { ...@@ -920,7 +928,7 @@ func (m *ReceiptIssuance) GetBtyPrice() float32 {
return 0 return 0
} }
// exec_local 借贷记录信息 // exec_local 抵押记录信息
type IssuanceRecord struct { type IssuanceRecord struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
...@@ -984,7 +992,7 @@ func (m *IssuanceRecord) GetIndex() int64 { ...@@ -984,7 +992,7 @@ func (m *IssuanceRecord) GetIndex() int64 {
return 0 return 0
} }
// exec_local 借贷记录信息列表 // exec_local 抵押记录信息列表
type IssuanceRecords struct { type IssuanceRecords struct {
Records []*IssuanceRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` Records []*IssuanceRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1024,7 +1032,7 @@ func (m *IssuanceRecords) GetRecords() []*IssuanceRecord { ...@@ -1024,7 +1032,7 @@ func (m *IssuanceRecords) GetRecords() []*IssuanceRecord {
return nil return nil
} }
// 根据ID查询一期借贷信息 // 根据ID查询发行信息
type ReqIssuanceInfo struct { type ReqIssuanceInfo struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1064,7 +1072,7 @@ func (m *ReqIssuanceInfo) GetIssuanceId() string { ...@@ -1064,7 +1072,7 @@ func (m *ReqIssuanceInfo) GetIssuanceId() string {
return "" return ""
} }
// 返回一期借贷信息 // 返回一期发行信息
type RepIssuanceCurrentInfo struct { type RepIssuanceCurrentInfo struct {
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
...@@ -1074,6 +1082,7 @@ type RepIssuanceCurrentInfo struct { ...@@ -1074,6 +1082,7 @@ type RepIssuanceCurrentInfo struct {
CollateralValue int64 `protobuf:"varint,6,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"` CollateralValue int64 `protobuf:"varint,6,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"`
DebtValue int64 `protobuf:"varint,7,opt,name=debtValue,proto3" json:"debtValue,omitempty"` DebtValue int64 `protobuf:"varint,7,opt,name=debtValue,proto3" json:"debtValue,omitempty"`
Period int64 `protobuf:"varint,8,opt,name=period,proto3" json:"period,omitempty"` Period int64 `protobuf:"varint,8,opt,name=period,proto3" json:"period,omitempty"`
IssuId string `protobuf:"bytes,9,opt,name=issuId,proto3" json:"issuId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1160,7 +1169,14 @@ func (m *RepIssuanceCurrentInfo) GetPeriod() int64 { ...@@ -1160,7 +1169,14 @@ func (m *RepIssuanceCurrentInfo) GetPeriod() int64 {
return 0 return 0
} }
// 根据ID列表查询多期借贷信息 func (m *RepIssuanceCurrentInfo) GetIssuId() string {
if m != nil {
return m.IssuId
}
return ""
}
// 根据ID列表查询多期发行信息
type ReqIssuanceInfos struct { type ReqIssuanceInfos struct {
IssuanceIds []string `protobuf:"bytes,1,rep,name=issuanceIds,proto3" json:"issuanceIds,omitempty"` IssuanceIds []string `protobuf:"bytes,1,rep,name=issuanceIds,proto3" json:"issuanceIds,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1200,7 +1216,7 @@ func (m *ReqIssuanceInfos) GetIssuanceIds() []string { ...@@ -1200,7 +1216,7 @@ func (m *ReqIssuanceInfos) GetIssuanceIds() []string {
return nil return nil
} }
// 返回多期借贷信息 // 返回多期发行信息
type RepIssuanceCurrentInfos struct { type RepIssuanceCurrentInfos struct {
Infos []*RepIssuanceCurrentInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` Infos []*RepIssuanceCurrentInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1288,7 +1304,7 @@ func (m *ReqIssuanceByStatus) GetIndex() int64 { ...@@ -1288,7 +1304,7 @@ func (m *ReqIssuanceByStatus) GetIndex() int64 {
return 0 return 0
} }
// 返回借贷ID列表 // 返回发行ID列表
type RepIssuanceIDs struct { type RepIssuanceIDs struct {
IDs []string `protobuf:"bytes,1,rep,name=IDs,proto3" json:"IDs,omitempty"` IDs []string `protobuf:"bytes,1,rep,name=IDs,proto3" json:"IDs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -1328,7 +1344,7 @@ func (m *RepIssuanceIDs) GetIDs() []string { ...@@ -1328,7 +1344,7 @@ func (m *RepIssuanceIDs) GetIDs() []string {
return nil return nil
} }
// 根据用户地址查询发行记录 // 根据用户地址查询抵押记录
type ReqIssuanceRecordsByAddr struct { type ReqIssuanceRecordsByAddr struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
...@@ -1384,7 +1400,7 @@ func (m *ReqIssuanceRecordsByAddr) GetIndex() int64 { ...@@ -1384,7 +1400,7 @@ func (m *ReqIssuanceRecordsByAddr) GetIndex() int64 {
return 0 return 0
} }
// 根据状态查询发行记录 // 根据状态查询抵押记录
type ReqIssuanceRecordsByStatus struct { type ReqIssuanceRecordsByStatus struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
...@@ -1480,7 +1496,7 @@ func (m *RepIssuanceRecords) GetRecords() []*DebtRecord { ...@@ -1480,7 +1496,7 @@ func (m *RepIssuanceRecords) GetRecords() []*DebtRecord {
return nil return nil
} }
// 精确查找发行记录 // 精确查找抵押记录
type ReqIssuanceDebtInfo struct { type ReqIssuanceDebtInfo struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
DebtId string `protobuf:"bytes,2,opt,name=debtId,proto3" json:"debtId,omitempty"` DebtId string `protobuf:"bytes,2,opt,name=debtId,proto3" json:"debtId,omitempty"`
...@@ -1598,73 +1614,74 @@ func init() { ...@@ -1598,73 +1614,74 @@ func init() {
func init() { proto.RegisterFile("issuance.proto", fileDescriptor_7110f4228953d675) } func init() { proto.RegisterFile("issuance.proto", fileDescriptor_7110f4228953d675) }
var fileDescriptor_7110f4228953d675 = []byte{ var fileDescriptor_7110f4228953d675 = []byte{
// 1074 bytes of a gzipped FileDescriptorProto // 1091 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x6e, 0xe3, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x6e, 0xe3, 0x44,
0x14, 0xae, 0xed, 0x38, 0x3f, 0x27, 0x6d, 0xda, 0x9d, 0xed, 0x16, 0x6b, 0x05, 0xab, 0xc8, 0xe2, 0x14, 0xae, 0xed, 0x38, 0x3f, 0x27, 0x6d, 0xda, 0x9d, 0xed, 0x16, 0x6b, 0x05, 0xab, 0xc8, 0xe2,
0x22, 0x0b, 0xa8, 0x85, 0x16, 0x21, 0x71, 0x47, 0xd3, 0x02, 0x8d, 0xc4, 0x22, 0x64, 0x56, 0x2b, 0x22, 0x0b, 0xa8, 0x85, 0x16, 0x21, 0x71, 0x47, 0xd3, 0x02, 0x8d, 0xc4, 0x22, 0x64, 0x56, 0x2b,
0x6e, 0x5d, 0x7b, 0xba, 0x32, 0x72, 0x63, 0xaf, 0x3d, 0xa9, 0x36, 0x4f, 0xc1, 0x3d, 0xe2, 0x21, 0x6e, 0x5d, 0x7b, 0xba, 0x32, 0x72, 0x63, 0xaf, 0x3d, 0xa9, 0x36, 0x4f, 0xc1, 0x3d, 0xcf, 0xc1,
0x78, 0x01, 0xde, 0x8a, 0x07, 0x40, 0xe7, 0xcc, 0xd8, 0xe3, 0xbf, 0x34, 0x11, 0x17, 0x7b, 0x53, 0x2d, 0xf7, 0x3c, 0x10, 0x0f, 0x80, 0xce, 0x99, 0xb1, 0xc7, 0x7f, 0x69, 0x22, 0x2e, 0xf6, 0xa6,
0x65, 0xce, 0x7c, 0x73, 0x7e, 0xbf, 0xf9, 0x3c, 0x85, 0x49, 0x94, 0xe7, 0x2b, 0x7f, 0x19, 0xf0, 0xca, 0x9c, 0xf9, 0x7c, 0x7e, 0xbf, 0xf9, 0x66, 0x0a, 0x93, 0x28, 0xcf, 0x57, 0xfe, 0x32, 0xe0,
0xd3, 0x34, 0x4b, 0x44, 0xc2, 0x6c, 0xb1, 0x4e, 0x79, 0xee, 0xfe, 0xdb, 0x83, 0xe1, 0x42, 0xed, 0xa7, 0x69, 0x96, 0x88, 0x84, 0xd9, 0x62, 0x9d, 0xf2, 0xdc, 0xfd, 0xb7, 0x07, 0xc3, 0x85, 0xda,
0xb0, 0x17, 0x00, 0x05, 0x6a, 0x11, 0x3a, 0xc6, 0xd4, 0x98, 0x8d, 0xbc, 0x8a, 0x85, 0xb9, 0xb0, 0x61, 0x2f, 0x00, 0x0a, 0xd4, 0x22, 0x74, 0x8c, 0xa9, 0x31, 0x1b, 0x79, 0x15, 0x0b, 0x73, 0x61,
0x2f, 0x12, 0xe1, 0xc7, 0x73, 0x3f, 0x46, 0x8b, 0x63, 0x4e, 0x8d, 0x99, 0xe5, 0xd5, 0x6c, 0x6c, 0x5f, 0x24, 0xc2, 0x8f, 0xe7, 0x7e, 0x8c, 0x16, 0xc7, 0x9c, 0x1a, 0x33, 0xcb, 0xab, 0xd9, 0xd8,
0x0a, 0xe3, 0x90, 0xdf, 0x8a, 0x2b, 0x1e, 0xc5, 0xd1, 0xf2, 0xad, 0x63, 0x11, 0xa4, 0x6a, 0x62, 0x14, 0xc6, 0x21, 0xbf, 0x15, 0x57, 0x3c, 0x8a, 0xa3, 0xe5, 0x5b, 0xc7, 0x22, 0x48, 0xd5, 0xc4,
0x9f, 0xc1, 0x51, 0x1c, 0xbd, 0x5b, 0x45, 0xa1, 0x2f, 0xa2, 0x64, 0xe9, 0xe1, 0x5f, 0xa7, 0x37, 0x3e, 0x83, 0xa3, 0x38, 0x7a, 0xb7, 0x8a, 0x42, 0x5f, 0x44, 0xc9, 0xd2, 0xc3, 0xbf, 0x4e, 0x6f,
0x35, 0x66, 0xa6, 0xd7, 0xb2, 0xb3, 0x19, 0x1c, 0x06, 0x49, 0x1c, 0xfb, 0x82, 0x67, 0x7e, 0xfc, 0x6a, 0xcc, 0x4c, 0xaf, 0x65, 0x67, 0x33, 0x38, 0x0c, 0x92, 0x38, 0xf6, 0x05, 0xcf, 0xfc, 0xf8,
0xc6, 0x8f, 0x57, 0xdc, 0xb1, 0xc9, 0x63, 0xd3, 0xcc, 0x3e, 0x86, 0x11, 0x06, 0x91, 0x98, 0x3e, 0x8d, 0x1f, 0xaf, 0xb8, 0x63, 0x93, 0xc7, 0xa6, 0x99, 0x7d, 0x0c, 0x23, 0x0c, 0x22, 0x31, 0x7d,
0x61, 0xb4, 0x81, 0x5d, 0xc8, 0xac, 0x3c, 0x1e, 0x24, 0x59, 0x98, 0x3b, 0x83, 0xa9, 0x35, 0x1b, 0xc2, 0x68, 0x03, 0xbb, 0x90, 0x59, 0x79, 0x3c, 0x48, 0xb2, 0x30, 0x77, 0x06, 0x53, 0x6b, 0x36,
0x9f, 0x3f, 0x39, 0xa5, 0x1e, 0x9c, 0x5e, 0x97, 0x3b, 0x5e, 0x15, 0xc5, 0xbe, 0x85, 0x49, 0xb4, 0x3e, 0x7f, 0x72, 0x4a, 0x3d, 0x38, 0xbd, 0x2e, 0x77, 0xbc, 0x2a, 0x8a, 0x7d, 0x0b, 0x93, 0x68,
0x7c, 0xf0, 0xe3, 0x28, 0x2c, 0xce, 0x0d, 0x37, 0x9d, 0x6b, 0x00, 0xd9, 0x09, 0xf4, 0x73, 0xe1, 0xf9, 0xe0, 0xc7, 0x51, 0x58, 0x7c, 0x37, 0xdc, 0xf4, 0x5d, 0x03, 0xc8, 0x4e, 0xa0, 0x9f, 0x0b,
0x8b, 0x55, 0xee, 0x8c, 0xa6, 0xc6, 0xcc, 0xf6, 0xd4, 0x8a, 0x7d, 0x03, 0x27, 0x98, 0x75, 0x2e, 0x5f, 0xac, 0x72, 0x67, 0x34, 0x35, 0x66, 0xb6, 0xa7, 0x56, 0xec, 0x1b, 0x38, 0xc1, 0xac, 0x73,
0x7e, 0xd2, 0x95, 0xfe, 0x92, 0x45, 0x01, 0x77, 0x80, 0x3a, 0xb0, 0x61, 0x17, 0xfd, 0xa5, 0x3c, 0xf1, 0x93, 0xae, 0xf4, 0x97, 0x2c, 0x0a, 0xb8, 0x03, 0xd4, 0x81, 0x0d, 0xbb, 0xe8, 0x2f, 0xe5,
0x8b, 0x92, 0xd0, 0x19, 0x53, 0x69, 0x6a, 0x45, 0xbd, 0xa4, 0x13, 0xdf, 0xbf, 0x4f, 0xa3, 0x8c, 0x59, 0x94, 0x84, 0xce, 0x98, 0x4a, 0x53, 0x2b, 0xea, 0x25, 0x7d, 0xf1, 0xfd, 0xfb, 0x34, 0xca,
0xbf, 0x8e, 0xee, 0xb9, 0xb3, 0x4f, 0x88, 0x96, 0x1d, 0xa7, 0x1b, 0x64, 0xdc, 0x17, 0x12, 0x75, 0xf8, 0xeb, 0xe8, 0x9e, 0x3b, 0xfb, 0x84, 0x68, 0xd9, 0x71, 0xba, 0x41, 0xc6, 0x7d, 0x21, 0x51,
0x40, 0xa8, 0x8a, 0x85, 0x39, 0x30, 0xb8, 0x55, 0x83, 0x9d, 0xd0, 0x66, 0xb1, 0x2c, 0x78, 0xc1, 0x07, 0x84, 0xaa, 0x58, 0x98, 0x03, 0x83, 0x5b, 0x35, 0xd8, 0x09, 0x6d, 0x16, 0xcb, 0x82, 0x17,
0xb3, 0xcb, 0x30, 0xcc, 0x9c, 0x43, 0xcd, 0x0b, 0x69, 0x61, 0xc7, 0x60, 0x47, 0xcb, 0x90, 0xbf, 0x3c, 0xbb, 0x0c, 0xc3, 0xcc, 0x39, 0xd4, 0xbc, 0x90, 0x16, 0x76, 0x0c, 0x76, 0xb4, 0x0c, 0xf9,
0x77, 0x8e, 0xe8, 0x9c, 0x5c, 0xb0, 0xe7, 0x30, 0x4c, 0x33, 0xbe, 0xa0, 0x8d, 0x27, 0xb4, 0x51, 0x7b, 0xe7, 0x88, 0xbe, 0x93, 0x0b, 0xf6, 0x1c, 0x86, 0x69, 0xc6, 0x17, 0xb4, 0xf1, 0x84, 0x36,
0xae, 0xdd, 0xbf, 0x2d, 0x00, 0xdd, 0x3e, 0x24, 0x8d, 0x1f, 0x04, 0xc9, 0x6a, 0x29, 0x28, 0x82, 0xca, 0xb5, 0xfb, 0x8f, 0x05, 0xa0, 0xdb, 0x87, 0xa4, 0xf1, 0x83, 0x20, 0x59, 0x2d, 0x05, 0x45,
0x64, 0x5e, 0xd5, 0x84, 0xe3, 0xcd, 0x85, 0x9f, 0x09, 0xca, 0x5d, 0xf2, 0x4e, 0x1b, 0xba, 0x68, 0x90, 0xcc, 0xab, 0x9a, 0x70, 0xbc, 0xb9, 0xf0, 0x33, 0x41, 0xb9, 0x4b, 0xde, 0x69, 0x43, 0x17,
0x62, 0x75, 0xd3, 0xa4, 0x86, 0x94, 0x9d, 0x97, 0xdc, 0x6b, 0x9a, 0xeb, 0x84, 0xb2, 0x9b, 0x84, 0x4d, 0xac, 0x6e, 0x9a, 0xd4, 0x90, 0xb2, 0xf3, 0x92, 0x7b, 0x4d, 0x73, 0x9d, 0x50, 0x76, 0x93,
0xaa, 0x93, 0x58, 0x3a, 0xea, 0xb7, 0x48, 0x5c, 0x0e, 0x4f, 0x91, 0x61, 0x50, 0x23, 0xc3, 0xa7, 0x50, 0x75, 0x12, 0x4b, 0x47, 0xfd, 0x16, 0x89, 0xcb, 0xe1, 0x29, 0x32, 0x0c, 0x6a, 0x64, 0xf8,
0x70, 0x50, 0x60, 0xe5, 0x4c, 0x86, 0x14, 0xa5, 0x6e, 0xc4, 0xe6, 0x73, 0x3d, 0xdc, 0x91, 0x1c, 0x14, 0x0e, 0x0a, 0xac, 0x9c, 0xc9, 0x90, 0xa2, 0xd4, 0x8d, 0xd8, 0x7c, 0xae, 0x87, 0x3b, 0x92,
0x9b, 0xb6, 0x60, 0x9e, 0x69, 0xc6, 0x7f, 0x95, 0x01, 0x80, 0x02, 0x68, 0x03, 0xc6, 0xc6, 0xa4, 0x63, 0xd3, 0x16, 0xcc, 0x33, 0xcd, 0xf8, 0xaf, 0x32, 0x00, 0x50, 0x00, 0x6d, 0xc0, 0xd8, 0x98,
0x17, 0x92, 0x38, 0x23, 0x4f, 0xad, 0xf4, 0xc8, 0xf6, 0x37, 0x8d, 0xec, 0xa0, 0x31, 0xb2, 0x37, 0xf4, 0x42, 0x12, 0x67, 0xe4, 0xa9, 0x15, 0xda, 0x71, 0x80, 0x8b, 0x90, 0xe8, 0x32, 0xf2, 0xd4,
0xe0, 0x14, 0x42, 0x71, 0x99, 0xe7, 0x5c, 0x50, 0x6d, 0x6a, 0x7e, 0x2f, 0x00, 0x32, 0xfa, 0x45, 0x4a, 0x8f, 0xf2, 0x60, 0xd3, 0x28, 0x27, 0x8d, 0x51, 0xbe, 0x01, 0xa7, 0x10, 0x90, 0xcb, 0x3c,
0x39, 0x1a, 0x32, 0x47, 0x6d, 0x41, 0xbf, 0xb7, 0x62, 0x2d, 0xbb, 0x64, 0x52, 0x97, 0xca, 0xb5, 0xe7, 0x82, 0x6a, 0x56, 0x73, 0x7d, 0x01, 0x90, 0xd1, 0x2f, 0xca, 0xdd, 0x90, 0xb9, 0x6b, 0x0b,
0xfb, 0x8f, 0x09, 0x93, 0xd2, 0x71, 0x80, 0x5d, 0x63, 0x67, 0xd0, 0x97, 0xbc, 0x24, 0x57, 0xe3, 0xfa, 0xbd, 0x15, 0x6b, 0xd9, 0x3d, 0x93, 0xba, 0x57, 0xae, 0xdd, 0xbf, 0x4d, 0x98, 0x94, 0x8e,
0xf3, 0x67, 0xea, 0xc2, 0x15, 0xb0, 0x2b, 0xda, 0xbc, 0xd9, 0xf3, 0x14, 0x8c, 0xbd, 0x84, 0x1e, 0x03, 0xec, 0x26, 0x3b, 0x83, 0xbe, 0xe4, 0x2b, 0xb9, 0x1a, 0x9f, 0x3f, 0x53, 0x07, 0xb1, 0x80,
0xd6, 0x45, 0xbe, 0xc7, 0xe7, 0x4f, 0x1b, 0x70, 0x24, 0xda, 0xcd, 0x9e, 0x47, 0x10, 0xf6, 0x05, 0x5d, 0xd1, 0xe6, 0xcd, 0x9e, 0xa7, 0x60, 0xec, 0x25, 0xf4, 0xb0, 0x5e, 0xf2, 0x3d, 0x3e, 0x7f,
0xd8, 0x19, 0x4f, 0xfd, 0x35, 0x11, 0x64, 0x7c, 0x7e, 0xdc, 0xc0, 0x7a, 0xb8, 0x77, 0xb3, 0xe7, 0xda, 0x80, 0x23, 0x01, 0x6f, 0xf6, 0x3c, 0x82, 0xb0, 0x2f, 0xc0, 0xce, 0x78, 0xea, 0xaf, 0x89,
0x49, 0x10, 0x3a, 0xbe, 0xe3, 0x3c, 0x24, 0x8e, 0xb4, 0x1d, 0xff, 0xc0, 0x79, 0x88, 0x8e, 0x11, 0x38, 0xe3, 0xf3, 0xe3, 0x06, 0xd6, 0xc3, 0xbd, 0x9b, 0x3d, 0x4f, 0x82, 0xd0, 0xf1, 0x1d, 0xe7,
0x82, 0x8e, 0x83, 0x38, 0xc9, 0x25, 0x57, 0xda, 0x8e, 0xaf, 0x70, 0x0f, 0x1d, 0x13, 0x08, 0x4b, 0x21, 0x71, 0xa7, 0xed, 0xf8, 0x07, 0xce, 0x43, 0x74, 0x8c, 0x10, 0x74, 0x1c, 0xc4, 0x49, 0x2e,
0xbc, 0xf7, 0x97, 0xfe, 0x5b, 0xc9, 0x9a, 0x76, 0x89, 0xaf, 0x68, 0x13, 0x4b, 0x94, 0x30, 0x36, 0x39, 0xd4, 0x76, 0x7c, 0x85, 0x7b, 0xe8, 0x98, 0x40, 0x58, 0xe2, 0xbd, 0xbf, 0xf4, 0xdf, 0x4a,
0x01, 0x53, 0xac, 0xd5, 0x7c, 0x4d, 0xb1, 0x9e, 0x0f, 0xc0, 0x7e, 0x40, 0x26, 0xba, 0x5f, 0xea, 0x36, 0xb5, 0x4b, 0x7c, 0x45, 0x9b, 0x58, 0xa2, 0x84, 0xb1, 0x09, 0x98, 0x62, 0xad, 0xe6, 0x6e,
0xf6, 0xc9, 0x43, 0x38, 0x8d, 0x7c, 0x95, 0xca, 0xbb, 0x99, 0x3b, 0xc6, 0xd4, 0xc2, 0xeb, 0xaa, 0x8a, 0xf5, 0x7c, 0x00, 0xf6, 0x03, 0x32, 0xd4, 0xfd, 0x52, 0xb7, 0x4f, 0x7e, 0x84, 0xd3, 0xc8,
0x2d, 0xee, 0x9f, 0x86, 0x3e, 0x22, 0x5b, 0xd9, 0x52, 0x76, 0x63, 0xbb, 0xb2, 0x9b, 0xbb, 0x29, 0x57, 0xa9, 0x3c, 0xb3, 0xb9, 0x63, 0x4c, 0x2d, 0x3c, 0xc6, 0xda, 0xe2, 0xfe, 0x69, 0xe8, 0x4f,
0xbb, 0xb5, 0x41, 0xd9, 0xb5, 0xa2, 0xf5, 0xaa, 0x8a, 0xe6, 0x5e, 0xc3, 0x7e, 0x75, 0x6e, 0x5b, 0x64, 0x2b, 0x5b, 0x8a, 0x6f, 0x6c, 0x57, 0x7c, 0x73, 0x37, 0xc5, 0xb7, 0x36, 0x28, 0xbe, 0x56,
0xbf, 0x49, 0xc7, 0xaa, 0x0f, 0x2a, 0x1f, 0xd5, 0x94, 0x1f, 0xe1, 0xa0, 0x36, 0xd1, 0xad, 0x6e, 0xba, 0x5e, 0x55, 0xe9, 0xdc, 0x6b, 0xd8, 0xaf, 0xce, 0x6d, 0xeb, 0x5d, 0x75, 0xac, 0xfa, 0xa0,
0xf4, 0x3d, 0x31, 0xab, 0xf7, 0xc4, 0xfd, 0x4d, 0xa7, 0x83, 0xd3, 0x46, 0x26, 0xa3, 0x50, 0xbc, 0xf2, 0x51, 0x4d, 0xf9, 0x11, 0x0e, 0x6a, 0x13, 0xdd, 0xea, 0x46, 0x9f, 0x1f, 0xb3, 0x7a, 0x7e,
0x5e, 0xa7, 0xb2, 0x49, 0xb6, 0x57, 0xae, 0x31, 0x95, 0x54, 0x51, 0xdc, 0x9a, 0x99, 0x9e, 0x5c, 0xdc, 0xdf, 0x74, 0x3a, 0x38, 0x6d, 0x64, 0x32, 0x0a, 0xc8, 0xeb, 0x75, 0x2a, 0x9b, 0x64, 0x7b,
0xa0, 0xe7, 0x87, 0x24, 0x5e, 0xdd, 0xa3, 0x24, 0x59, 0x58, 0xa8, 0x5c, 0xb9, 0x67, 0x3a, 0x45, 0xe5, 0x1a, 0x53, 0x49, 0x15, 0xc5, 0xad, 0x99, 0xe9, 0xc9, 0x05, 0x7a, 0x7e, 0x48, 0xe2, 0xd5,
0xe2, 0xc6, 0xb6, 0x14, 0xdd, 0x3f, 0x4c, 0x38, 0xf4, 0x78, 0xc0, 0xa3, 0x54, 0xec, 0xfc, 0xc5, 0x3d, 0x4a, 0x95, 0x85, 0x85, 0xca, 0x95, 0x7b, 0xa6, 0x53, 0x24, 0x6e, 0x6c, 0x4b, 0xd1, 0xfd,
0x6e, 0x08, 0xab, 0xd9, 0x16, 0x56, 0x5d, 0xb8, 0x55, 0x13, 0x08, 0x2d, 0x5a, 0xbd, 0x9a, 0x68, 0xc3, 0x84, 0x43, 0x8f, 0x07, 0x3c, 0x4a, 0xc5, 0xce, 0x37, 0x79, 0x43, 0x70, 0xcd, 0xb6, 0xe0,
0xd5, 0xe4, 0xc6, 0x6e, 0xca, 0x4d, 0x29, 0x2b, 0xfd, 0x4d, 0xb2, 0x32, 0xa8, 0xcb, 0x4a, 0x43, 0xea, 0xc2, 0xad, 0xa6, 0x70, 0x28, 0x31, 0xeb, 0xd5, 0xc4, 0xac, 0x26, 0x43, 0x76, 0x53, 0x86,
0x3a, 0x86, 0x8f, 0x4a, 0xc7, 0xa8, 0x21, 0x1d, 0x99, 0xe6, 0xb1, 0x16, 0xa2, 0x47, 0xfb, 0xc1, 0x4a, 0x59, 0xe9, 0x6f, 0x92, 0x95, 0x41, 0x5d, 0x56, 0x1a, 0xd2, 0x31, 0x7c, 0x54, 0x3a, 0x46,
0xa0, 0xe7, 0xeb, 0x46, 0xd0, 0xef, 0x8d, 0x1d, 0x28, 0x6b, 0xe9, 0x55, 0x6a, 0x71, 0xe7, 0x70, 0x0d, 0xe9, 0xc8, 0x34, 0x8f, 0xb5, 0x10, 0x3d, 0xda, 0x0f, 0x06, 0x3d, 0x5f, 0x37, 0x82, 0x7e,
0x58, 0x8f, 0x99, 0xb3, 0x33, 0x18, 0x64, 0xea, 0x81, 0x60, 0xd0, 0x03, 0xe1, 0x59, 0x4b, 0x54, 0x6f, 0xec, 0x40, 0x59, 0x4b, 0xaf, 0x52, 0x8b, 0x3b, 0x87, 0xc3, 0x7a, 0xcc, 0x9c, 0x9d, 0xc1,
0xe8, 0x91, 0x50, 0xa0, 0xdc, 0xaf, 0x70, 0x90, 0xef, 0x8a, 0xdd, 0xc5, 0xf2, 0x2e, 0xd9, 0x3a, 0x20, 0x53, 0x0f, 0x07, 0x83, 0x1e, 0x0e, 0xcf, 0x5a, 0xa2, 0x42, 0x8f, 0x87, 0x02, 0xe5, 0x7e,
0xfc, 0xbf, 0x4c, 0x38, 0xf1, 0x78, 0x5a, 0x32, 0x66, 0x95, 0x65, 0x7c, 0x29, 0xe8, 0xa8, 0x9e, 0x85, 0x83, 0x7c, 0x57, 0xec, 0x2e, 0x96, 0x77, 0xc9, 0xd6, 0xe1, 0xff, 0x65, 0xc2, 0x89, 0xc7,
0x94, 0x51, 0x9b, 0xd4, 0x87, 0x7f, 0xad, 0x55, 0x5e, 0x10, 0x76, 0xfd, 0x05, 0xd1, 0xf1, 0x81, 0xd3, 0x92, 0x31, 0xab, 0x2c, 0xe3, 0x4b, 0x41, 0x9f, 0xea, 0x49, 0x19, 0xb5, 0x49, 0x7d, 0xf8,
0xee, 0xef, 0xf0, 0x8e, 0x1b, 0x34, 0x3f, 0xbb, 0x5a, 0x35, 0x86, 0x35, 0xd5, 0xf8, 0x1a, 0x8e, 0x57, 0x5c, 0xe5, 0x65, 0x61, 0xd7, 0x5f, 0x16, 0x1d, 0x17, 0x77, 0x7f, 0x87, 0xf7, 0xdd, 0xa0,
0x1a, 0x1d, 0xcd, 0xb1, 0x36, 0xdd, 0xc0, 0x42, 0x07, 0xab, 0x26, 0xf7, 0x67, 0xf8, 0xa8, 0xbb, 0x79, 0x1d, 0x6b, 0xd5, 0x18, 0xd6, 0xde, 0x47, 0xfa, 0x9a, 0x1b, 0x55, 0xaf, 0x39, 0xf7, 0x6b,
0xa7, 0x39, 0xbb, 0xc0, 0xe1, 0xdf, 0x25, 0xc5, 0x44, 0x3f, 0x51, 0x13, 0xed, 0x86, 0x7b, 0x12, 0x38, 0x6a, 0x74, 0x3a, 0xc7, 0x9a, 0x75, 0x63, 0x0b, 0x7d, 0xac, 0x9a, 0xdc, 0x9f, 0xe1, 0xa3,
0xeb, 0x5e, 0xc1, 0xd3, 0x4a, 0x16, 0xf3, 0xb5, 0xfe, 0x06, 0x77, 0x0e, 0xa8, 0x24, 0x98, 0x59, 0xee, 0x5e, 0xe7, 0xec, 0x02, 0x49, 0x71, 0x97, 0x14, 0x93, 0xfe, 0x44, 0x4d, 0xba, 0x1b, 0xee,
0x25, 0x98, 0x0b, 0x93, 0x4a, 0x94, 0xc5, 0x75, 0xce, 0x8e, 0xc0, 0x5a, 0x5c, 0x17, 0x05, 0xe0, 0x49, 0xac, 0x7b, 0x05, 0x4f, 0x2b, 0x59, 0xcc, 0xd7, 0xfa, 0xce, 0xee, 0x1c, 0x5c, 0x49, 0x3c,
0x4f, 0x37, 0x04, 0xa7, 0x12, 0x48, 0xf1, 0x70, 0xbe, 0xa6, 0x0b, 0xfd, 0x7f, 0xae, 0x40, 0x99, 0xb3, 0x4a, 0x3c, 0x17, 0x26, 0x95, 0x28, 0x8b, 0xeb, 0x9c, 0x1d, 0x81, 0xb5, 0xb8, 0x2e, 0x0a,
0x89, 0x55, 0xcd, 0xe4, 0x77, 0x78, 0xde, 0x15, 0x45, 0x55, 0xb5, 0x83, 0xa2, 0xaa, 0xaa, 0xcd, 0xc0, 0x9f, 0x6e, 0x08, 0x4e, 0x25, 0x90, 0xe2, 0xe7, 0x7c, 0x4d, 0x07, 0xfd, 0xff, 0x1c, 0x8d,
0xee, 0xaa, 0x6b, 0xb1, 0x2e, 0x81, 0x55, 0xaa, 0x2e, 0x6e, 0xd6, 0xe7, 0xcd, 0x9b, 0xd5, 0xf1, 0x32, 0x13, 0xab, 0x9a, 0xc9, 0xef, 0xf0, 0xbc, 0x2b, 0x8a, 0xaa, 0x6a, 0x07, 0xa5, 0x55, 0x55,
0xf4, 0x2e, 0x6f, 0xd5, 0xab, 0x5a, 0xf7, 0x11, 0xb1, 0xcb, 0xcd, 0xda, 0xa8, 0xfc, 0xdf, 0xa1, 0x9b, 0xdd, 0x55, 0xd7, 0x62, 0x5d, 0x02, 0xab, 0x54, 0x5d, 0x9c, 0xb8, 0xcf, 0x9b, 0x27, 0xae,
0xbb, 0xb4, 0xe5, 0xee, 0x25, 0xf4, 0x65, 0x40, 0xf5, 0x36, 0xe9, 0xc8, 0x48, 0x01, 0x6e, 0xfb, 0xe3, 0xa9, 0x5e, 0x9e, 0xb6, 0x57, 0xb5, 0xee, 0x23, 0x62, 0x97, 0x13, 0xb7, 0xf1, 0x46, 0xf8,
0xf4, 0x9f, 0xd6, 0xc5, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x87, 0x63, 0xe3, 0x4a, 0x7b, 0x0d, 0x0e, 0xdd, 0xa5, 0x2d, 0x77, 0x2f, 0xa1, 0x2f, 0x03, 0xaa, 0x37, 0x4b, 0x47, 0x46, 0x0a, 0x70,
0x00, 0x00, 0xdb, 0xa7, 0xff, 0xcc, 0x2e, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x38, 0xd8, 0xb1, 0xab,
0x0d, 0x00, 0x00,
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment