Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
9b25d121
Commit
9b25d121
authored
Oct 18, 2018
by
任硕
Committed by
linj
Nov 26, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
unfreeze
parent
bf9a4e38
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
444 additions
and
75 deletions
+444
-75
unfreeze.go
commands/unfreeze.go
+0
-0
action.go
executor/action.go
+175
-0
exec.go
executor/exec.go
+6
-6
exec_del_local.go
executor/exec_del_local.go
+2
-0
exec_local.go
executor/exec_local.go
+2
-0
query.go
executor/query.go
+9
-0
unfreeze.go
executor/unfreeze.go
+1
-3
unfreezedb.go
executor/unfreezedb.go
+0
-3
unfreeze.proto
proto/unfreeze.proto
+28
-12
const.go
types/const.go
+6
-6
types.go
types/types.go
+36
-3
unfreeze.pb.go
types/unfreeze.pb.go
+179
-42
No files found.
commands/
gam
e.go
→
commands/
unfreez
e.go
View file @
9b25d121
File moved
executor/action.go
0 → 100644
View file @
9b25d121
package
executor
import
(
"time"
"gitlab.33.cn/chain33/chain33/account"
dbm
"gitlab.33.cn/chain33/chain33/common/db"
uf
"gitlab.33.cn/chain33/chain33/plugin/dapp/unfreeze/types"
"gitlab.33.cn/chain33/chain33/system/dapp"
"gitlab.33.cn/chain33/chain33/types"
)
type
action
struct
{
coinsAccount
*
account
.
DB
db
dbm
.
KV
txhash
[]
byte
fromaddr
string
blocktime
int64
height
int64
index
int32
execaddr
string
}
func
newAction
(
u
*
Unfreeze
,
tx
*
types
.
Transaction
,
index
int32
)
*
action
{
hash
:=
tx
.
Hash
()
fromaddr
:=
tx
.
From
()
return
&
action
{
u
.
GetCoinsAccount
(),
u
.
GetStateDB
(),
hash
,
fromaddr
,
u
.
GetBlockTime
(),
u
.
GetHeight
(),
index
,
dapp
.
ExecAddress
(
string
(
tx
.
Execer
))}
}
//创建解冻交易
func
(
a
*
action
)
UnfreezeCreate
(
create
*
uf
.
UnfreezeCreate
)
(
*
types
.
Receipt
,
error
)
{
/*
*参数检测
*时间等
*/
if
create
.
GetStartTime
()
<=
time
.
Unix
()
//构造ID - txHash
var
unfreezeID
string
=
a
.
txhash
receipt
,
err
:=
a
.
coinsAccount
.
TransferToExec
(
a
.
fromaddr
,
a
.
execaddr
,
create
.
TotalCount
)
if
err
!=
nil
{
uflog
.
Error
(
"unfreeze create "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecFrozen amount"
,
create
.
TotalCount
)
return
nil
,
err
}
unfreeze
:=
&
uf
.
Unfreeze
{
UnfreezeID
:
unfreezeID
,
StartTime
:
create
.
StartTime
,
TokenName
:
create
.
TokenName
,
TotalCount
:
create
.
TotalCount
,
Initiator
:
a
.
fromaddr
,
Beneficiary
:
create
.
Beneficiary
,
Period
:
create
.
Period
,
Means
:
create
.
Means
,
Amount
:
create
.
Amount
,
}
a
.
saveStateDB
(
unfreeze
)
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
receiptLog
:=
a
.
getReceiptLog
(
unfreeze
)
//TODO 修改receiptLog
logs
=
append
(
logs
,
receiptLog
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
}
//提取解冻币
func
(
a
*
action
)
UnfreezeWithdraw
(
withdraw
*
uf
.
UnfreezeWithdraw
)
(
*
types
.
Receipt
,
error
)
{
//TODO pseudocode
/*
*参数检测
*检测该地址是否存在对应解冻交易ID
*/
/*
*从合约转币到该地址(收币地址)
*/
value
,
err
:=
a
.
db
.
Get
(
key
(
withdraw
.
GetUnfreezeID
()))
if
err
!=
nil
{
uflog
.
Error
(
"unfreeze withdraw "
,
"execaddr"
,
a
.
execaddr
,
"err"
,
err
)
return
nil
,
err
}
var
unfreeze
uf
.
Unfreeze
err
=
types
.
Decode
(
value
,
&
unfreeze
)
if
err
!=
nil
{
uflog
.
Error
(
"unfreeze withdraw "
,
"execaddr"
,
a
.
execaddr
,
"err"
,
err
)
return
nil
,
err
}
/*
*检测可取款状态(时间)
*计算可取款额
*计算取款次数增加量
*/
var
amount
int64
var
withdrawTimes
int32
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
unfreeze
.
Initiator
,
unfreeze
.
Beneficiary
,
a
.
execaddr
,
amount
)
if
err
!=
nil
{
uflog
.
Error
(
"unfreeze withdraw "
,
"execaddr"
,
a
.
execaddr
,
"err"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
unfreeze
.
WithdrawTimes
+=
withdrawTimes
a
.
saveStateDB
(
&
unfreeze
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
}
//中止定期解冻
func
(
a
*
action
)
UnfreezeTerminate
(
terminate
*
uf
.
UnfreezeTerminate
)
(
*
types
.
Receipt
,
error
)
{
//TODO pseudocode
/*
*参数检测
*检测该地址是否存在对应解冻交易ID
*/
/*
*从合约转币到该地址(发币地址)
*/
//计算合约中剩余币数
var
remain
int64
//获取发币地址
var
senderAddr
string
receipt
,
err
:=
a
.
coinsAccount
.
ExecActive
(
senderAddr
,
a
.
execaddr
,
remain
)
if
err
!=
nil
{
uflog
.
Error
(
"unfreeze terminate "
,
"addr"
,
senderAddr
,
"execaddr"
,
a
.
execaddr
,
"err"
,
err
)
return
nil
,
err
}
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
/*修改receipt
*修改数据库中状态
*/
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
}
func
(
a
*
action
)
saveStateDB
(
unfreeze
*
uf
.
Unfreeze
)
{
a
.
db
.
Set
(
key
(
unfreeze
.
GetUnfreezeID
()),
types
.
Encode
(
unfreeze
))
}
func
key
(
id
string
)
(
keys
[]
byte
)
{
keys
=
append
(
keys
,
[]
byte
(
"mavl-"
+
uf
.
UnfreezeX
+
"-"
)
...
)
keys
=
append
(
keys
,
[]
byte
(
id
)
...
)
return
keys
}
func
(
a
*
action
)
getReceiptLog
(
unfreeze
*
uf
.
Unfreeze
)
*
types
.
ReceiptLog
{
//TODO 判断不同类型receipt
log
:=
&
types
.
ReceiptLog
{}
r
:=
&
uf
.
ReceiptUnfreeze
{}
r
.
TokenName
=
unfreeze
.
TokenName
r
.
CreateAddr
=
unfreeze
.
Initiator
r
.
ReceiveAddr
=
unfreeze
.
Beneficiary
log
.
Log
=
types
.
Encode
(
r
)
return
log
}
//查询可提币状态
func
QueryWithdraw
(
stateDB
dbm
.
KV
,
param
*
uf
.
QueryWithdraw
)
(
types
.
Message
,
error
)
{
//查询提币次数
//计算当前可否提币
return
&
types
.
Reply
{},
nil
}
executor/exec.go
View file @
9b25d121
...
@@ -5,17 +5,17 @@ import (
...
@@ -5,17 +5,17 @@ import (
"gitlab.33.cn/chain33/chain33/types"
"gitlab.33.cn/chain33/chain33/types"
)
)
func
(
u
*
Unfreeze
)
Exec_Create
(
payload
*
uf
.
GameCreate
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
func
(
u
*
Unfreeze
)
Exec_Create
(
payload
*
uf
.
UnfreezeCreate
,
tx
*
types
.
Transaction
,
index
int32
)
(
*
types
.
Receipt
,
error
)
{
action
:=
N
ewAction
(
u
,
tx
,
index
)
action
:=
n
ewAction
(
u
,
tx
,
index
)
return
action
.
UnfreezeCreate
(
payload
)
return
action
.
UnfreezeCreate
(
payload
)
}
}
func
(
u
*
Unfreeze
)
Exec_
Cancel
(
payload
*
uf
.
GameCancel
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
func
(
u
*
Unfreeze
)
Exec_
Withdraw
(
payload
*
uf
.
UnfreezeWithdraw
,
tx
*
types
.
Transaction
,
index
int32
)
(
*
types
.
Receipt
,
error
)
{
action
:=
N
ewAction
(
u
,
tx
,
index
)
action
:=
n
ewAction
(
u
,
tx
,
index
)
return
action
.
UnfreezeWithdraw
(
payload
)
return
action
.
UnfreezeWithdraw
(
payload
)
}
}
func
(
u
*
Unfreeze
)
Exec_Terminate
(
payload
*
uf
.
GameClose
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
func
(
u
*
Unfreeze
)
Exec_Terminate
(
payload
*
uf
.
UnfreezeTerminate
,
tx
*
types
.
Transaction
,
index
int32
)
(
*
types
.
Receipt
,
error
)
{
action
:=
N
ewAction
(
u
,
tx
,
index
)
action
:=
n
ewAction
(
u
,
tx
,
index
)
return
action
.
UnfreezeTerminate
(
payload
)
return
action
.
UnfreezeTerminate
(
payload
)
}
}
executor/exec_del_local.go
View file @
9b25d121
...
@@ -6,6 +6,8 @@ import (
...
@@ -6,6 +6,8 @@ import (
)
)
func
(
u
*
Unfreeze
)
execDelLocal
(
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
u
*
Unfreeze
)
execDelLocal
(
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
dbSet
:=
&
types
.
LocalDBSet
{}
dbSet
:=
&
types
.
LocalDBSet
{}
return
dbSet
,
nil
return
dbSet
,
nil
}
}
...
...
executor/exec_local.go
View file @
9b25d121
...
@@ -6,6 +6,8 @@ import (
...
@@ -6,6 +6,8 @@ import (
)
)
func
(
u
*
Unfreeze
)
execLocal
(
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
u
*
Unfreeze
)
execLocal
(
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
dbSet
:=
&
types
.
LocalDBSet
{}
dbSet
:=
&
types
.
LocalDBSet
{}
return
dbSet
,
nil
return
dbSet
,
nil
}
}
...
...
executor/query.go
View file @
9b25d121
package
executor
package
executor
import
(
uf
"gitlab.33.cn/chain33/chain33/plugin/dapp/unfreeze/types"
"gitlab.33.cn/chain33/chain33/types"
)
func
(
u
*
Unfreeze
)
Query_QueryWithdraw
(
in
*
uf
.
QueryWithdraw
)
(
types
.
Message
,
error
)
{
return
QueryWithdraw
(
u
.
GetStateDB
(),
in
)
}
executor/unfreeze.go
View file @
9b25d121
package
executor
package
executor
import
(
import
(
"fmt"
log
"github.com/inconshreveable/log15"
log
"github.com/inconshreveable/log15"
uf
"gitlab.33.cn/chain33/chain33/plugin/dapp/unfreeze/types"
uf
"gitlab.33.cn/chain33/chain33/plugin/dapp/unfreeze/types"
drivers
"gitlab.33.cn/chain33/chain33/system/dapp"
drivers
"gitlab.33.cn/chain33/chain33/system/dapp"
...
@@ -19,7 +17,7 @@ func init() {
...
@@ -19,7 +17,7 @@ func init() {
}
}
func
Init
(
name
string
)
{
func
Init
(
name
string
)
{
drivers
.
Register
(
GetName
(),
new
Gam
e
,
0
)
drivers
.
Register
(
GetName
(),
new
Unfreez
e
,
0
)
}
}
type
Unfreeze
struct
{
type
Unfreeze
struct
{
...
...
executor/unfreezedb.go
deleted
100644 → 0
View file @
bf9a4e38
package
executor
//database opeartion for executor unfreeze
proto/unfreeze.proto
View file @
9b25d121
...
@@ -3,24 +3,26 @@ syntax = "proto3";
...
@@ -3,24 +3,26 @@ syntax = "proto3";
package
types
;
package
types
;
message
Unfreeze
{
message
Unfreeze
{
//解冻交易ID(唯一识别码)
string
unfreezeID
=
1
;
//开始时间
//开始时间
int64
startTime
=
1
;
int64
startTime
=
2
;
//币种
//币种
string
tokenName
=
2
;
string
tokenName
=
3
;
//冻结总额
//冻结总额
int64
totalCount
=
3
;
int64
totalCount
=
4
;
//发币人地址
//发币人地址
string
senderAddr
=
4
;
string
initiator
=
5
;
//收币人地址
//收币人地址
string
receiverAddr
=
5
;
string
beneficiary
=
6
;
//解冻间隔
//解冻间隔
int64
unfreezeGap
=
6
;
int64
period
=
7
;
//解冻方式(百分比;固额) 1 百分比 -> 2 固额
//解冻方式(百分比;固额) 1 百分比 -> 2 固额
int32
unfreezeMeans
=
7
;
int32
means
=
8
;
//解冻数量:若为百分比解冻方式该字段值为百分比乘以100,若为固额该字段值为币数量
//解冻数量:若为百分比解冻方式该字段值为百分比乘以100,若为固额该字段值为币数量
int64
unfreezeAmount
=
8
;
int64
amount
=
9
;
//已解冻次数
//已解冻次数
int32
withdrawTimes
=
9
;
int32
withdrawTimes
=
10
;
}
}
// message for execs.unfreeze
// message for execs.unfreeze
...
@@ -34,17 +36,31 @@ message UnfreezeAction {
...
@@ -34,17 +36,31 @@ message UnfreezeAction {
}
}
message
UnfreezeCreate
{
message
UnfreezeCreate
{
int64
startTime
=
1
;
string
tokenName
=
2
;
int64
totalCount
=
3
;
string
initiator
=
4
;
string
beneficiary
=
5
;
int64
period
=
6
;
int32
means
=
7
;
int64
amount
=
8
;
}
}
message
UnfreezeWithdraw
{
message
UnfreezeWithdraw
{
string
unfreezeID
=
1
;
}
}
message
UnfreezeTerminate
{
message
UnfreezeTerminate
{
string
unfreezeID
=
1
;
}
}
//TODO: 更多receipt类型
message
ReceiptUnfreeze
{
message
ReceiptUnfreeze
{
string
tokenName
=
1
;
string
createAddr
=
2
;
string
receiveAddr
=
3
;
}
message
QueryWithdraw
{
string
unfreezeID
=
1
;
}
}
types/const.go
View file @
9b25d121
...
@@ -19,14 +19,14 @@ var (
...
@@ -19,14 +19,14 @@ var (
PackageName
=
"chain33.unfreeze"
PackageName
=
"chain33.unfreeze"
RpcName
=
"Chain33.Unfreeze"
RpcName
=
"Chain33.Unfreeze"
UnfreezeX
=
"unfreeze"
UnfreezeX
=
"unfreeze"
Execer
Game
=
[]
byte
(
UnfreezeX
)
Execer
Unfreeze
=
[]
byte
(
UnfreezeX
)
)
)
const
(
//
const (
Action_CreateUnfreeze
=
"createUnfreeze"
//
Action_CreateUnfreeze = "createUnfreeze"
Action_WithdrawUnfreeze
=
"withdrawUnfreeze"
//
Action_WithdrawUnfreeze = "withdrawUnfreeze"
Action_TerminateUnfreeze
=
"terminateUnfreeze"
//
Action_TerminateUnfreeze = "terminateUnfreeze"
)
//
)
//const (
//const (
// FuncName_QueryXXX = "QueryXXX"
// FuncName_QueryXXX = "QueryXXX"
...
...
types/types.go
View file @
9b25d121
...
@@ -33,7 +33,7 @@ type UnfreezeType struct {
...
@@ -33,7 +33,7 @@ type UnfreezeType struct {
types
.
ExecTypeBase
types
.
ExecTypeBase
}
}
func
(
at
*
UnfreezeType
)
GetLogMap
()
map
[
int64
]
*
types
.
LogInfo
{
func
(
u
*
UnfreezeType
)
GetLogMap
()
map
[
int64
]
*
types
.
LogInfo
{
return
map
[
int64
]
*
types
.
LogInfo
{
return
map
[
int64
]
*
types
.
LogInfo
{
TyLogCreateUnfreeze
:
{
reflect
.
TypeOf
(
ReceiptUnfreeze
{}),
"LogCreateUnfreeze"
},
TyLogCreateUnfreeze
:
{
reflect
.
TypeOf
(
ReceiptUnfreeze
{}),
"LogCreateUnfreeze"
},
TyLogWithdrawUnfreeze
:
{
reflect
.
TypeOf
(
ReceiptUnfreeze
{}),
"LogWithdrawUnfreeze"
},
TyLogWithdrawUnfreeze
:
{
reflect
.
TypeOf
(
ReceiptUnfreeze
{}),
"LogWithdrawUnfreeze"
},
...
@@ -41,14 +41,47 @@ func (at *UnfreezeType) GetLogMap() map[int64]*types.LogInfo {
...
@@ -41,14 +41,47 @@ func (at *UnfreezeType) GetLogMap() map[int64]*types.LogInfo {
}
}
}
}
func
(
g
*
UnfreezeType
)
GetPayload
()
types
.
Message
{
func
(
u
*
UnfreezeType
)
GetPayload
()
types
.
Message
{
return
&
UnfreezeAction
{}
return
&
UnfreezeAction
{}
}
}
func
(
g
*
UnfreezeType
)
GetTypeMap
()
map
[
string
]
int32
{
func
(
u
*
UnfreezeType
)
GetTypeMap
()
map
[
string
]
int32
{
return
map
[
string
]
int32
{
return
map
[
string
]
int32
{
"Create"
:
UnfreezeActionCreate
,
"Create"
:
UnfreezeActionCreate
,
"Withdraw"
:
UnfreezeActionWithdraw
,
"Withdraw"
:
UnfreezeActionWithdraw
,
"Terminate"
:
UnfreezeActionTerminate
,
"Terminate"
:
UnfreezeActionTerminate
,
}
}
}
}
////创建解冻相关交易
//func (u UnfreezeType) CreateTx(action string, message json.RawMessage) (*types.Transaction, error) {
// tlog.Debug("UnfreezeType.CreateTx", "action", action)
// if action == Action_CreateUnfreeze {
// var param UnfreezeCreate
// err := json.Unmarshal(message, ¶m)
// if err != nil {
// tlog.Error("CreateTx", "Error", err)
// return nil, types.ErrInputPara
// }
// return CreateRawGamePreCreateTx(¶m)
// } else if action == Action_WithdrawUnfreeze {
// var param UnfreezeWithdraw
// err := json.Unmarshal(message, ¶m)
// if err != nil {
// tlog.Error("CreateTx", "Error", err)
// return nil, types.ErrInputPara
// }
// return CreateRawGamePreMatchTx(¶m)
// } else if action == Action_TerminateUnfreeze {
// var param UnfreezeTerminate
// err := json.Unmarshal(message, ¶m)
// if err != nil {
// tlog.Error("CreateTx", "Error", err)
// return nil, types.ErrInputPara
// }
// return CreateRawGamePreCancelTx(¶m)
// } else {
// return nil, types.ErrNotSupport
// }
// return nil, nil
//}
types/unfreeze.pb.go
View file @
9b25d121
...
@@ -14,6 +14,7 @@ It has these top-level messages:
...
@@ -14,6 +14,7 @@ It has these top-level messages:
UnfreezeWithdraw
UnfreezeWithdraw
UnfreezeTerminate
UnfreezeTerminate
ReceiptUnfreeze
ReceiptUnfreeze
QueryWithdraw
*/
*/
package
types
package
types
...
@@ -33,24 +34,26 @@ var _ = math.Inf
...
@@ -33,24 +34,26 @@ var _ = math.Inf
const
_
=
proto
.
ProtoPackageIsVersion2
// please upgrade the proto package
const
_
=
proto
.
ProtoPackageIsVersion2
// please upgrade the proto package
type
Unfreeze
struct
{
type
Unfreeze
struct
{
// 解冻交易ID(唯一识别码)
UnfreezeID
string
`protobuf:"bytes,1,opt,name=unfreezeID" json:"unfreezeID,omitempty"`
// 开始时间
// 开始时间
StartTime
int64
`protobuf:"varint,
1
,opt,name=startTime" json:"startTime,omitempty"`
StartTime
int64
`protobuf:"varint,
2
,opt,name=startTime" json:"startTime,omitempty"`
// 币种
// 币种
TokenName
string
`protobuf:"bytes,
2
,opt,name=tokenName" json:"tokenName,omitempty"`
TokenName
string
`protobuf:"bytes,
3
,opt,name=tokenName" json:"tokenName,omitempty"`
// 冻结总额
// 冻结总额
TotalCount
int64
`protobuf:"varint,
3
,opt,name=totalCount" json:"totalCount,omitempty"`
TotalCount
int64
`protobuf:"varint,
4
,opt,name=totalCount" json:"totalCount,omitempty"`
// 发币人地址
// 发币人地址
SenderAddr
string
`protobuf:"bytes,4,opt,name=senderAddr" json:"senderAdd
r,omitempty"`
Initiator
string
`protobuf:"bytes,5,opt,name=initiator" json:"initiato
r,omitempty"`
// 收币人地址
// 收币人地址
ReceiverAddr
string
`protobuf:"bytes,5,opt,name=receiverAddr" json:"receiverAddr
,omitempty"`
Beneficiary
string
`protobuf:"bytes,6,opt,name=beneficiary" json:"beneficiary
,omitempty"`
// 解冻间隔
// 解冻间隔
UnfreezeGap
int64
`protobuf:"varint,6,opt,name=unfreezeGap" json:"unfreezeGap
,omitempty"`
Period
int64
`protobuf:"varint,7,opt,name=period" json:"period
,omitempty"`
// 解冻方式(百分比;固额) 1 百分比 -> 2 固额
// 解冻方式(百分比;固额) 1 百分比 -> 2 固额
UnfreezeMeans
int32
`protobuf:"varint,7,opt,name=unfreezeMeans" json:"unfreezeM
eans,omitempty"`
Means
int32
`protobuf:"varint,8,opt,name=means" json:"m
eans,omitempty"`
// 解冻数量:若为百分比解冻方式该字段值为百分比乘以100,若为固额该字段值为币数量
// 解冻数量:若为百分比解冻方式该字段值为百分比乘以100,若为固额该字段值为币数量
UnfreezeAmount
int64
`protobuf:"varint,8,opt,name=unfreezeAmount" json:"unfreezeA
mount,omitempty"`
Amount
int64
`protobuf:"varint,9,opt,name=amount" json:"a
mount,omitempty"`
// 已解冻次数
// 已解冻次数
WithdrawTimes
int32
`protobuf:"varint,
9
,opt,name=withdrawTimes" json:"withdrawTimes,omitempty"`
WithdrawTimes
int32
`protobuf:"varint,
10
,opt,name=withdrawTimes" json:"withdrawTimes,omitempty"`
}
}
func
(
m
*
Unfreeze
)
Reset
()
{
*
m
=
Unfreeze
{}
}
func
(
m
*
Unfreeze
)
Reset
()
{
*
m
=
Unfreeze
{}
}
...
@@ -58,6 +61,13 @@ func (m *Unfreeze) String() string { return proto.CompactTextString(m
...
@@ -58,6 +61,13 @@ func (m *Unfreeze) String() string { return proto.CompactTextString(m
func
(
*
Unfreeze
)
ProtoMessage
()
{}
func
(
*
Unfreeze
)
ProtoMessage
()
{}
func
(
*
Unfreeze
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
0
}
}
func
(
*
Unfreeze
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
0
}
}
func
(
m
*
Unfreeze
)
GetUnfreezeID
()
string
{
if
m
!=
nil
{
return
m
.
UnfreezeID
}
return
""
}
func
(
m
*
Unfreeze
)
GetStartTime
()
int64
{
func
(
m
*
Unfreeze
)
GetStartTime
()
int64
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
StartTime
return
m
.
StartTime
...
@@ -79,37 +89,37 @@ func (m *Unfreeze) GetTotalCount() int64 {
...
@@ -79,37 +89,37 @@ func (m *Unfreeze) GetTotalCount() int64 {
return
0
return
0
}
}
func
(
m
*
Unfreeze
)
Get
SenderAdd
r
()
string
{
func
(
m
*
Unfreeze
)
Get
Initiato
r
()
string
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
SenderAdd
r
return
m
.
Initiato
r
}
}
return
""
return
""
}
}
func
(
m
*
Unfreeze
)
Get
ReceiverAddr
()
string
{
func
(
m
*
Unfreeze
)
Get
Beneficiary
()
string
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
ReceiverAddr
return
m
.
Beneficiary
}
}
return
""
return
""
}
}
func
(
m
*
Unfreeze
)
Get
UnfreezeGap
()
int64
{
func
(
m
*
Unfreeze
)
Get
Period
()
int64
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
UnfreezeGap
return
m
.
Period
}
}
return
0
return
0
}
}
func
(
m
*
Unfreeze
)
Get
Unfreeze
Means
()
int32
{
func
(
m
*
Unfreeze
)
GetMeans
()
int32
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
Unfreeze
Means
return
m
.
Means
}
}
return
0
return
0
}
}
func
(
m
*
Unfreeze
)
Get
Unfreeze
Amount
()
int64
{
func
(
m
*
Unfreeze
)
GetAmount
()
int64
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
Unfreeze
Amount
return
m
.
Amount
}
}
return
0
return
0
}
}
...
@@ -283,6 +293,14 @@ func _UnfreezeAction_OneofSizer(msg proto.Message) (n int) {
...
@@ -283,6 +293,14 @@ func _UnfreezeAction_OneofSizer(msg proto.Message) (n int) {
}
}
type
UnfreezeCreate
struct
{
type
UnfreezeCreate
struct
{
StartTime
int64
`protobuf:"varint,1,opt,name=startTime" json:"startTime,omitempty"`
TokenName
string
`protobuf:"bytes,2,opt,name=tokenName" json:"tokenName,omitempty"`
TotalCount
int64
`protobuf:"varint,3,opt,name=totalCount" json:"totalCount,omitempty"`
Initiator
string
`protobuf:"bytes,4,opt,name=initiator" json:"initiator,omitempty"`
Beneficiary
string
`protobuf:"bytes,5,opt,name=beneficiary" json:"beneficiary,omitempty"`
Period
int64
`protobuf:"varint,6,opt,name=period" json:"period,omitempty"`
Means
int32
`protobuf:"varint,7,opt,name=means" json:"means,omitempty"`
Amount
int64
`protobuf:"varint,8,opt,name=amount" json:"amount,omitempty"`
}
}
func
(
m
*
UnfreezeCreate
)
Reset
()
{
*
m
=
UnfreezeCreate
{}
}
func
(
m
*
UnfreezeCreate
)
Reset
()
{
*
m
=
UnfreezeCreate
{}
}
...
@@ -290,7 +308,64 @@ func (m *UnfreezeCreate) String() string { return proto.CompactTextSt
...
@@ -290,7 +308,64 @@ func (m *UnfreezeCreate) String() string { return proto.CompactTextSt
func
(
*
UnfreezeCreate
)
ProtoMessage
()
{}
func
(
*
UnfreezeCreate
)
ProtoMessage
()
{}
func
(
*
UnfreezeCreate
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
2
}
}
func
(
*
UnfreezeCreate
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
2
}
}
func
(
m
*
UnfreezeCreate
)
GetStartTime
()
int64
{
if
m
!=
nil
{
return
m
.
StartTime
}
return
0
}
func
(
m
*
UnfreezeCreate
)
GetTokenName
()
string
{
if
m
!=
nil
{
return
m
.
TokenName
}
return
""
}
func
(
m
*
UnfreezeCreate
)
GetTotalCount
()
int64
{
if
m
!=
nil
{
return
m
.
TotalCount
}
return
0
}
func
(
m
*
UnfreezeCreate
)
GetInitiator
()
string
{
if
m
!=
nil
{
return
m
.
Initiator
}
return
""
}
func
(
m
*
UnfreezeCreate
)
GetBeneficiary
()
string
{
if
m
!=
nil
{
return
m
.
Beneficiary
}
return
""
}
func
(
m
*
UnfreezeCreate
)
GetPeriod
()
int64
{
if
m
!=
nil
{
return
m
.
Period
}
return
0
}
func
(
m
*
UnfreezeCreate
)
GetMeans
()
int32
{
if
m
!=
nil
{
return
m
.
Means
}
return
0
}
func
(
m
*
UnfreezeCreate
)
GetAmount
()
int64
{
if
m
!=
nil
{
return
m
.
Amount
}
return
0
}
type
UnfreezeWithdraw
struct
{
type
UnfreezeWithdraw
struct
{
UnfreezeID
string
`protobuf:"bytes,1,opt,name=unfreezeID" json:"unfreezeID,omitempty"`
}
}
func
(
m
*
UnfreezeWithdraw
)
Reset
()
{
*
m
=
UnfreezeWithdraw
{}
}
func
(
m
*
UnfreezeWithdraw
)
Reset
()
{
*
m
=
UnfreezeWithdraw
{}
}
...
@@ -298,7 +373,15 @@ func (m *UnfreezeWithdraw) String() string { return proto.CompactText
...
@@ -298,7 +373,15 @@ func (m *UnfreezeWithdraw) String() string { return proto.CompactText
func
(
*
UnfreezeWithdraw
)
ProtoMessage
()
{}
func
(
*
UnfreezeWithdraw
)
ProtoMessage
()
{}
func
(
*
UnfreezeWithdraw
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
3
}
}
func
(
*
UnfreezeWithdraw
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
3
}
}
func
(
m
*
UnfreezeWithdraw
)
GetUnfreezeID
()
string
{
if
m
!=
nil
{
return
m
.
UnfreezeID
}
return
""
}
type
UnfreezeTerminate
struct
{
type
UnfreezeTerminate
struct
{
UnfreezeID
string
`protobuf:"bytes,1,opt,name=unfreezeID" json:"unfreezeID,omitempty"`
}
}
func
(
m
*
UnfreezeTerminate
)
Reset
()
{
*
m
=
UnfreezeTerminate
{}
}
func
(
m
*
UnfreezeTerminate
)
Reset
()
{
*
m
=
UnfreezeTerminate
{}
}
...
@@ -306,7 +389,18 @@ func (m *UnfreezeTerminate) String() string { return proto.CompactTex
...
@@ -306,7 +389,18 @@ func (m *UnfreezeTerminate) String() string { return proto.CompactTex
func
(
*
UnfreezeTerminate
)
ProtoMessage
()
{}
func
(
*
UnfreezeTerminate
)
ProtoMessage
()
{}
func
(
*
UnfreezeTerminate
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
4
}
}
func
(
*
UnfreezeTerminate
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
4
}
}
func
(
m
*
UnfreezeTerminate
)
GetUnfreezeID
()
string
{
if
m
!=
nil
{
return
m
.
UnfreezeID
}
return
""
}
// TODO: 更多receipt类型
type
ReceiptUnfreeze
struct
{
type
ReceiptUnfreeze
struct
{
TokenName
string
`protobuf:"bytes,1,opt,name=tokenName" json:"tokenName,omitempty"`
CreateAddr
string
`protobuf:"bytes,2,opt,name=createAddr" json:"createAddr,omitempty"`
ReceiveAddr
string
`protobuf:"bytes,3,opt,name=receiveAddr" json:"receiveAddr,omitempty"`
}
}
func
(
m
*
ReceiptUnfreeze
)
Reset
()
{
*
m
=
ReceiptUnfreeze
{}
}
func
(
m
*
ReceiptUnfreeze
)
Reset
()
{
*
m
=
ReceiptUnfreeze
{}
}
...
@@ -314,6 +408,43 @@ func (m *ReceiptUnfreeze) String() string { return proto.CompactTextS
...
@@ -314,6 +408,43 @@ func (m *ReceiptUnfreeze) String() string { return proto.CompactTextS
func
(
*
ReceiptUnfreeze
)
ProtoMessage
()
{}
func
(
*
ReceiptUnfreeze
)
ProtoMessage
()
{}
func
(
*
ReceiptUnfreeze
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
5
}
}
func
(
*
ReceiptUnfreeze
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
5
}
}
func
(
m
*
ReceiptUnfreeze
)
GetTokenName
()
string
{
if
m
!=
nil
{
return
m
.
TokenName
}
return
""
}
func
(
m
*
ReceiptUnfreeze
)
GetCreateAddr
()
string
{
if
m
!=
nil
{
return
m
.
CreateAddr
}
return
""
}
func
(
m
*
ReceiptUnfreeze
)
GetReceiveAddr
()
string
{
if
m
!=
nil
{
return
m
.
ReceiveAddr
}
return
""
}
type
QueryWithdraw
struct
{
UnfreezeID
string
`protobuf:"bytes,1,opt,name=unfreezeID" json:"unfreezeID,omitempty"`
}
func
(
m
*
QueryWithdraw
)
Reset
()
{
*
m
=
QueryWithdraw
{}
}
func
(
m
*
QueryWithdraw
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryWithdraw
)
ProtoMessage
()
{}
func
(
*
QueryWithdraw
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
6
}
}
func
(
m
*
QueryWithdraw
)
GetUnfreezeID
()
string
{
if
m
!=
nil
{
return
m
.
UnfreezeID
}
return
""
}
func
init
()
{
func
init
()
{
proto
.
RegisterType
((
*
Unfreeze
)(
nil
),
"types.Unfreeze"
)
proto
.
RegisterType
((
*
Unfreeze
)(
nil
),
"types.Unfreeze"
)
proto
.
RegisterType
((
*
UnfreezeAction
)(
nil
),
"types.UnfreezeAction"
)
proto
.
RegisterType
((
*
UnfreezeAction
)(
nil
),
"types.UnfreezeAction"
)
...
@@ -321,32 +452,38 @@ func init() {
...
@@ -321,32 +452,38 @@ func init() {
proto
.
RegisterType
((
*
UnfreezeWithdraw
)(
nil
),
"types.UnfreezeWithdraw"
)
proto
.
RegisterType
((
*
UnfreezeWithdraw
)(
nil
),
"types.UnfreezeWithdraw"
)
proto
.
RegisterType
((
*
UnfreezeTerminate
)(
nil
),
"types.UnfreezeTerminate"
)
proto
.
RegisterType
((
*
UnfreezeTerminate
)(
nil
),
"types.UnfreezeTerminate"
)
proto
.
RegisterType
((
*
ReceiptUnfreeze
)(
nil
),
"types.ReceiptUnfreeze"
)
proto
.
RegisterType
((
*
ReceiptUnfreeze
)(
nil
),
"types.ReceiptUnfreeze"
)
proto
.
RegisterType
((
*
QueryWithdraw
)(
nil
),
"types.QueryWithdraw"
)
}
}
func
init
()
{
proto
.
RegisterFile
(
"unfreeze.proto"
,
fileDescriptor0
)
}
func
init
()
{
proto
.
RegisterFile
(
"unfreeze.proto"
,
fileDescriptor0
)
}
var
fileDescriptor0
=
[]
byte
{
var
fileDescriptor0
=
[]
byte
{
// 345 bytes of a gzipped FileDescriptorProto
// 432 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x64
,
0x92
,
0xcf
,
0x4e
,
0xf2
,
0x40
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x8c
,
0x54
,
0x4d
,
0x8f
,
0xd3
,
0x30
,
0x14
,
0xc5
,
0x69
,
0xf9
,
0x0a
,
0xf4
,
0xf2
,
0x89
,
0x30
,
0xc6
,
0x38
,
0x0b
,
0x63
,
0x9a
,
0xc6
,
0x18
,
0x10
,
0x6d
,
0xd2
,
0x4d
,
0xda
,
0x4e
,
0xb5
,
0x05
,
0x2c
,
0x3e
,
0x7c
,
0x40
,
0xa8
,
0x8a
,
0x38
,
0xf4
,
0x56
,
0x98
,
0x60
,
0x4c
,
0xdc
,
0x22
,
0x0b
,
0xd9
,
0xe8
,
0x62
,
0x82
,
0x71
,
0x3d
,
0xd2
,
0x6b
,
0x6c
,
0xd4
,
0x95
,
0xba
,
0x42
,
0xe2
,
0xba
,
0x2c
,
0x87
,
0x72
,
0x41
,
0x22
,
0x5a
,
0xc4
,
0xd9
,
0xdb
,
0xce
,
0xa4
,
0xd3
,
0x66
,
0x7a
,
0x81
,
0xe0
,
0xd3
,
0xb9
,
0xf7
,
0xa5
,
0x4c
,
0x87
,
0x8e
,
0x85
,
0xba
,
0xec
,
0x0a
,
0x8b
,
0x8d
,
0x1d
,
0x9c
,
0xc9
,
0x56
,
0xe1
,
0x67
,
0xf1
,
0x37
,
0xf8
,
0x37
,
0xfc
,
0x02
,
0x64
,
0xef
,
0x9c
,
0xfb
,
0xef
,
0x74
,
0xa0
,
0xb7
,
0x52
,
0x6f
,
0x1a
,
0xf1
,
0x13
,
0x47
,
0x99
,
0x4e
,
0x29
,
0x3b
,
0x69
,
0xd3
,
0x52
,
0xa5
,
0x7b
,
0x9c
,
0x37
,
0xef
,
0x4d
,
0x3c
,
0xef
,
0xd9
,
0x81
,
0x49
,
0xa9
,
0x65
,
0x1e
,
0x6d
,
0x33
,
0xcc
,
0xc3
,
0x2f
,
0x17
,
0x3a
,
0xcf
,
0xa5
,
0xc2
,
0xce
,
0xc1
,
0xcf
,
0x49
,
0xee
,
0x0c
,
0xe2
,
0x2f
,
0x9c
,
0xe7
,
0x46
,
0x93
,
0x66
,
0x11
,
0x55
,
0x39
,
0x16
,
0xc9
,
0xef
,
0x10
,
0x6a
,
0x9a
,
0xc7
,
0x09
,
0x72
,
0x27
,
0x70
,
0x86
,
0x4d
,
0x51
,
0x81
,
0x42
,
0xa5
,
0xf4
,
0x03
,
0xd5
,
0x86
,
0x5f
,
0xeb
,
0x0e
,
0x7b
,
0x03
,
0xd0
,
0xb0
,
0x3e
,
0x7d
,
0xe4
,
0xc1
,
0x34
,
0x98
,
0x8d
,
0xd2
,
0x93
,
0x4c
,
0x90
,
0xbb
,
0x81
,
0x33
,
0xf4
,
0x45
,
0x05
,
0xd8
,
0x05
,
0x00
,
0xa5
,
0x24
,
0x97
,
0xd3
,
0x16
,
0xc2
,
0x5e
,
0xc3
,
0xa8
,
0x20
,
0x61
,
0xe8
,
0x46
,
0x66
,
0xc8
,
0xc3
,
0x69
,
0x30
,
0xeb
,
0xa7
,
0x74
,
0xa5
,
0x88
,
0x37
,
0x4d
,
0xf1
,
0x1e
,
0x29
,
0xf4
,
0x1c
,
0x55
,
0x84
,
0x7a
,
0x12
,
0x45
,
0x9a
,
0x3b
,
0xc0
,
0x76
,
0x49
,
0xff
,
0x40
,
0xf5
,
0x59
,
0x64
,
0xc8
,
0xfb
,
0x4e
,
0xbc
,
0x03
,
0xec
,
0x6c
,
0xff
,
0x33
,
0xe5
,
0x7b
,
0x84
,
0x85
,
0xf0
,
0x5f
,
0xe3
,
0x02
,
0xe3
,
0x75
,
0xe9
,
0xf0
,
0x8c
,
0xe3
,
0xd2
,
0x24
,
0xee
,
0xaf
,
0x75
,
0xa9
,
0x88
,
0x9f
,
0x39
,
0x71
,
0x0b
,
0xb1
,
0x6a
,
0xa9
,
0x24
,
0x49
,
0x80
,
0xb1
,
0x00
,
0xba
,
0xf6
,
0x8a
,
0x07
,
0x99
,
0xf1
,
0x96
,
0x19
,
0xb2
,
0x8f
,
0xd8
,
0x25
,
0x1c
,
0x41
,
0xda
,
0xf0
,
0xc8
,
0xab
,
0xb7
,
0x00
,
0x9b
,
0xc2
,
0xf8
,
0x16
,
0x15
,
0xde
,
0xc9
,
0x95
,
0x14
,
0xd9
,
0xcf
,
0x47
,
0x94
,
0x2a
,
0xe7
,
0xed
,
0xc0
,
0x19
,
0x7a
,
0xe2
,
0x10
,
0xb2
,
0xab
,
0x2a
,
0x8d
,
0xa6
,
0xe2
,
0xb1
,
0xeb
,
0xb7
,
0x21
,
0xf6
,
0x12
,
0xe2
,
0x1c
,
0x8d
,
0xd4
,
0x6b
,
0x3e
,
0x70
,
0xb3
,
0x49
,
0x62
,
0xf6
,
0xed
,
0x98
,
0x56
,
0x35
,
0x5a
,
0x74
,
0xdb
,
0xc4
,
0xf4
,
0x1e
,
0x69
,
0xb9
,
0x29
,
0xeb
,
0x8a
,
0x3d
,
0x87
,
0x28
,
0x43
,
0xa1
,
0x0a
,
0x3e
,
0x9c
,
0x06
,
0xb3
,
0x28
,
0xf5
,
0x85
,
0x65
,
0x12
,
0xc8
,
0xb9
,
0xbf
,
0xeb
,
0x76
,
0x00
,
0xc3
,
0x6f
,
0x07
,
0x7a
,
0x36
,
0xc2
,
0xc9
,
0x82
,
0xe2
,
0x8b
,
0xcc
,
0x9d
,
0x64
,
0xe4
,
0xd9
,
0xbe
,
0x62
,
0x6f
,
0xe1
,
0x7c
,
0x23
,
0xe9
,
0xfb
,
0xda
,
0x88
,
0x54
,
0xb1
,
0x6b
,
0x68
,
0x2d
,
0x34
,
0x4a
,
0xda
,
0xa5
,
0xd8
,
0x1d
,
0x9f
,
0x8e
,
0x4c
,
0xda
,
0x23
,
0x8d
,
0xdd
,
0xa9
,
0xe0
,
0xe0
,
0x54
,
0xfb
,
0x60
,
0xf2
,
0x27
,
0x80
,
0x49
,
0x63
,
0xda
,
0xd5
,
0x8a
,
0x6b
,
0x9b
,
0x1a
,
0x71
,
0xd6
,
0x10
,
0xa5
,
0x8d
,
0xdd
,
0x42
,
0xc7
,
0x36
,
0x35
,
0xd1
,
0x76
,
0xc7
,
0xa4
,
0x56
,
0xec
,
0x02
,
0xe2
,
0x95
,
0x41
,
0x41
,
0xe8
,
0x6c
,
0x1b
,
0x2f
,
0x5e
,
0xcc
,
0x9d
,
0xbf
,
0x67
,
0xb5
,
0x92
,
0x97
,
0x52
,
0x9e
,
0x35
,
0xc4
,
0xaf
,
0x95
,
0xdd
,
0x81
,
0x4f
,
0xa8
,
0x93
,
0x58
,
0xf3
,
0x86
,
0x76
,
0xed
,
0x9a
,
0xcb
,
0x5e
,
0x5a
,
0xd3
,
0xd8
,
0x3b
,
0x18
,
0x36
,
0x43
,
0x9d
,
0x95
,
0x15
,
0xa3
,
0x9a
,
0xa6
,
0x8e
,
0xd7
,
0xea
,
0xe6
,
0x56
,
0x9f
,
0x35
,
0x44
,
0x65
,
0x66
,
0x3d
,
0x70
,
0xe3
,
0xc5
,
0xab
,
0x03
,
0xc9
,
0xb7
,
0xba
,
0xbd
,
0xec
,
0xa5
,
0x5b
,
0x2a
,
0x7b
,
0x0f
,
0x23
,
0x42
,
0x69
,
0xcb
,
0xc1
,
0xdc
,
0xe3
,
0xd2
,
0xf6
,
0xbe
,
0x0d
,
0xde
,
0x5a
,
0x2e
,
0x57
,
0x18
,
0xf6
,
0xab
,
0x93
,
0x49
,
0x65
,
0x3f
,
0xd5
,
0x77
,
0x3a
,
0x7e
,
0xa0
,
0xbb
,
0x69
,
0xfa
,
0xcb
,
0x5e
,
0xba
,
0x23
,
0x63
,
0x76
,
0x5b
,
0x86
,
0x0c
,
0xfa
,
0xf5
,
0x25
,
0xc2
,
0x13
,
0x18
,
0xfc
,
0x19
,
0x10
,
0x0e
,
0xe0
,
0xb3
,
0x09
,
0x84
,
0x54
,
0xd5
,
0xfb
,
0x84
,
0x54
,
0x7d
,
0x18
,
0x40
,
0xf4
,
0x20
,
0xee
,
0x4b
,
0x4c
,
0x58
,
0x14
,
0xbf
,
0x2b
,
0x23
,
0xab
,
0xbd
,
0xb6
,
0xcc
,
0x63
,
0xbb
,
0xf9
,
0x09
,
0x00
,
0x00
,
0xff
,
0xfe
,
0xb6
,
0xb6
,
0xf1
,
0xc7
,
0xdc
,
0x0f
,
0x3a
,
0xe8
,
0x0c
,
0x3a
,
0xec
,
0x0e
,
0xba
,
0xdf
,
0x1d
,
0xff
,
0x7d
,
0xf5
,
0x2a
,
0x9a
,
0x7e
,
0x02
,
0x00
,
0x00
,
0xf4
,
0xd9
,
0x89
,
0xa0
,
0xa3
,
0xae
,
0xa0
,
0xe3
,
0xe3
,
0x41
,
0x0f
,
0x8e
,
0x07
,
0x3d
,
0x6c
,
0x07
,
0x9d
,
0x2c
,
0xe0
,
0xe9
,
0xa1
,
0xcf
,
0xa7
,
0xae
,
0x7f
,
0x72
,
0x09
,
0xcf
,
0xfe
,
0xf3
,
0xf8
,
0xa4
,
0xe8
,
0x27
,
0x3c
,
0x49
,
0x71
,
0x85
,
0x32
,
0xa7
,
0xed
,
0x33
,
0xdb
,
0xf3
,
0x2f
,
0x38
,
0xe2
,
0x9f
,
0xbf
,
0x22
,
0x57
,
0xeb
,
0xb5
,
0xa9
,
0xed
,
0x6d
,
0x21
,
0xd6
,
0x21
,
0x63
,
0x07
,
0x3e
,
0x78
,
0x82
,
0x7f
,
0x68
,
0x6d
,
0x28
,
0xb9
,
0x80
,
0xf3
,
0x2f
,
0x25
,
0x9a
,
0xea
,
0xb1
,
0x8b
,
0xdd
,
0xc6
,
0xee
,
0x97
,
0x70
,
0xf9
,
0x2f
,
0x00
,
0x00
,
0xff
,
0xff
,
0x73
,
0x88
,
0x4e
,
0x63
,
0x24
,
0x04
,
0x00
,
0x00
,
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment