github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/gossip/contract/sfc100/contract.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package sfc100
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	u2u "github.com/unicornultrafoundation/go-u2u"
    12  	"github.com/unicornultrafoundation/go-u2u/accounts/abi"
    13  	"github.com/unicornultrafoundation/go-u2u/accounts/abi/bind"
    14  	"github.com/unicornultrafoundation/go-u2u/common"
    15  	"github.com/unicornultrafoundation/go-u2u/core/types"
    16  	"github.com/unicornultrafoundation/go-u2u/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = u2u.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  )
    30  
    31  // ContractMetaData contains all meta data concerning the Contract contract.
    32  var ContractMetaData = &bind.MetaData{
    33  	ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"}],\"name\":\"ChangedValidatorStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deactivatedEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deactivatedTime\",\"type\":\"uint256\"}],\"name\":\"DeactivatedValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"UpdatedBaseRewardPerSec\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blocksNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"UpdatedOfflinePenaltyThreshold\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"syncPubkey\",\"type\":\"bool\"}],\"name\":\"_syncValidator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentSealedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getEpochSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"epochFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBaseRewardWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalTxRewardWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"getLockedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getLockupInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lockedStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fromEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getStashedLockupRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lockupExtraReward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupBaseReward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unlockedReward\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getValidator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deactivatedTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deactivatedEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"receivedStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"auth\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getValidatorID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getValidatorPubkey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getWithdrawalRequest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"}],\"name\":\"isLockedUp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastValidatorID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minGasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"slashingRefundRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stakeTokenizerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stashedRewardsUntilEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalActiveStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSlashedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"treasuryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"bytes3\",\"name\":\"\",\"type\":\"bytes3\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"voteBookAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sealedEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"nodeDriver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_c\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateStakeTokenizerAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"v\",\"type\":\"address\"}],\"name\":\"updateLibAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"v\",\"type\":\"address\"}],\"name\":\"updateTreasuryAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"v\",\"type\":\"address\"}],\"name\":\"updateConstsAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"constsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"v\",\"type\":\"address\"}],\"name\":\"updateVoteBookAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"offlineTime\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"offlineBlocks\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"uptimes\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"originatedTxsFee\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"epochGas\",\"type\":\"uint256\"}],\"name\":\"sealEpoch\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nextValidatorIDs\",\"type\":\"uint256[]\"}],\"name\":\"sealEpochValidators\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
    34  	Bin: "0x608060405234801561001057600080fd5b506133bc806100206000396000f3fe6080604052600436106102855760003560e01c80638b0e9f3f11610153578063c65ee0e1116100cb578063d46fa5181161007f578063e08d7e6611610064578063e08d7e6614610b1f578063e6f45adf14610b9c578063f2fde38b14610bcf57610285565b8063d46fa51814610af5578063d96ed50514610b0a57610285565b8063cc8343aa116100b0578063cc8343aa14610a51578063cfd4766314610a83578063cfdbb7cd14610abc57610285565b8063c65ee0e114610a12578063c7be95de14610a3c57610285565b8063a2f6e6bc11610122578063b5d8962711610107578063b5d8962714610959578063b810e411146109c4578063c5f956af146109fd57610285565b8063a2f6e6bc146108ed578063a86a056f1461092057610285565b80638b0e9f3f1461083b5780638da5cb5b146108505780638f32d59b1461086557806396c7ee461461088e57610285565b8063592fe0c0116102015780637cacb1d6116101b5578063854873e11161019a578063854873e114610754578063860c2750146107f3578063893675c61461082657610285565b80637cacb1d61461070c578063841e45611461072157610285565b8063670322f8116101e6578063670322f8146106a9578063715018a6146106e257806376671808146106f757610285565b8063592fe0c0146105215780635fab23a81461069457610285565b80631f2701521161025857806339b80c001161023d57806339b80c001461044257806354fd4d50146104a4578063550359a0146104ee57610285565b80631f270152146103d057806328f731481461042d57610285565b80630135b1db146102ee5780630e559d821461033357806310e51e141461036457806318160ddd146103bb575b366102d7576040805162461bcd60e51b815260206004820152601560248201527f7472616e7366657273206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b6080546102ec906001600160a01b0316610c02565b005b3480156102fa57600080fd5b506103216004803603602081101561031157600080fd5b50356001600160a01b0316610c2b565b60408051918252519081900360200190f35b34801561033f57600080fd5b50610348610c3d565b604080516001600160a01b039092168252519081900360200190f35b34801561037057600080fd5b506102ec600480360360c081101561038757600080fd5b508035906020810135906001600160a01b0360408201358116916060810135821691608082013581169160a0013516610c4c565b3480156103c757600080fd5b50610321610dd9565b3480156103dc57600080fd5b5061040f600480360360608110156103f357600080fd5b506001600160a01b038135169060208101359060400135610ddf565b60408051938452602084019290925282820152519081900360600190f35b34801561043957600080fd5b50610321610e11565b34801561044e57600080fd5b5061046c6004803603602081101561046557600080fd5b5035610e17565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156104b057600080fd5b506104b9610e59565b604080517fffffff00000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b3480156104fa57600080fd5b506102ec6004803603602081101561051157600080fd5b50356001600160a01b0316610e7e565b34801561052d57600080fd5b506102ec600480360360a081101561054457600080fd5b81019060208101813564010000000081111561055f57600080fd5b82018360208201111561057157600080fd5b8035906020019184602083028401116401000000008311171561059357600080fd5b9193909290916020810190356401000000008111156105b157600080fd5b8201836020820111156105c357600080fd5b803590602001918460208302840111640100000000831117156105e557600080fd5b91939092909160208101903564010000000081111561060357600080fd5b82018360208201111561061557600080fd5b8035906020019184602083028401116401000000008311171561063757600080fd5b91939092909160208101903564010000000081111561065557600080fd5b82018360208201111561066757600080fd5b8035906020019184602083028401116401000000008311171561068957600080fd5b919350915035610f11565b3480156106a057600080fd5b506103216111cc565b3480156106b557600080fd5b50610321600480360360408110156106cc57600080fd5b506001600160a01b0381351690602001356111d2565b3480156106ee57600080fd5b506102ec611216565b34801561070357600080fd5b506103216112d1565b34801561071857600080fd5b506103216112da565b34801561072d57600080fd5b506102ec6004803603602081101561074457600080fd5b50356001600160a01b03166112e0565b34801561076057600080fd5b5061077e6004803603602081101561077757600080fd5b5035611373565b6040805160208082528351818301528351919283929083019185019080838360005b838110156107b85781810151838201526020016107a0565b50505050905090810190601f1680156107e55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107ff57600080fd5b506102ec6004803603602081101561081657600080fd5b50356001600160a01b031661142c565b34801561083257600080fd5b506103486114bf565b34801561084757600080fd5b506103216114ce565b34801561085c57600080fd5b506103486114d4565b34801561087157600080fd5b5061087a6114e3565b604080519115158252519081900360200190f35b34801561089a57600080fd5b506108c7600480360360408110156108b157600080fd5b506001600160a01b0381351690602001356114f4565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156108f957600080fd5b506102ec6004803603602081101561091057600080fd5b50356001600160a01b0316611526565b34801561092c57600080fd5b506103216004803603604081101561094357600080fd5b506001600160a01b0381351690602001356115b9565b34801561096557600080fd5b506109836004803603602081101561097c57600080fd5b50356115d6565b604080519788526020880196909652868601949094526060860192909252608085015260a08401526001600160a01b031660c0830152519081900360e00190f35b3480156109d057600080fd5b5061040f600480360360408110156109e757600080fd5b506001600160a01b03813516906020013561161c565b348015610a0957600080fd5b50610348611648565b348015610a1e57600080fd5b5061032160048036036020811015610a3557600080fd5b5035611657565b348015610a4857600080fd5b50610321611669565b348015610a5d57600080fd5b506102ec60048036036040811015610a7457600080fd5b5080359060200135151561166f565b348015610a8f57600080fd5b5061032160048036036040811015610aa657600080fd5b506001600160a01b03813516906020013561189e565b348015610ac857600080fd5b5061087a60048036036040811015610adf57600080fd5b506001600160a01b0381351690602001356118bb565b348015610b0157600080fd5b50610348611952565b348015610b1657600080fd5b50610321611961565b348015610b2b57600080fd5b506102ec60048036036020811015610b4257600080fd5b810190602081018135640100000000811115610b5d57600080fd5b820183602082011115610b6f57600080fd5b80359060200191846020830284011164010000000083111715610b9157600080fd5b509092509050611967565b348015610ba857600080fd5b506102ec60048036036020811015610bbf57600080fd5b50356001600160a01b0316611aab565b348015610bdb57600080fd5b506102ec60048036036020811015610bf257600080fd5b50356001600160a01b0316611b3e565b3660008037600080366000845af43d6000803e808015610c21573d6000f35b3d6000fd5b505050565b60696020526000908152604090205481565b607b546001600160a01b031681565b600054610100900460ff1680610c655750610c65611ba3565b80610c73575060005460ff16155b610cae5760405162461bcd60e51b815260040180806020018281038252602e81526020018061335a602e913960400191505060405180910390fd5b600054610100900460ff16158015610d1457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610d1d82611ba9565b6067879055606680546001600160a01b038088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556080805487841690831617905560818054928616929091169190911790556076869055610d84611d0b565b607e55610d8f611d14565b6000888152607760205260409020600701558015610dd057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50505050505050565b60765481565b607160209081526000938452604080852082529284528284209052825290208054600182015460029092015490919083565b606d5481565b607760205280600052604060002060009150905080600701549080600801549080600901549080600a01549080600b01549080600c01549080600d0154905087565b7f33303400000000000000000000000000000000000000000000000000000000005b90565b610e866114e3565b610ed7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610f1a33611d18565b610f555760405162461bcd60e51b81526004018080602001828103825260298152602001806133106029913960400191505060405180910390fd5b600060776000610f636112d1565b81526020019081526020016000209050606081600601805480602002602001604051908101604052809291908181526020018280548015610fc357602002820191906000526020600020905b815481526020019060010190808311610faf575b5050505050905061104a82828d8d80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508c8c80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d2f92505050565b6067546000908152607760205260409020600781015460019061106b611d14565b111561108257816007015461107e611d14565b0390505b611104818584868d8d80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508c8c80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611f3692505050565b61110e8186612720565b50506111186112d1565b606755611123611d14565b6007830155608154604080517fd9a7c1f900000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163d9a7c1f991600480820192602092909190829003018186803b15801561118657600080fd5b505afa15801561119a573d6000803e3d6000fd5b505050506040513d60208110156111b057600080fd5b5051600b83015550607654600d90910155505050505050505050565b606e5481565b60006111de83836118bb565b6111ea57506000611210565b506001600160a01b03821660009081526073602090815260408083208484529091529020545b92915050565b61121e6114e3565b61126f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60675460010190565b60675481565b6112e86114e3565b611339576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b607f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606a6020908152600091825260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156114245780601f106113f957610100808354040283529160200191611424565b820191906000526020600020905b81548152906001019060200180831161140757829003601f168201915b505050505081565b6114346114e3565b611485576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6082546001600160a01b031681565b606c5481565b6033546001600160a01b031690565b6033546001600160a01b0316331490565b607360209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b61152e6114e3565b61157f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b607b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b607060209081526000928352604080842090915290825290205481565b606860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391929091906001600160a01b031687565b607460209081526000928352604080842090915290825290208054600182015460029092015490919083565b607f546001600160a01b031681565b607a6020526000908152604090205481565b606b5481565b61167882612899565b6116c9576040805162461bcd60e51b815260206004820152601760248201527f76616c696461746f7220646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b600082815260686020526040902060038101549054156116e7575060005b606654604080517fa4066fbe000000000000000000000000000000000000000000000000000000008152600481018690526024810184905290516001600160a01b039092169163a4066fbe9160448082019260009290919082900301818387803b15801561175457600080fd5b505af1158015611768573d6000803e3d6000fd5b5050505081801561177857508015155b15610c26576066546000848152606a60205260409081902081517f242a6e3f0000000000000000000000000000000000000000000000000000000081526004810187815260248201938452825460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001831615610100020190911604604483018190526001600160a01b039095169463242a6e3f948994939091606490910190849080156118695780601f1061183e57610100808354040283529160200191611869565b820191906000526020600020905b81548152906001019060200180831161184c57829003601f168201915b50509350505050600060405180830381600087803b15801561188a57600080fd5b505af1158015610dd0573d6000803e3d6000fd5b607260209081526000928352604080842090915290825290205481565b6001600160a01b03821660009081526073602090815260408083208484529091528120600201541580159061191257506001600160a01b038316600090815260736020908152604080832085845290915290205415155b801561194b57506001600160a01b0383166000908152607360209081526040808320858452909152902060020154611948611d14565b11155b9392505050565b6081546001600160a01b031690565b607e5481565b61197033611d18565b6119ab5760405162461bcd60e51b81526004018080602001828103825260298152602001806133106029913960400191505060405180910390fd5b6000607760006119b96112d1565b8152602001908152602001600020905060008090505b82811015611a325760008484838181106119e557fe5b60209081029290920135600081815260688452604080822060030154948890529020839055600c860154909350611a2391508263ffffffff6128b016565b600c85015550506001016119cf565b50611a41600682018484613238565b50606654607e54604080517f07aaf3440000000000000000000000000000000000000000000000000000000081526004810192909252516001600160a01b03909216916307aaf3449160248082019260009290919082900301818387803b15801561188a57600080fd5b611ab36114e3565b611b04576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611b466114e3565b611b97576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611ba08161290a565b50565b303b1590565b600054610100900460ff1680611bc25750611bc2611ba3565b80611bd0575060005460ff16155b611c0b5760405162461bcd60e51b815260040180806020018281038252602e81526020018061335a602e913960400191505060405180910390fd5b600054610100900460ff16158015611c7157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015611d0757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b64174876e80090565b4290565b6066546001600160a01b038281169116145b919050565b60005b8351811015611f2f57608160009054906101000a90046001600160a01b03166001600160a01b0316635a68f01a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d6020811015611db357600080fd5b50518251839083908110611dc357fe5b6020026020010151118015611e655750608160009054906101000a90046001600160a01b03166001600160a01b031662cc7f836040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2057600080fd5b505afa158015611e34573d6000803e3d6000fd5b505050506040513d6020811015611e4a57600080fd5b50518351849083908110611e5a57fe5b602002602001015110155b15611ea657611e88848281518110611e7957fe5b602002602001015160086129c3565b611ea6848281518110611e9757fe5b6020026020010151600061166f565b828181518110611eb257fe5b6020026020010151856004016000868481518110611ecc57fe5b6020026020010151815260200190815260200160002081905550818181518110611ef257fe5b6020026020010151856005016000868481518110611f0c57fe5b602090810291909101810151825281019190915260400160002055600101611d32565b5050505050565b611f3e61327f565b6040518060a001604052808551604051908082528060200260200182016040528015611f74578160200160208202803883390190505b508152602001600081526020018551604051908082528060200260200182016040528015611fac578160200160208202803883390190505b508152602001600081526020016000815250905060008090505b84518110156120c7576000866003016000878481518110611fe357fe5b6020026020010151815260200190815260200160002054905060008090508185848151811061200e57fe5b60200260200101511115612035578185848151811061202957fe5b60200260200101510390505b8986848151811061204257fe5b602002602001015182028161205357fe5b048460400151848151811061206457fe5b60200260200101818152505061209e8460400151848151811061208357fe5b602002602001015185606001516128b090919063ffffffff16565b606085015260808401516120b8908263ffffffff6128b016565b60808501525050600101611fc6565b5060005b845181101561219057878482815181106120e157fe5b6020026020010151898684815181106120f657fe5b60200260200101518a60000160008a878151811061211057fe5b6020026020010151815260200190815260200160002054028161212f57fe5b04028161213857fe5b048260000151828151811061214957fe5b6020026020010181815250506121838260000151828151811061216857fe5b602002602001015183602001516128b090919063ffffffff16565b60208301526001016120cb565b5060005b84518110156125cf57600061223d89608160009054906101000a90046001600160a01b03166001600160a01b031663d9a7c1f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156121f157600080fd5b505afa158015612205573d6000803e3d6000fd5b505050506040513d602081101561221b57600080fd5b5051855180518690811061222b57fe5b60200260200101518660200151612aed565b905061227961226c84608001518560400151858151811061225a57fe5b60200260200101518660600151612b3c565b829063ffffffff6128b016565b9050600086838151811061228957fe5b60209081029190910181015160008181526068835260408082206006015460815482517fa778651500000000000000000000000000000000000000000000000000000000815292519496506001600160a01b0391821695939461233f948994929093169263a77865159260048082019391829003018186803b15801561230e57600080fd5b505afa158015612322573d6000803e3d6000fd5b505050506040513d602081101561233857600080fd5b5051612ca5565b6001600160a01b038316600090815260726020908152604080832087845290915290205490915080156124e65760008161237985876111d2565b84028161238257fe5b0490508083036123906132ae565b6001600160a01b03861660009081526073602090815260408083208a84529091529020600301546123c2908490612cc2565b90506123cc6132ae565b6123d7836000612cc2565b6001600160a01b0388166000908152606f602090815260408083208c8452825291829020825160608101845281548152600182015492810192909252600201549181019190915290915061242c908383612e84565b6001600160a01b0388166000818152606f602090815260408083208d84528252808320855181558583015160018083019190915595820151600291820155938352607482528083208d8452825291829020825160608101845281548152948101549185019190915290910154908201526124a7908383612e84565b6001600160a01b03881660009081526074602090815260408083208c845282529182902083518155908301516001820155910151600290910155505050505b600084815260686020526040812060030154838703918115612518578161250b612e9f565b84028161251457fe5b0490505b808e600101600089815260200190815260200160002054018f6001016000898152602001908152602001600020819055508a898151811061255557fe5b60200260200101518f6003016000898152602001908152602001600020819055508b898151811061258257fe5b60200260200101518e600201600089815260200190815260200160002054018f60020160008981526020019081526020016000208190555050505050505050508080600101915050612194565b50608081015160088701819055602082015160098801556060820151600a880155607654111561260d57600886015460768054919091039055612613565b60006076555b607f546001600160a01b031615610dd057600061262e612e9f565b608160009054906101000a90046001600160a01b03166001600160a01b03166394c3e9146040518163ffffffff1660e01b815260040160206040518083038186803b15801561267c57600080fd5b505afa158015612690573d6000803e3d6000fd5b505050506040513d60208110156126a657600080fd5b5051608084015102816126b557fe5b0490506126c181612eab565b607f546040516001600160a01b03909116908290600081818185875af1925050503d806000811461270e576040519150601f19603f3d011682016040523d82523d6000602084013e612713565b606091505b5050505050505050505050565b608154604080517f3a3ef66c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633a3ef66c916004808301926020929190829003018186803b15801561277e57600080fd5b505afa158015612792573d6000803e3d6000fd5b505050506040513d60208110156127a857600080fd5b5051830260010190506000816127bc612e9f565b8402816127c557fe5b0490506000608160009054906101000a90046001600160a01b03166001600160a01b0316632c8c36a56040518163ffffffff1660e01b815260040160206040518083038186803b15801561281857600080fd5b505afa15801561282c573d6000803e3d6000fd5b505050506040513d602081101561284257600080fd5b50519050848101612851612e9f565b8202838702018161285e57fe5b04915061286a82612f49565b91506000612876612e9f565b83607e54028161288257fe5b04905061288e81612fb7565b607e55505050505050565b600090815260686020526040902060050154151590565b60008282018381101561194b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03811661294f5760405162461bcd60e51b81526004018080602001828103825260268152602001806132ea6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000828152606860205260409020541580156129de57508015155b15612a0b57600082815260686020526040902060030154606d54612a079163ffffffff612fed16565b606d555b600082815260686020526040902054811115611d0757600082815260686020526040902081815560020154612ab357612a426112d1565b600083815260686020526040902060020155612a5c611d14565b6000838152606860209081526040918290206001810184905560020154825190815290810192909252805184927fac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e4792908290030190a25b60408051828152905183917fcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e919081900360200190a25050565b600082612afc57506000612b34565b6000612b0e868663ffffffff61302f16565b9050612b3083612b24838763ffffffff61302f16565b9063ffffffff61308816565b9150505b949350505050565b600082612b4b5750600061194b565b6000612b6183612b24878763ffffffff61302f16565b9050612c9c612b6e612e9f565b608154604080517f94c3e9140000000000000000000000000000000000000000000000000000000081529051612b24926001600160a01b0316916394c3e914916004808301926020929190829003018186803b158015612bcd57600080fd5b505afa158015612be1573d6000803e3d6000fd5b505050506040513d6020811015612bf757600080fd5b5051608154604080517fc74dd62100000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163c74dd62191600480820192602092909190829003018186803b158015612c5757600080fd5b505afa158015612c6b573d6000803e3d6000fd5b505050506040513d6020811015612c8157600080fd5b5051612c8b612e9f565b03038461302f90919063ffffffff16565b95945050505050565b600061194b612cb2612e9f565b612b24858563ffffffff61302f16565b612cca6132ae565b60405180606001604052806000815260200160008152602001600081525090506000608160009054906101000a90046001600160a01b03166001600160a01b0316635e2308d26040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3a57600080fd5b505afa158015612d4e573d6000803e3d6000fd5b505050506040513d6020811015612d6457600080fd5b505190508215612e5c57600081612d79612e9f565b0390506000612e0b608160009054906101000a90046001600160a01b03166001600160a01b0316630d4955e36040518163ffffffff1660e01b815260040160206040518083038186803b158015612dcf57600080fd5b505afa158015612de3573d6000803e3d6000fd5b505050506040513d6020811015612df957600080fd5b5051612b24848863ffffffff61302f16565b90506000612e2c612e1a612e9f565b612b248987860163ffffffff61302f16565b9050612e49612e39612e9f565b612b24898763ffffffff61302f16565b602086018190529003845250612e7d9050565b612e77612e67612e9f565b612b24868463ffffffff61302f16565b60408301525b5092915050565b612e8c6132ae565b612b34612e9985856130ca565b836130ca565b670de0b6b3a764000090565b606654604080517f66e7ea0f0000000000000000000000000000000000000000000000000000000081523060048201526024810184905290516001600160a01b03909216916366e7ea0f9160448082019260009290919082900301818387803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b5050607654612f43925090508263ffffffff6128b016565b60765550565b60006064612f55612e9f565b60690281612f5f57fe5b04821115612f83576064612f71612e9f565b60690281612f7b57fe5b049050611d2a565b6064612f8d612e9f565b605f0281612f9757fe5b04821015612fb3576064612fa9612e9f565b605f0281612f7b57fe5b5090565b600066038d7ea4c68000821115612fd6575066038d7ea4c68000611d2a565b633b9aca00821015612fb35750633b9aca00611d2a565b600061194b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061313c565b60008261303e57506000611210565b8282028284828161304b57fe5b041461194b5760405162461bcd60e51b81526004018080602001828103825260218152602001806133396021913960400191505060405180910390fd5b600061194b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131d3565b6130d26132ae565b60408051606081019091528251845182916130f3919063ffffffff6128b016565b8152602001613113846020015186602001516128b090919063ffffffff16565b8152602001613133846040015186604001516128b090919063ffffffff16565b90529392505050565b600081848411156131cb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613190578181015183820152602001613178565b50505050905090810190601f1680156131bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836132225760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613190578181015183820152602001613178565b50600083858161322e57fe5b0495945050505050565b828054828255906000526020600020908101928215613273579160200282015b82811115613273578235825591602001919060010190613258565b50612fb39291506132cf565b6040518060a0016040528060608152602001600081526020016060815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b610e7b91905b80821115612fb357600081556001016132d556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737363616c6c6572206973206e6f7420746865204e6f64654472697665724175746820636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a265627a7a723158202e03a7f7bebc4feaccc27e3c21e1033d901c6a29dc0061bd3121a9ffe136abe164736f6c63430005110032",
    35  }
    36  
    37  // ContractABI is the input ABI used to generate the binding from.
    38  // Deprecated: Use ContractMetaData.ABI instead.
    39  var ContractABI = ContractMetaData.ABI
    40  
    41  // ContractBin is the compiled bytecode used for deploying new contracts.
    42  // Deprecated: Use ContractMetaData.Bin instead.
    43  var ContractBin = ContractMetaData.Bin
    44  
    45  // DeployContract deploys a new Ethereum contract, binding an instance of Contract to it.
    46  func DeployContract(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Contract, error) {
    47  	parsed, err := ContractMetaData.GetAbi()
    48  	if err != nil {
    49  		return common.Address{}, nil, nil, err
    50  	}
    51  	if parsed == nil {
    52  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
    53  	}
    54  
    55  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractBin), backend)
    56  	if err != nil {
    57  		return common.Address{}, nil, nil, err
    58  	}
    59  	return address, tx, &Contract{ContractCaller: ContractCaller{contract: contract}, ContractTransactor: ContractTransactor{contract: contract}, ContractFilterer: ContractFilterer{contract: contract}}, nil
    60  }
    61  
    62  // Contract is an auto generated Go binding around an Ethereum contract.
    63  type Contract struct {
    64  	ContractCaller     // Read-only binding to the contract
    65  	ContractTransactor // Write-only binding to the contract
    66  	ContractFilterer   // Log filterer for contract events
    67  }
    68  
    69  // ContractCaller is an auto generated read-only Go binding around an Ethereum contract.
    70  type ContractCaller struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // ContractTransactor is an auto generated write-only Go binding around an Ethereum contract.
    75  type ContractTransactor struct {
    76  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    77  }
    78  
    79  // ContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    80  type ContractFilterer struct {
    81  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    82  }
    83  
    84  // ContractSession is an auto generated Go binding around an Ethereum contract,
    85  // with pre-set call and transact options.
    86  type ContractSession struct {
    87  	Contract     *Contract         // Generic contract binding to set the session for
    88  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    89  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    90  }
    91  
    92  // ContractCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    93  // with pre-set call options.
    94  type ContractCallerSession struct {
    95  	Contract *ContractCaller // Generic contract caller binding to set the session for
    96  	CallOpts bind.CallOpts   // Call options to use throughout this session
    97  }
    98  
    99  // ContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   100  // with pre-set transact options.
   101  type ContractTransactorSession struct {
   102  	Contract     *ContractTransactor // Generic contract transactor binding to set the session for
   103  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
   104  }
   105  
   106  // ContractRaw is an auto generated low-level Go binding around an Ethereum contract.
   107  type ContractRaw struct {
   108  	Contract *Contract // Generic contract binding to access the raw methods on
   109  }
   110  
   111  // ContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   112  type ContractCallerRaw struct {
   113  	Contract *ContractCaller // Generic read-only contract binding to access the raw methods on
   114  }
   115  
   116  // ContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   117  type ContractTransactorRaw struct {
   118  	Contract *ContractTransactor // Generic write-only contract binding to access the raw methods on
   119  }
   120  
   121  // NewContract creates a new instance of Contract, bound to a specific deployed contract.
   122  func NewContract(address common.Address, backend bind.ContractBackend) (*Contract, error) {
   123  	contract, err := bindContract(address, backend, backend, backend)
   124  	if err != nil {
   125  		return nil, err
   126  	}
   127  	return &Contract{ContractCaller: ContractCaller{contract: contract}, ContractTransactor: ContractTransactor{contract: contract}, ContractFilterer: ContractFilterer{contract: contract}}, nil
   128  }
   129  
   130  // NewContractCaller creates a new read-only instance of Contract, bound to a specific deployed contract.
   131  func NewContractCaller(address common.Address, caller bind.ContractCaller) (*ContractCaller, error) {
   132  	contract, err := bindContract(address, caller, nil, nil)
   133  	if err != nil {
   134  		return nil, err
   135  	}
   136  	return &ContractCaller{contract: contract}, nil
   137  }
   138  
   139  // NewContractTransactor creates a new write-only instance of Contract, bound to a specific deployed contract.
   140  func NewContractTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractTransactor, error) {
   141  	contract, err := bindContract(address, nil, transactor, nil)
   142  	if err != nil {
   143  		return nil, err
   144  	}
   145  	return &ContractTransactor{contract: contract}, nil
   146  }
   147  
   148  // NewContractFilterer creates a new log filterer instance of Contract, bound to a specific deployed contract.
   149  func NewContractFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractFilterer, error) {
   150  	contract, err := bindContract(address, nil, nil, filterer)
   151  	if err != nil {
   152  		return nil, err
   153  	}
   154  	return &ContractFilterer{contract: contract}, nil
   155  }
   156  
   157  // bindContract binds a generic wrapper to an already deployed contract.
   158  func bindContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   159  	parsed, err := abi.JSON(strings.NewReader(ContractABI))
   160  	if err != nil {
   161  		return nil, err
   162  	}
   163  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   164  }
   165  
   166  // Call invokes the (constant) contract method with params as input values and
   167  // sets the output to result. The result type might be a single field for simple
   168  // returns, a slice of interfaces for anonymous returns and a struct for named
   169  // returns.
   170  func (_Contract *ContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   171  	return _Contract.Contract.ContractCaller.contract.Call(opts, result, method, params...)
   172  }
   173  
   174  // Transfer initiates a plain transaction to move funds to the contract, calling
   175  // its default method if one is available.
   176  func (_Contract *ContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   177  	return _Contract.Contract.ContractTransactor.contract.Transfer(opts)
   178  }
   179  
   180  // Transact invokes the (paid) contract method with params as input values.
   181  func (_Contract *ContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   182  	return _Contract.Contract.ContractTransactor.contract.Transact(opts, method, params...)
   183  }
   184  
   185  // Call invokes the (constant) contract method with params as input values and
   186  // sets the output to result. The result type might be a single field for simple
   187  // returns, a slice of interfaces for anonymous returns and a struct for named
   188  // returns.
   189  func (_Contract *ContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   190  	return _Contract.Contract.contract.Call(opts, result, method, params...)
   191  }
   192  
   193  // Transfer initiates a plain transaction to move funds to the contract, calling
   194  // its default method if one is available.
   195  func (_Contract *ContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   196  	return _Contract.Contract.contract.Transfer(opts)
   197  }
   198  
   199  // Transact invokes the (paid) contract method with params as input values.
   200  func (_Contract *ContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   201  	return _Contract.Contract.contract.Transact(opts, method, params...)
   202  }
   203  
   204  // ConstsAddress is a free data retrieval call binding the contract method 0xd46fa518.
   205  //
   206  // Solidity: function constsAddress() view returns(address)
   207  func (_Contract *ContractCaller) ConstsAddress(opts *bind.CallOpts) (common.Address, error) {
   208  	var out []interface{}
   209  	err := _Contract.contract.Call(opts, &out, "constsAddress")
   210  
   211  	if err != nil {
   212  		return *new(common.Address), err
   213  	}
   214  
   215  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   216  
   217  	return out0, err
   218  
   219  }
   220  
   221  // ConstsAddress is a free data retrieval call binding the contract method 0xd46fa518.
   222  //
   223  // Solidity: function constsAddress() view returns(address)
   224  func (_Contract *ContractSession) ConstsAddress() (common.Address, error) {
   225  	return _Contract.Contract.ConstsAddress(&_Contract.CallOpts)
   226  }
   227  
   228  // ConstsAddress is a free data retrieval call binding the contract method 0xd46fa518.
   229  //
   230  // Solidity: function constsAddress() view returns(address)
   231  func (_Contract *ContractCallerSession) ConstsAddress() (common.Address, error) {
   232  	return _Contract.Contract.ConstsAddress(&_Contract.CallOpts)
   233  }
   234  
   235  // CurrentEpoch is a free data retrieval call binding the contract method 0x76671808.
   236  //
   237  // Solidity: function currentEpoch() view returns(uint256)
   238  func (_Contract *ContractCaller) CurrentEpoch(opts *bind.CallOpts) (*big.Int, error) {
   239  	var out []interface{}
   240  	err := _Contract.contract.Call(opts, &out, "currentEpoch")
   241  
   242  	if err != nil {
   243  		return *new(*big.Int), err
   244  	}
   245  
   246  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   247  
   248  	return out0, err
   249  
   250  }
   251  
   252  // CurrentEpoch is a free data retrieval call binding the contract method 0x76671808.
   253  //
   254  // Solidity: function currentEpoch() view returns(uint256)
   255  func (_Contract *ContractSession) CurrentEpoch() (*big.Int, error) {
   256  	return _Contract.Contract.CurrentEpoch(&_Contract.CallOpts)
   257  }
   258  
   259  // CurrentEpoch is a free data retrieval call binding the contract method 0x76671808.
   260  //
   261  // Solidity: function currentEpoch() view returns(uint256)
   262  func (_Contract *ContractCallerSession) CurrentEpoch() (*big.Int, error) {
   263  	return _Contract.Contract.CurrentEpoch(&_Contract.CallOpts)
   264  }
   265  
   266  // CurrentSealedEpoch is a free data retrieval call binding the contract method 0x7cacb1d6.
   267  //
   268  // Solidity: function currentSealedEpoch() view returns(uint256)
   269  func (_Contract *ContractCaller) CurrentSealedEpoch(opts *bind.CallOpts) (*big.Int, error) {
   270  	var out []interface{}
   271  	err := _Contract.contract.Call(opts, &out, "currentSealedEpoch")
   272  
   273  	if err != nil {
   274  		return *new(*big.Int), err
   275  	}
   276  
   277  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   278  
   279  	return out0, err
   280  
   281  }
   282  
   283  // CurrentSealedEpoch is a free data retrieval call binding the contract method 0x7cacb1d6.
   284  //
   285  // Solidity: function currentSealedEpoch() view returns(uint256)
   286  func (_Contract *ContractSession) CurrentSealedEpoch() (*big.Int, error) {
   287  	return _Contract.Contract.CurrentSealedEpoch(&_Contract.CallOpts)
   288  }
   289  
   290  // CurrentSealedEpoch is a free data retrieval call binding the contract method 0x7cacb1d6.
   291  //
   292  // Solidity: function currentSealedEpoch() view returns(uint256)
   293  func (_Contract *ContractCallerSession) CurrentSealedEpoch() (*big.Int, error) {
   294  	return _Contract.Contract.CurrentSealedEpoch(&_Contract.CallOpts)
   295  }
   296  
   297  // GetEpochSnapshot is a free data retrieval call binding the contract method 0x39b80c00.
   298  //
   299  // Solidity: function getEpochSnapshot(uint256 ) view returns(uint256 endTime, uint256 epochFee, uint256 totalBaseRewardWeight, uint256 totalTxRewardWeight, uint256 baseRewardPerSecond, uint256 totalStake, uint256 totalSupply)
   300  func (_Contract *ContractCaller) GetEpochSnapshot(opts *bind.CallOpts, arg0 *big.Int) (struct {
   301  	EndTime               *big.Int
   302  	EpochFee              *big.Int
   303  	TotalBaseRewardWeight *big.Int
   304  	TotalTxRewardWeight   *big.Int
   305  	BaseRewardPerSecond   *big.Int
   306  	TotalStake            *big.Int
   307  	TotalSupply           *big.Int
   308  }, error) {
   309  	var out []interface{}
   310  	err := _Contract.contract.Call(opts, &out, "getEpochSnapshot", arg0)
   311  
   312  	outstruct := new(struct {
   313  		EndTime               *big.Int
   314  		EpochFee              *big.Int
   315  		TotalBaseRewardWeight *big.Int
   316  		TotalTxRewardWeight   *big.Int
   317  		BaseRewardPerSecond   *big.Int
   318  		TotalStake            *big.Int
   319  		TotalSupply           *big.Int
   320  	})
   321  	if err != nil {
   322  		return *outstruct, err
   323  	}
   324  
   325  	outstruct.EndTime = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   326  	outstruct.EpochFee = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   327  	outstruct.TotalBaseRewardWeight = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   328  	outstruct.TotalTxRewardWeight = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   329  	outstruct.BaseRewardPerSecond = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int)
   330  	outstruct.TotalStake = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
   331  	outstruct.TotalSupply = *abi.ConvertType(out[6], new(*big.Int)).(**big.Int)
   332  
   333  	return *outstruct, err
   334  
   335  }
   336  
   337  // GetEpochSnapshot is a free data retrieval call binding the contract method 0x39b80c00.
   338  //
   339  // Solidity: function getEpochSnapshot(uint256 ) view returns(uint256 endTime, uint256 epochFee, uint256 totalBaseRewardWeight, uint256 totalTxRewardWeight, uint256 baseRewardPerSecond, uint256 totalStake, uint256 totalSupply)
   340  func (_Contract *ContractSession) GetEpochSnapshot(arg0 *big.Int) (struct {
   341  	EndTime               *big.Int
   342  	EpochFee              *big.Int
   343  	TotalBaseRewardWeight *big.Int
   344  	TotalTxRewardWeight   *big.Int
   345  	BaseRewardPerSecond   *big.Int
   346  	TotalStake            *big.Int
   347  	TotalSupply           *big.Int
   348  }, error) {
   349  	return _Contract.Contract.GetEpochSnapshot(&_Contract.CallOpts, arg0)
   350  }
   351  
   352  // GetEpochSnapshot is a free data retrieval call binding the contract method 0x39b80c00.
   353  //
   354  // Solidity: function getEpochSnapshot(uint256 ) view returns(uint256 endTime, uint256 epochFee, uint256 totalBaseRewardWeight, uint256 totalTxRewardWeight, uint256 baseRewardPerSecond, uint256 totalStake, uint256 totalSupply)
   355  func (_Contract *ContractCallerSession) GetEpochSnapshot(arg0 *big.Int) (struct {
   356  	EndTime               *big.Int
   357  	EpochFee              *big.Int
   358  	TotalBaseRewardWeight *big.Int
   359  	TotalTxRewardWeight   *big.Int
   360  	BaseRewardPerSecond   *big.Int
   361  	TotalStake            *big.Int
   362  	TotalSupply           *big.Int
   363  }, error) {
   364  	return _Contract.Contract.GetEpochSnapshot(&_Contract.CallOpts, arg0)
   365  }
   366  
   367  // GetLockedStake is a free data retrieval call binding the contract method 0x670322f8.
   368  //
   369  // Solidity: function getLockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   370  func (_Contract *ContractCaller) GetLockedStake(opts *bind.CallOpts, delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   371  	var out []interface{}
   372  	err := _Contract.contract.Call(opts, &out, "getLockedStake", delegator, toValidatorID)
   373  
   374  	if err != nil {
   375  		return *new(*big.Int), err
   376  	}
   377  
   378  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   379  
   380  	return out0, err
   381  
   382  }
   383  
   384  // GetLockedStake is a free data retrieval call binding the contract method 0x670322f8.
   385  //
   386  // Solidity: function getLockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   387  func (_Contract *ContractSession) GetLockedStake(delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   388  	return _Contract.Contract.GetLockedStake(&_Contract.CallOpts, delegator, toValidatorID)
   389  }
   390  
   391  // GetLockedStake is a free data retrieval call binding the contract method 0x670322f8.
   392  //
   393  // Solidity: function getLockedStake(address delegator, uint256 toValidatorID) view returns(uint256)
   394  func (_Contract *ContractCallerSession) GetLockedStake(delegator common.Address, toValidatorID *big.Int) (*big.Int, error) {
   395  	return _Contract.Contract.GetLockedStake(&_Contract.CallOpts, delegator, toValidatorID)
   396  }
   397  
   398  // GetLockupInfo is a free data retrieval call binding the contract method 0x96c7ee46.
   399  //
   400  // Solidity: function getLockupInfo(address , uint256 ) view returns(uint256 lockedStake, uint256 fromEpoch, uint256 endTime, uint256 duration)
   401  func (_Contract *ContractCaller) GetLockupInfo(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (struct {
   402  	LockedStake *big.Int
   403  	FromEpoch   *big.Int
   404  	EndTime     *big.Int
   405  	Duration    *big.Int
   406  }, error) {
   407  	var out []interface{}
   408  	err := _Contract.contract.Call(opts, &out, "getLockupInfo", arg0, arg1)
   409  
   410  	outstruct := new(struct {
   411  		LockedStake *big.Int
   412  		FromEpoch   *big.Int
   413  		EndTime     *big.Int
   414  		Duration    *big.Int
   415  	})
   416  	if err != nil {
   417  		return *outstruct, err
   418  	}
   419  
   420  	outstruct.LockedStake = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   421  	outstruct.FromEpoch = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   422  	outstruct.EndTime = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   423  	outstruct.Duration = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   424  
   425  	return *outstruct, err
   426  
   427  }
   428  
   429  // GetLockupInfo is a free data retrieval call binding the contract method 0x96c7ee46.
   430  //
   431  // Solidity: function getLockupInfo(address , uint256 ) view returns(uint256 lockedStake, uint256 fromEpoch, uint256 endTime, uint256 duration)
   432  func (_Contract *ContractSession) GetLockupInfo(arg0 common.Address, arg1 *big.Int) (struct {
   433  	LockedStake *big.Int
   434  	FromEpoch   *big.Int
   435  	EndTime     *big.Int
   436  	Duration    *big.Int
   437  }, error) {
   438  	return _Contract.Contract.GetLockupInfo(&_Contract.CallOpts, arg0, arg1)
   439  }
   440  
   441  // GetLockupInfo is a free data retrieval call binding the contract method 0x96c7ee46.
   442  //
   443  // Solidity: function getLockupInfo(address , uint256 ) view returns(uint256 lockedStake, uint256 fromEpoch, uint256 endTime, uint256 duration)
   444  func (_Contract *ContractCallerSession) GetLockupInfo(arg0 common.Address, arg1 *big.Int) (struct {
   445  	LockedStake *big.Int
   446  	FromEpoch   *big.Int
   447  	EndTime     *big.Int
   448  	Duration    *big.Int
   449  }, error) {
   450  	return _Contract.Contract.GetLockupInfo(&_Contract.CallOpts, arg0, arg1)
   451  }
   452  
   453  // GetStake is a free data retrieval call binding the contract method 0xcfd47663.
   454  //
   455  // Solidity: function getStake(address , uint256 ) view returns(uint256)
   456  func (_Contract *ContractCaller) GetStake(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   457  	var out []interface{}
   458  	err := _Contract.contract.Call(opts, &out, "getStake", arg0, arg1)
   459  
   460  	if err != nil {
   461  		return *new(*big.Int), err
   462  	}
   463  
   464  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   465  
   466  	return out0, err
   467  
   468  }
   469  
   470  // GetStake is a free data retrieval call binding the contract method 0xcfd47663.
   471  //
   472  // Solidity: function getStake(address , uint256 ) view returns(uint256)
   473  func (_Contract *ContractSession) GetStake(arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   474  	return _Contract.Contract.GetStake(&_Contract.CallOpts, arg0, arg1)
   475  }
   476  
   477  // GetStake is a free data retrieval call binding the contract method 0xcfd47663.
   478  //
   479  // Solidity: function getStake(address , uint256 ) view returns(uint256)
   480  func (_Contract *ContractCallerSession) GetStake(arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   481  	return _Contract.Contract.GetStake(&_Contract.CallOpts, arg0, arg1)
   482  }
   483  
   484  // GetStashedLockupRewards is a free data retrieval call binding the contract method 0xb810e411.
   485  //
   486  // Solidity: function getStashedLockupRewards(address , uint256 ) view returns(uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
   487  func (_Contract *ContractCaller) GetStashedLockupRewards(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (struct {
   488  	LockupExtraReward *big.Int
   489  	LockupBaseReward  *big.Int
   490  	UnlockedReward    *big.Int
   491  }, error) {
   492  	var out []interface{}
   493  	err := _Contract.contract.Call(opts, &out, "getStashedLockupRewards", arg0, arg1)
   494  
   495  	outstruct := new(struct {
   496  		LockupExtraReward *big.Int
   497  		LockupBaseReward  *big.Int
   498  		UnlockedReward    *big.Int
   499  	})
   500  	if err != nil {
   501  		return *outstruct, err
   502  	}
   503  
   504  	outstruct.LockupExtraReward = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   505  	outstruct.LockupBaseReward = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   506  	outstruct.UnlockedReward = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   507  
   508  	return *outstruct, err
   509  
   510  }
   511  
   512  // GetStashedLockupRewards is a free data retrieval call binding the contract method 0xb810e411.
   513  //
   514  // Solidity: function getStashedLockupRewards(address , uint256 ) view returns(uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
   515  func (_Contract *ContractSession) GetStashedLockupRewards(arg0 common.Address, arg1 *big.Int) (struct {
   516  	LockupExtraReward *big.Int
   517  	LockupBaseReward  *big.Int
   518  	UnlockedReward    *big.Int
   519  }, error) {
   520  	return _Contract.Contract.GetStashedLockupRewards(&_Contract.CallOpts, arg0, arg1)
   521  }
   522  
   523  // GetStashedLockupRewards is a free data retrieval call binding the contract method 0xb810e411.
   524  //
   525  // Solidity: function getStashedLockupRewards(address , uint256 ) view returns(uint256 lockupExtraReward, uint256 lockupBaseReward, uint256 unlockedReward)
   526  func (_Contract *ContractCallerSession) GetStashedLockupRewards(arg0 common.Address, arg1 *big.Int) (struct {
   527  	LockupExtraReward *big.Int
   528  	LockupBaseReward  *big.Int
   529  	UnlockedReward    *big.Int
   530  }, error) {
   531  	return _Contract.Contract.GetStashedLockupRewards(&_Contract.CallOpts, arg0, arg1)
   532  }
   533  
   534  // GetValidator is a free data retrieval call binding the contract method 0xb5d89627.
   535  //
   536  // Solidity: function getValidator(uint256 ) view returns(uint256 status, uint256 deactivatedTime, uint256 deactivatedEpoch, uint256 receivedStake, uint256 createdEpoch, uint256 createdTime, address auth)
   537  func (_Contract *ContractCaller) GetValidator(opts *bind.CallOpts, arg0 *big.Int) (struct {
   538  	Status           *big.Int
   539  	DeactivatedTime  *big.Int
   540  	DeactivatedEpoch *big.Int
   541  	ReceivedStake    *big.Int
   542  	CreatedEpoch     *big.Int
   543  	CreatedTime      *big.Int
   544  	Auth             common.Address
   545  }, error) {
   546  	var out []interface{}
   547  	err := _Contract.contract.Call(opts, &out, "getValidator", arg0)
   548  
   549  	outstruct := new(struct {
   550  		Status           *big.Int
   551  		DeactivatedTime  *big.Int
   552  		DeactivatedEpoch *big.Int
   553  		ReceivedStake    *big.Int
   554  		CreatedEpoch     *big.Int
   555  		CreatedTime      *big.Int
   556  		Auth             common.Address
   557  	})
   558  	if err != nil {
   559  		return *outstruct, err
   560  	}
   561  
   562  	outstruct.Status = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   563  	outstruct.DeactivatedTime = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   564  	outstruct.DeactivatedEpoch = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   565  	outstruct.ReceivedStake = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   566  	outstruct.CreatedEpoch = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int)
   567  	outstruct.CreatedTime = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
   568  	outstruct.Auth = *abi.ConvertType(out[6], new(common.Address)).(*common.Address)
   569  
   570  	return *outstruct, err
   571  
   572  }
   573  
   574  // GetValidator is a free data retrieval call binding the contract method 0xb5d89627.
   575  //
   576  // Solidity: function getValidator(uint256 ) view returns(uint256 status, uint256 deactivatedTime, uint256 deactivatedEpoch, uint256 receivedStake, uint256 createdEpoch, uint256 createdTime, address auth)
   577  func (_Contract *ContractSession) GetValidator(arg0 *big.Int) (struct {
   578  	Status           *big.Int
   579  	DeactivatedTime  *big.Int
   580  	DeactivatedEpoch *big.Int
   581  	ReceivedStake    *big.Int
   582  	CreatedEpoch     *big.Int
   583  	CreatedTime      *big.Int
   584  	Auth             common.Address
   585  }, error) {
   586  	return _Contract.Contract.GetValidator(&_Contract.CallOpts, arg0)
   587  }
   588  
   589  // GetValidator is a free data retrieval call binding the contract method 0xb5d89627.
   590  //
   591  // Solidity: function getValidator(uint256 ) view returns(uint256 status, uint256 deactivatedTime, uint256 deactivatedEpoch, uint256 receivedStake, uint256 createdEpoch, uint256 createdTime, address auth)
   592  func (_Contract *ContractCallerSession) GetValidator(arg0 *big.Int) (struct {
   593  	Status           *big.Int
   594  	DeactivatedTime  *big.Int
   595  	DeactivatedEpoch *big.Int
   596  	ReceivedStake    *big.Int
   597  	CreatedEpoch     *big.Int
   598  	CreatedTime      *big.Int
   599  	Auth             common.Address
   600  }, error) {
   601  	return _Contract.Contract.GetValidator(&_Contract.CallOpts, arg0)
   602  }
   603  
   604  // GetValidatorID is a free data retrieval call binding the contract method 0x0135b1db.
   605  //
   606  // Solidity: function getValidatorID(address ) view returns(uint256)
   607  func (_Contract *ContractCaller) GetValidatorID(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   608  	var out []interface{}
   609  	err := _Contract.contract.Call(opts, &out, "getValidatorID", arg0)
   610  
   611  	if err != nil {
   612  		return *new(*big.Int), err
   613  	}
   614  
   615  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   616  
   617  	return out0, err
   618  
   619  }
   620  
   621  // GetValidatorID is a free data retrieval call binding the contract method 0x0135b1db.
   622  //
   623  // Solidity: function getValidatorID(address ) view returns(uint256)
   624  func (_Contract *ContractSession) GetValidatorID(arg0 common.Address) (*big.Int, error) {
   625  	return _Contract.Contract.GetValidatorID(&_Contract.CallOpts, arg0)
   626  }
   627  
   628  // GetValidatorID is a free data retrieval call binding the contract method 0x0135b1db.
   629  //
   630  // Solidity: function getValidatorID(address ) view returns(uint256)
   631  func (_Contract *ContractCallerSession) GetValidatorID(arg0 common.Address) (*big.Int, error) {
   632  	return _Contract.Contract.GetValidatorID(&_Contract.CallOpts, arg0)
   633  }
   634  
   635  // GetValidatorPubkey is a free data retrieval call binding the contract method 0x854873e1.
   636  //
   637  // Solidity: function getValidatorPubkey(uint256 ) view returns(bytes)
   638  func (_Contract *ContractCaller) GetValidatorPubkey(opts *bind.CallOpts, arg0 *big.Int) ([]byte, error) {
   639  	var out []interface{}
   640  	err := _Contract.contract.Call(opts, &out, "getValidatorPubkey", arg0)
   641  
   642  	if err != nil {
   643  		return *new([]byte), err
   644  	}
   645  
   646  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
   647  
   648  	return out0, err
   649  
   650  }
   651  
   652  // GetValidatorPubkey is a free data retrieval call binding the contract method 0x854873e1.
   653  //
   654  // Solidity: function getValidatorPubkey(uint256 ) view returns(bytes)
   655  func (_Contract *ContractSession) GetValidatorPubkey(arg0 *big.Int) ([]byte, error) {
   656  	return _Contract.Contract.GetValidatorPubkey(&_Contract.CallOpts, arg0)
   657  }
   658  
   659  // GetValidatorPubkey is a free data retrieval call binding the contract method 0x854873e1.
   660  //
   661  // Solidity: function getValidatorPubkey(uint256 ) view returns(bytes)
   662  func (_Contract *ContractCallerSession) GetValidatorPubkey(arg0 *big.Int) ([]byte, error) {
   663  	return _Contract.Contract.GetValidatorPubkey(&_Contract.CallOpts, arg0)
   664  }
   665  
   666  // GetWithdrawalRequest is a free data retrieval call binding the contract method 0x1f270152.
   667  //
   668  // Solidity: function getWithdrawalRequest(address , uint256 , uint256 ) view returns(uint256 epoch, uint256 time, uint256 amount)
   669  func (_Contract *ContractCaller) GetWithdrawalRequest(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int, arg2 *big.Int) (struct {
   670  	Epoch  *big.Int
   671  	Time   *big.Int
   672  	Amount *big.Int
   673  }, error) {
   674  	var out []interface{}
   675  	err := _Contract.contract.Call(opts, &out, "getWithdrawalRequest", arg0, arg1, arg2)
   676  
   677  	outstruct := new(struct {
   678  		Epoch  *big.Int
   679  		Time   *big.Int
   680  		Amount *big.Int
   681  	})
   682  	if err != nil {
   683  		return *outstruct, err
   684  	}
   685  
   686  	outstruct.Epoch = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   687  	outstruct.Time = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   688  	outstruct.Amount = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   689  
   690  	return *outstruct, err
   691  
   692  }
   693  
   694  // GetWithdrawalRequest is a free data retrieval call binding the contract method 0x1f270152.
   695  //
   696  // Solidity: function getWithdrawalRequest(address , uint256 , uint256 ) view returns(uint256 epoch, uint256 time, uint256 amount)
   697  func (_Contract *ContractSession) GetWithdrawalRequest(arg0 common.Address, arg1 *big.Int, arg2 *big.Int) (struct {
   698  	Epoch  *big.Int
   699  	Time   *big.Int
   700  	Amount *big.Int
   701  }, error) {
   702  	return _Contract.Contract.GetWithdrawalRequest(&_Contract.CallOpts, arg0, arg1, arg2)
   703  }
   704  
   705  // GetWithdrawalRequest is a free data retrieval call binding the contract method 0x1f270152.
   706  //
   707  // Solidity: function getWithdrawalRequest(address , uint256 , uint256 ) view returns(uint256 epoch, uint256 time, uint256 amount)
   708  func (_Contract *ContractCallerSession) GetWithdrawalRequest(arg0 common.Address, arg1 *big.Int, arg2 *big.Int) (struct {
   709  	Epoch  *big.Int
   710  	Time   *big.Int
   711  	Amount *big.Int
   712  }, error) {
   713  	return _Contract.Contract.GetWithdrawalRequest(&_Contract.CallOpts, arg0, arg1, arg2)
   714  }
   715  
   716  // IsLockedUp is a free data retrieval call binding the contract method 0xcfdbb7cd.
   717  //
   718  // Solidity: function isLockedUp(address delegator, uint256 toValidatorID) view returns(bool)
   719  func (_Contract *ContractCaller) IsLockedUp(opts *bind.CallOpts, delegator common.Address, toValidatorID *big.Int) (bool, error) {
   720  	var out []interface{}
   721  	err := _Contract.contract.Call(opts, &out, "isLockedUp", delegator, toValidatorID)
   722  
   723  	if err != nil {
   724  		return *new(bool), err
   725  	}
   726  
   727  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   728  
   729  	return out0, err
   730  
   731  }
   732  
   733  // IsLockedUp is a free data retrieval call binding the contract method 0xcfdbb7cd.
   734  //
   735  // Solidity: function isLockedUp(address delegator, uint256 toValidatorID) view returns(bool)
   736  func (_Contract *ContractSession) IsLockedUp(delegator common.Address, toValidatorID *big.Int) (bool, error) {
   737  	return _Contract.Contract.IsLockedUp(&_Contract.CallOpts, delegator, toValidatorID)
   738  }
   739  
   740  // IsLockedUp is a free data retrieval call binding the contract method 0xcfdbb7cd.
   741  //
   742  // Solidity: function isLockedUp(address delegator, uint256 toValidatorID) view returns(bool)
   743  func (_Contract *ContractCallerSession) IsLockedUp(delegator common.Address, toValidatorID *big.Int) (bool, error) {
   744  	return _Contract.Contract.IsLockedUp(&_Contract.CallOpts, delegator, toValidatorID)
   745  }
   746  
   747  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   748  //
   749  // Solidity: function isOwner() view returns(bool)
   750  func (_Contract *ContractCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
   751  	var out []interface{}
   752  	err := _Contract.contract.Call(opts, &out, "isOwner")
   753  
   754  	if err != nil {
   755  		return *new(bool), err
   756  	}
   757  
   758  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   759  
   760  	return out0, err
   761  
   762  }
   763  
   764  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   765  //
   766  // Solidity: function isOwner() view returns(bool)
   767  func (_Contract *ContractSession) IsOwner() (bool, error) {
   768  	return _Contract.Contract.IsOwner(&_Contract.CallOpts)
   769  }
   770  
   771  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   772  //
   773  // Solidity: function isOwner() view returns(bool)
   774  func (_Contract *ContractCallerSession) IsOwner() (bool, error) {
   775  	return _Contract.Contract.IsOwner(&_Contract.CallOpts)
   776  }
   777  
   778  // LastValidatorID is a free data retrieval call binding the contract method 0xc7be95de.
   779  //
   780  // Solidity: function lastValidatorID() view returns(uint256)
   781  func (_Contract *ContractCaller) LastValidatorID(opts *bind.CallOpts) (*big.Int, error) {
   782  	var out []interface{}
   783  	err := _Contract.contract.Call(opts, &out, "lastValidatorID")
   784  
   785  	if err != nil {
   786  		return *new(*big.Int), err
   787  	}
   788  
   789  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   790  
   791  	return out0, err
   792  
   793  }
   794  
   795  // LastValidatorID is a free data retrieval call binding the contract method 0xc7be95de.
   796  //
   797  // Solidity: function lastValidatorID() view returns(uint256)
   798  func (_Contract *ContractSession) LastValidatorID() (*big.Int, error) {
   799  	return _Contract.Contract.LastValidatorID(&_Contract.CallOpts)
   800  }
   801  
   802  // LastValidatorID is a free data retrieval call binding the contract method 0xc7be95de.
   803  //
   804  // Solidity: function lastValidatorID() view returns(uint256)
   805  func (_Contract *ContractCallerSession) LastValidatorID() (*big.Int, error) {
   806  	return _Contract.Contract.LastValidatorID(&_Contract.CallOpts)
   807  }
   808  
   809  // MinGasPrice is a free data retrieval call binding the contract method 0xd96ed505.
   810  //
   811  // Solidity: function minGasPrice() view returns(uint256)
   812  func (_Contract *ContractCaller) MinGasPrice(opts *bind.CallOpts) (*big.Int, error) {
   813  	var out []interface{}
   814  	err := _Contract.contract.Call(opts, &out, "minGasPrice")
   815  
   816  	if err != nil {
   817  		return *new(*big.Int), err
   818  	}
   819  
   820  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   821  
   822  	return out0, err
   823  
   824  }
   825  
   826  // MinGasPrice is a free data retrieval call binding the contract method 0xd96ed505.
   827  //
   828  // Solidity: function minGasPrice() view returns(uint256)
   829  func (_Contract *ContractSession) MinGasPrice() (*big.Int, error) {
   830  	return _Contract.Contract.MinGasPrice(&_Contract.CallOpts)
   831  }
   832  
   833  // MinGasPrice is a free data retrieval call binding the contract method 0xd96ed505.
   834  //
   835  // Solidity: function minGasPrice() view returns(uint256)
   836  func (_Contract *ContractCallerSession) MinGasPrice() (*big.Int, error) {
   837  	return _Contract.Contract.MinGasPrice(&_Contract.CallOpts)
   838  }
   839  
   840  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   841  //
   842  // Solidity: function owner() view returns(address)
   843  func (_Contract *ContractCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
   844  	var out []interface{}
   845  	err := _Contract.contract.Call(opts, &out, "owner")
   846  
   847  	if err != nil {
   848  		return *new(common.Address), err
   849  	}
   850  
   851  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   852  
   853  	return out0, err
   854  
   855  }
   856  
   857  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   858  //
   859  // Solidity: function owner() view returns(address)
   860  func (_Contract *ContractSession) Owner() (common.Address, error) {
   861  	return _Contract.Contract.Owner(&_Contract.CallOpts)
   862  }
   863  
   864  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   865  //
   866  // Solidity: function owner() view returns(address)
   867  func (_Contract *ContractCallerSession) Owner() (common.Address, error) {
   868  	return _Contract.Contract.Owner(&_Contract.CallOpts)
   869  }
   870  
   871  // SlashingRefundRatio is a free data retrieval call binding the contract method 0xc65ee0e1.
   872  //
   873  // Solidity: function slashingRefundRatio(uint256 ) view returns(uint256)
   874  func (_Contract *ContractCaller) SlashingRefundRatio(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
   875  	var out []interface{}
   876  	err := _Contract.contract.Call(opts, &out, "slashingRefundRatio", arg0)
   877  
   878  	if err != nil {
   879  		return *new(*big.Int), err
   880  	}
   881  
   882  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   883  
   884  	return out0, err
   885  
   886  }
   887  
   888  // SlashingRefundRatio is a free data retrieval call binding the contract method 0xc65ee0e1.
   889  //
   890  // Solidity: function slashingRefundRatio(uint256 ) view returns(uint256)
   891  func (_Contract *ContractSession) SlashingRefundRatio(arg0 *big.Int) (*big.Int, error) {
   892  	return _Contract.Contract.SlashingRefundRatio(&_Contract.CallOpts, arg0)
   893  }
   894  
   895  // SlashingRefundRatio is a free data retrieval call binding the contract method 0xc65ee0e1.
   896  //
   897  // Solidity: function slashingRefundRatio(uint256 ) view returns(uint256)
   898  func (_Contract *ContractCallerSession) SlashingRefundRatio(arg0 *big.Int) (*big.Int, error) {
   899  	return _Contract.Contract.SlashingRefundRatio(&_Contract.CallOpts, arg0)
   900  }
   901  
   902  // StakeTokenizerAddress is a free data retrieval call binding the contract method 0x0e559d82.
   903  //
   904  // Solidity: function stakeTokenizerAddress() view returns(address)
   905  func (_Contract *ContractCaller) StakeTokenizerAddress(opts *bind.CallOpts) (common.Address, error) {
   906  	var out []interface{}
   907  	err := _Contract.contract.Call(opts, &out, "stakeTokenizerAddress")
   908  
   909  	if err != nil {
   910  		return *new(common.Address), err
   911  	}
   912  
   913  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   914  
   915  	return out0, err
   916  
   917  }
   918  
   919  // StakeTokenizerAddress is a free data retrieval call binding the contract method 0x0e559d82.
   920  //
   921  // Solidity: function stakeTokenizerAddress() view returns(address)
   922  func (_Contract *ContractSession) StakeTokenizerAddress() (common.Address, error) {
   923  	return _Contract.Contract.StakeTokenizerAddress(&_Contract.CallOpts)
   924  }
   925  
   926  // StakeTokenizerAddress is a free data retrieval call binding the contract method 0x0e559d82.
   927  //
   928  // Solidity: function stakeTokenizerAddress() view returns(address)
   929  func (_Contract *ContractCallerSession) StakeTokenizerAddress() (common.Address, error) {
   930  	return _Contract.Contract.StakeTokenizerAddress(&_Contract.CallOpts)
   931  }
   932  
   933  // StashedRewardsUntilEpoch is a free data retrieval call binding the contract method 0xa86a056f.
   934  //
   935  // Solidity: function stashedRewardsUntilEpoch(address , uint256 ) view returns(uint256)
   936  func (_Contract *ContractCaller) StashedRewardsUntilEpoch(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   937  	var out []interface{}
   938  	err := _Contract.contract.Call(opts, &out, "stashedRewardsUntilEpoch", arg0, arg1)
   939  
   940  	if err != nil {
   941  		return *new(*big.Int), err
   942  	}
   943  
   944  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   945  
   946  	return out0, err
   947  
   948  }
   949  
   950  // StashedRewardsUntilEpoch is a free data retrieval call binding the contract method 0xa86a056f.
   951  //
   952  // Solidity: function stashedRewardsUntilEpoch(address , uint256 ) view returns(uint256)
   953  func (_Contract *ContractSession) StashedRewardsUntilEpoch(arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   954  	return _Contract.Contract.StashedRewardsUntilEpoch(&_Contract.CallOpts, arg0, arg1)
   955  }
   956  
   957  // StashedRewardsUntilEpoch is a free data retrieval call binding the contract method 0xa86a056f.
   958  //
   959  // Solidity: function stashedRewardsUntilEpoch(address , uint256 ) view returns(uint256)
   960  func (_Contract *ContractCallerSession) StashedRewardsUntilEpoch(arg0 common.Address, arg1 *big.Int) (*big.Int, error) {
   961  	return _Contract.Contract.StashedRewardsUntilEpoch(&_Contract.CallOpts, arg0, arg1)
   962  }
   963  
   964  // TotalActiveStake is a free data retrieval call binding the contract method 0x28f73148.
   965  //
   966  // Solidity: function totalActiveStake() view returns(uint256)
   967  func (_Contract *ContractCaller) TotalActiveStake(opts *bind.CallOpts) (*big.Int, error) {
   968  	var out []interface{}
   969  	err := _Contract.contract.Call(opts, &out, "totalActiveStake")
   970  
   971  	if err != nil {
   972  		return *new(*big.Int), err
   973  	}
   974  
   975  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   976  
   977  	return out0, err
   978  
   979  }
   980  
   981  // TotalActiveStake is a free data retrieval call binding the contract method 0x28f73148.
   982  //
   983  // Solidity: function totalActiveStake() view returns(uint256)
   984  func (_Contract *ContractSession) TotalActiveStake() (*big.Int, error) {
   985  	return _Contract.Contract.TotalActiveStake(&_Contract.CallOpts)
   986  }
   987  
   988  // TotalActiveStake is a free data retrieval call binding the contract method 0x28f73148.
   989  //
   990  // Solidity: function totalActiveStake() view returns(uint256)
   991  func (_Contract *ContractCallerSession) TotalActiveStake() (*big.Int, error) {
   992  	return _Contract.Contract.TotalActiveStake(&_Contract.CallOpts)
   993  }
   994  
   995  // TotalSlashedStake is a free data retrieval call binding the contract method 0x5fab23a8.
   996  //
   997  // Solidity: function totalSlashedStake() view returns(uint256)
   998  func (_Contract *ContractCaller) TotalSlashedStake(opts *bind.CallOpts) (*big.Int, error) {
   999  	var out []interface{}
  1000  	err := _Contract.contract.Call(opts, &out, "totalSlashedStake")
  1001  
  1002  	if err != nil {
  1003  		return *new(*big.Int), err
  1004  	}
  1005  
  1006  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1007  
  1008  	return out0, err
  1009  
  1010  }
  1011  
  1012  // TotalSlashedStake is a free data retrieval call binding the contract method 0x5fab23a8.
  1013  //
  1014  // Solidity: function totalSlashedStake() view returns(uint256)
  1015  func (_Contract *ContractSession) TotalSlashedStake() (*big.Int, error) {
  1016  	return _Contract.Contract.TotalSlashedStake(&_Contract.CallOpts)
  1017  }
  1018  
  1019  // TotalSlashedStake is a free data retrieval call binding the contract method 0x5fab23a8.
  1020  //
  1021  // Solidity: function totalSlashedStake() view returns(uint256)
  1022  func (_Contract *ContractCallerSession) TotalSlashedStake() (*big.Int, error) {
  1023  	return _Contract.Contract.TotalSlashedStake(&_Contract.CallOpts)
  1024  }
  1025  
  1026  // TotalStake is a free data retrieval call binding the contract method 0x8b0e9f3f.
  1027  //
  1028  // Solidity: function totalStake() view returns(uint256)
  1029  func (_Contract *ContractCaller) TotalStake(opts *bind.CallOpts) (*big.Int, error) {
  1030  	var out []interface{}
  1031  	err := _Contract.contract.Call(opts, &out, "totalStake")
  1032  
  1033  	if err != nil {
  1034  		return *new(*big.Int), err
  1035  	}
  1036  
  1037  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1038  
  1039  	return out0, err
  1040  
  1041  }
  1042  
  1043  // TotalStake is a free data retrieval call binding the contract method 0x8b0e9f3f.
  1044  //
  1045  // Solidity: function totalStake() view returns(uint256)
  1046  func (_Contract *ContractSession) TotalStake() (*big.Int, error) {
  1047  	return _Contract.Contract.TotalStake(&_Contract.CallOpts)
  1048  }
  1049  
  1050  // TotalStake is a free data retrieval call binding the contract method 0x8b0e9f3f.
  1051  //
  1052  // Solidity: function totalStake() view returns(uint256)
  1053  func (_Contract *ContractCallerSession) TotalStake() (*big.Int, error) {
  1054  	return _Contract.Contract.TotalStake(&_Contract.CallOpts)
  1055  }
  1056  
  1057  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1058  //
  1059  // Solidity: function totalSupply() view returns(uint256)
  1060  func (_Contract *ContractCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  1061  	var out []interface{}
  1062  	err := _Contract.contract.Call(opts, &out, "totalSupply")
  1063  
  1064  	if err != nil {
  1065  		return *new(*big.Int), err
  1066  	}
  1067  
  1068  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1069  
  1070  	return out0, err
  1071  
  1072  }
  1073  
  1074  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1075  //
  1076  // Solidity: function totalSupply() view returns(uint256)
  1077  func (_Contract *ContractSession) TotalSupply() (*big.Int, error) {
  1078  	return _Contract.Contract.TotalSupply(&_Contract.CallOpts)
  1079  }
  1080  
  1081  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1082  //
  1083  // Solidity: function totalSupply() view returns(uint256)
  1084  func (_Contract *ContractCallerSession) TotalSupply() (*big.Int, error) {
  1085  	return _Contract.Contract.TotalSupply(&_Contract.CallOpts)
  1086  }
  1087  
  1088  // TreasuryAddress is a free data retrieval call binding the contract method 0xc5f956af.
  1089  //
  1090  // Solidity: function treasuryAddress() view returns(address)
  1091  func (_Contract *ContractCaller) TreasuryAddress(opts *bind.CallOpts) (common.Address, error) {
  1092  	var out []interface{}
  1093  	err := _Contract.contract.Call(opts, &out, "treasuryAddress")
  1094  
  1095  	if err != nil {
  1096  		return *new(common.Address), err
  1097  	}
  1098  
  1099  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1100  
  1101  	return out0, err
  1102  
  1103  }
  1104  
  1105  // TreasuryAddress is a free data retrieval call binding the contract method 0xc5f956af.
  1106  //
  1107  // Solidity: function treasuryAddress() view returns(address)
  1108  func (_Contract *ContractSession) TreasuryAddress() (common.Address, error) {
  1109  	return _Contract.Contract.TreasuryAddress(&_Contract.CallOpts)
  1110  }
  1111  
  1112  // TreasuryAddress is a free data retrieval call binding the contract method 0xc5f956af.
  1113  //
  1114  // Solidity: function treasuryAddress() view returns(address)
  1115  func (_Contract *ContractCallerSession) TreasuryAddress() (common.Address, error) {
  1116  	return _Contract.Contract.TreasuryAddress(&_Contract.CallOpts)
  1117  }
  1118  
  1119  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  1120  //
  1121  // Solidity: function version() pure returns(bytes3)
  1122  func (_Contract *ContractCaller) Version(opts *bind.CallOpts) ([3]byte, error) {
  1123  	var out []interface{}
  1124  	err := _Contract.contract.Call(opts, &out, "version")
  1125  
  1126  	if err != nil {
  1127  		return *new([3]byte), err
  1128  	}
  1129  
  1130  	out0 := *abi.ConvertType(out[0], new([3]byte)).(*[3]byte)
  1131  
  1132  	return out0, err
  1133  
  1134  }
  1135  
  1136  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  1137  //
  1138  // Solidity: function version() pure returns(bytes3)
  1139  func (_Contract *ContractSession) Version() ([3]byte, error) {
  1140  	return _Contract.Contract.Version(&_Contract.CallOpts)
  1141  }
  1142  
  1143  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  1144  //
  1145  // Solidity: function version() pure returns(bytes3)
  1146  func (_Contract *ContractCallerSession) Version() ([3]byte, error) {
  1147  	return _Contract.Contract.Version(&_Contract.CallOpts)
  1148  }
  1149  
  1150  // VoteBookAddress is a free data retrieval call binding the contract method 0x893675c6.
  1151  //
  1152  // Solidity: function voteBookAddress() view returns(address)
  1153  func (_Contract *ContractCaller) VoteBookAddress(opts *bind.CallOpts) (common.Address, error) {
  1154  	var out []interface{}
  1155  	err := _Contract.contract.Call(opts, &out, "voteBookAddress")
  1156  
  1157  	if err != nil {
  1158  		return *new(common.Address), err
  1159  	}
  1160  
  1161  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1162  
  1163  	return out0, err
  1164  
  1165  }
  1166  
  1167  // VoteBookAddress is a free data retrieval call binding the contract method 0x893675c6.
  1168  //
  1169  // Solidity: function voteBookAddress() view returns(address)
  1170  func (_Contract *ContractSession) VoteBookAddress() (common.Address, error) {
  1171  	return _Contract.Contract.VoteBookAddress(&_Contract.CallOpts)
  1172  }
  1173  
  1174  // VoteBookAddress is a free data retrieval call binding the contract method 0x893675c6.
  1175  //
  1176  // Solidity: function voteBookAddress() view returns(address)
  1177  func (_Contract *ContractCallerSession) VoteBookAddress() (common.Address, error) {
  1178  	return _Contract.Contract.VoteBookAddress(&_Contract.CallOpts)
  1179  }
  1180  
  1181  // SyncValidator is a paid mutator transaction binding the contract method 0xcc8343aa.
  1182  //
  1183  // Solidity: function _syncValidator(uint256 validatorID, bool syncPubkey) returns()
  1184  func (_Contract *ContractTransactor) SyncValidator(opts *bind.TransactOpts, validatorID *big.Int, syncPubkey bool) (*types.Transaction, error) {
  1185  	return _Contract.contract.Transact(opts, "_syncValidator", validatorID, syncPubkey)
  1186  }
  1187  
  1188  // SyncValidator is a paid mutator transaction binding the contract method 0xcc8343aa.
  1189  //
  1190  // Solidity: function _syncValidator(uint256 validatorID, bool syncPubkey) returns()
  1191  func (_Contract *ContractSession) SyncValidator(validatorID *big.Int, syncPubkey bool) (*types.Transaction, error) {
  1192  	return _Contract.Contract.SyncValidator(&_Contract.TransactOpts, validatorID, syncPubkey)
  1193  }
  1194  
  1195  // SyncValidator is a paid mutator transaction binding the contract method 0xcc8343aa.
  1196  //
  1197  // Solidity: function _syncValidator(uint256 validatorID, bool syncPubkey) returns()
  1198  func (_Contract *ContractTransactorSession) SyncValidator(validatorID *big.Int, syncPubkey bool) (*types.Transaction, error) {
  1199  	return _Contract.Contract.SyncValidator(&_Contract.TransactOpts, validatorID, syncPubkey)
  1200  }
  1201  
  1202  // Initialize is a paid mutator transaction binding the contract method 0x10e51e14.
  1203  //
  1204  // Solidity: function initialize(uint256 sealedEpoch, uint256 _totalSupply, address nodeDriver, address lib, address _c, address owner) returns()
  1205  func (_Contract *ContractTransactor) Initialize(opts *bind.TransactOpts, sealedEpoch *big.Int, _totalSupply *big.Int, nodeDriver common.Address, lib common.Address, _c common.Address, owner common.Address) (*types.Transaction, error) {
  1206  	return _Contract.contract.Transact(opts, "initialize", sealedEpoch, _totalSupply, nodeDriver, lib, _c, owner)
  1207  }
  1208  
  1209  // Initialize is a paid mutator transaction binding the contract method 0x10e51e14.
  1210  //
  1211  // Solidity: function initialize(uint256 sealedEpoch, uint256 _totalSupply, address nodeDriver, address lib, address _c, address owner) returns()
  1212  func (_Contract *ContractSession) Initialize(sealedEpoch *big.Int, _totalSupply *big.Int, nodeDriver common.Address, lib common.Address, _c common.Address, owner common.Address) (*types.Transaction, error) {
  1213  	return _Contract.Contract.Initialize(&_Contract.TransactOpts, sealedEpoch, _totalSupply, nodeDriver, lib, _c, owner)
  1214  }
  1215  
  1216  // Initialize is a paid mutator transaction binding the contract method 0x10e51e14.
  1217  //
  1218  // Solidity: function initialize(uint256 sealedEpoch, uint256 _totalSupply, address nodeDriver, address lib, address _c, address owner) returns()
  1219  func (_Contract *ContractTransactorSession) Initialize(sealedEpoch *big.Int, _totalSupply *big.Int, nodeDriver common.Address, lib common.Address, _c common.Address, owner common.Address) (*types.Transaction, error) {
  1220  	return _Contract.Contract.Initialize(&_Contract.TransactOpts, sealedEpoch, _totalSupply, nodeDriver, lib, _c, owner)
  1221  }
  1222  
  1223  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1224  //
  1225  // Solidity: function renounceOwnership() returns()
  1226  func (_Contract *ContractTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  1227  	return _Contract.contract.Transact(opts, "renounceOwnership")
  1228  }
  1229  
  1230  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1231  //
  1232  // Solidity: function renounceOwnership() returns()
  1233  func (_Contract *ContractSession) RenounceOwnership() (*types.Transaction, error) {
  1234  	return _Contract.Contract.RenounceOwnership(&_Contract.TransactOpts)
  1235  }
  1236  
  1237  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1238  //
  1239  // Solidity: function renounceOwnership() returns()
  1240  func (_Contract *ContractTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  1241  	return _Contract.Contract.RenounceOwnership(&_Contract.TransactOpts)
  1242  }
  1243  
  1244  // SealEpoch is a paid mutator transaction binding the contract method 0x592fe0c0.
  1245  //
  1246  // Solidity: function sealEpoch(uint256[] offlineTime, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee, uint256 epochGas) returns()
  1247  func (_Contract *ContractTransactor) SealEpoch(opts *bind.TransactOpts, offlineTime []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int, epochGas *big.Int) (*types.Transaction, error) {
  1248  	return _Contract.contract.Transact(opts, "sealEpoch", offlineTime, offlineBlocks, uptimes, originatedTxsFee, epochGas)
  1249  }
  1250  
  1251  // SealEpoch is a paid mutator transaction binding the contract method 0x592fe0c0.
  1252  //
  1253  // Solidity: function sealEpoch(uint256[] offlineTime, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee, uint256 epochGas) returns()
  1254  func (_Contract *ContractSession) SealEpoch(offlineTime []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int, epochGas *big.Int) (*types.Transaction, error) {
  1255  	return _Contract.Contract.SealEpoch(&_Contract.TransactOpts, offlineTime, offlineBlocks, uptimes, originatedTxsFee, epochGas)
  1256  }
  1257  
  1258  // SealEpoch is a paid mutator transaction binding the contract method 0x592fe0c0.
  1259  //
  1260  // Solidity: function sealEpoch(uint256[] offlineTime, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee, uint256 epochGas) returns()
  1261  func (_Contract *ContractTransactorSession) SealEpoch(offlineTime []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int, epochGas *big.Int) (*types.Transaction, error) {
  1262  	return _Contract.Contract.SealEpoch(&_Contract.TransactOpts, offlineTime, offlineBlocks, uptimes, originatedTxsFee, epochGas)
  1263  }
  1264  
  1265  // SealEpochValidators is a paid mutator transaction binding the contract method 0xe08d7e66.
  1266  //
  1267  // Solidity: function sealEpochValidators(uint256[] nextValidatorIDs) returns()
  1268  func (_Contract *ContractTransactor) SealEpochValidators(opts *bind.TransactOpts, nextValidatorIDs []*big.Int) (*types.Transaction, error) {
  1269  	return _Contract.contract.Transact(opts, "sealEpochValidators", nextValidatorIDs)
  1270  }
  1271  
  1272  // SealEpochValidators is a paid mutator transaction binding the contract method 0xe08d7e66.
  1273  //
  1274  // Solidity: function sealEpochValidators(uint256[] nextValidatorIDs) returns()
  1275  func (_Contract *ContractSession) SealEpochValidators(nextValidatorIDs []*big.Int) (*types.Transaction, error) {
  1276  	return _Contract.Contract.SealEpochValidators(&_Contract.TransactOpts, nextValidatorIDs)
  1277  }
  1278  
  1279  // SealEpochValidators is a paid mutator transaction binding the contract method 0xe08d7e66.
  1280  //
  1281  // Solidity: function sealEpochValidators(uint256[] nextValidatorIDs) returns()
  1282  func (_Contract *ContractTransactorSession) SealEpochValidators(nextValidatorIDs []*big.Int) (*types.Transaction, error) {
  1283  	return _Contract.Contract.SealEpochValidators(&_Contract.TransactOpts, nextValidatorIDs)
  1284  }
  1285  
  1286  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1287  //
  1288  // Solidity: function transferOwnership(address newOwner) returns()
  1289  func (_Contract *ContractTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  1290  	return _Contract.contract.Transact(opts, "transferOwnership", newOwner)
  1291  }
  1292  
  1293  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1294  //
  1295  // Solidity: function transferOwnership(address newOwner) returns()
  1296  func (_Contract *ContractSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1297  	return _Contract.Contract.TransferOwnership(&_Contract.TransactOpts, newOwner)
  1298  }
  1299  
  1300  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1301  //
  1302  // Solidity: function transferOwnership(address newOwner) returns()
  1303  func (_Contract *ContractTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1304  	return _Contract.Contract.TransferOwnership(&_Contract.TransactOpts, newOwner)
  1305  }
  1306  
  1307  // UpdateConstsAddress is a paid mutator transaction binding the contract method 0x860c2750.
  1308  //
  1309  // Solidity: function updateConstsAddress(address v) returns()
  1310  func (_Contract *ContractTransactor) UpdateConstsAddress(opts *bind.TransactOpts, v common.Address) (*types.Transaction, error) {
  1311  	return _Contract.contract.Transact(opts, "updateConstsAddress", v)
  1312  }
  1313  
  1314  // UpdateConstsAddress is a paid mutator transaction binding the contract method 0x860c2750.
  1315  //
  1316  // Solidity: function updateConstsAddress(address v) returns()
  1317  func (_Contract *ContractSession) UpdateConstsAddress(v common.Address) (*types.Transaction, error) {
  1318  	return _Contract.Contract.UpdateConstsAddress(&_Contract.TransactOpts, v)
  1319  }
  1320  
  1321  // UpdateConstsAddress is a paid mutator transaction binding the contract method 0x860c2750.
  1322  //
  1323  // Solidity: function updateConstsAddress(address v) returns()
  1324  func (_Contract *ContractTransactorSession) UpdateConstsAddress(v common.Address) (*types.Transaction, error) {
  1325  	return _Contract.Contract.UpdateConstsAddress(&_Contract.TransactOpts, v)
  1326  }
  1327  
  1328  // UpdateLibAddress is a paid mutator transaction binding the contract method 0xe6f45adf.
  1329  //
  1330  // Solidity: function updateLibAddress(address v) returns()
  1331  func (_Contract *ContractTransactor) UpdateLibAddress(opts *bind.TransactOpts, v common.Address) (*types.Transaction, error) {
  1332  	return _Contract.contract.Transact(opts, "updateLibAddress", v)
  1333  }
  1334  
  1335  // UpdateLibAddress is a paid mutator transaction binding the contract method 0xe6f45adf.
  1336  //
  1337  // Solidity: function updateLibAddress(address v) returns()
  1338  func (_Contract *ContractSession) UpdateLibAddress(v common.Address) (*types.Transaction, error) {
  1339  	return _Contract.Contract.UpdateLibAddress(&_Contract.TransactOpts, v)
  1340  }
  1341  
  1342  // UpdateLibAddress is a paid mutator transaction binding the contract method 0xe6f45adf.
  1343  //
  1344  // Solidity: function updateLibAddress(address v) returns()
  1345  func (_Contract *ContractTransactorSession) UpdateLibAddress(v common.Address) (*types.Transaction, error) {
  1346  	return _Contract.Contract.UpdateLibAddress(&_Contract.TransactOpts, v)
  1347  }
  1348  
  1349  // UpdateStakeTokenizerAddress is a paid mutator transaction binding the contract method 0xa2f6e6bc.
  1350  //
  1351  // Solidity: function updateStakeTokenizerAddress(address addr) returns()
  1352  func (_Contract *ContractTransactor) UpdateStakeTokenizerAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) {
  1353  	return _Contract.contract.Transact(opts, "updateStakeTokenizerAddress", addr)
  1354  }
  1355  
  1356  // UpdateStakeTokenizerAddress is a paid mutator transaction binding the contract method 0xa2f6e6bc.
  1357  //
  1358  // Solidity: function updateStakeTokenizerAddress(address addr) returns()
  1359  func (_Contract *ContractSession) UpdateStakeTokenizerAddress(addr common.Address) (*types.Transaction, error) {
  1360  	return _Contract.Contract.UpdateStakeTokenizerAddress(&_Contract.TransactOpts, addr)
  1361  }
  1362  
  1363  // UpdateStakeTokenizerAddress is a paid mutator transaction binding the contract method 0xa2f6e6bc.
  1364  //
  1365  // Solidity: function updateStakeTokenizerAddress(address addr) returns()
  1366  func (_Contract *ContractTransactorSession) UpdateStakeTokenizerAddress(addr common.Address) (*types.Transaction, error) {
  1367  	return _Contract.Contract.UpdateStakeTokenizerAddress(&_Contract.TransactOpts, addr)
  1368  }
  1369  
  1370  // UpdateTreasuryAddress is a paid mutator transaction binding the contract method 0x841e4561.
  1371  //
  1372  // Solidity: function updateTreasuryAddress(address v) returns()
  1373  func (_Contract *ContractTransactor) UpdateTreasuryAddress(opts *bind.TransactOpts, v common.Address) (*types.Transaction, error) {
  1374  	return _Contract.contract.Transact(opts, "updateTreasuryAddress", v)
  1375  }
  1376  
  1377  // UpdateTreasuryAddress is a paid mutator transaction binding the contract method 0x841e4561.
  1378  //
  1379  // Solidity: function updateTreasuryAddress(address v) returns()
  1380  func (_Contract *ContractSession) UpdateTreasuryAddress(v common.Address) (*types.Transaction, error) {
  1381  	return _Contract.Contract.UpdateTreasuryAddress(&_Contract.TransactOpts, v)
  1382  }
  1383  
  1384  // UpdateTreasuryAddress is a paid mutator transaction binding the contract method 0x841e4561.
  1385  //
  1386  // Solidity: function updateTreasuryAddress(address v) returns()
  1387  func (_Contract *ContractTransactorSession) UpdateTreasuryAddress(v common.Address) (*types.Transaction, error) {
  1388  	return _Contract.Contract.UpdateTreasuryAddress(&_Contract.TransactOpts, v)
  1389  }
  1390  
  1391  // UpdateVoteBookAddress is a paid mutator transaction binding the contract method 0x550359a0.
  1392  //
  1393  // Solidity: function updateVoteBookAddress(address v) returns()
  1394  func (_Contract *ContractTransactor) UpdateVoteBookAddress(opts *bind.TransactOpts, v common.Address) (*types.Transaction, error) {
  1395  	return _Contract.contract.Transact(opts, "updateVoteBookAddress", v)
  1396  }
  1397  
  1398  // UpdateVoteBookAddress is a paid mutator transaction binding the contract method 0x550359a0.
  1399  //
  1400  // Solidity: function updateVoteBookAddress(address v) returns()
  1401  func (_Contract *ContractSession) UpdateVoteBookAddress(v common.Address) (*types.Transaction, error) {
  1402  	return _Contract.Contract.UpdateVoteBookAddress(&_Contract.TransactOpts, v)
  1403  }
  1404  
  1405  // UpdateVoteBookAddress is a paid mutator transaction binding the contract method 0x550359a0.
  1406  //
  1407  // Solidity: function updateVoteBookAddress(address v) returns()
  1408  func (_Contract *ContractTransactorSession) UpdateVoteBookAddress(v common.Address) (*types.Transaction, error) {
  1409  	return _Contract.Contract.UpdateVoteBookAddress(&_Contract.TransactOpts, v)
  1410  }
  1411  
  1412  // Fallback is a paid mutator transaction binding the contract fallback function.
  1413  //
  1414  // Solidity: fallback() payable returns()
  1415  func (_Contract *ContractTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) {
  1416  	return _Contract.contract.RawTransact(opts, calldata)
  1417  }
  1418  
  1419  // Fallback is a paid mutator transaction binding the contract fallback function.
  1420  //
  1421  // Solidity: fallback() payable returns()
  1422  func (_Contract *ContractSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1423  	return _Contract.Contract.Fallback(&_Contract.TransactOpts, calldata)
  1424  }
  1425  
  1426  // Fallback is a paid mutator transaction binding the contract fallback function.
  1427  //
  1428  // Solidity: fallback() payable returns()
  1429  func (_Contract *ContractTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1430  	return _Contract.Contract.Fallback(&_Contract.TransactOpts, calldata)
  1431  }
  1432  
  1433  // ContractChangedValidatorStatusIterator is returned from FilterChangedValidatorStatus and is used to iterate over the raw logs and unpacked data for ChangedValidatorStatus events raised by the Contract contract.
  1434  type ContractChangedValidatorStatusIterator struct {
  1435  	Event *ContractChangedValidatorStatus // Event containing the contract specifics and raw log
  1436  
  1437  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1438  	event    string              // Event name to use for unpacking event data
  1439  
  1440  	logs chan types.Log        // Log channel receiving the found contract events
  1441  	sub  u2u.Subscription // Subscription for errors, completion and termination
  1442  	done bool                  // Whether the subscription completed delivering logs
  1443  	fail error                 // Occurred error to stop iteration
  1444  }
  1445  
  1446  // Next advances the iterator to the subsequent event, returning whether there
  1447  // are any more events found. In case of a retrieval or parsing error, false is
  1448  // returned and Error() can be queried for the exact failure.
  1449  func (it *ContractChangedValidatorStatusIterator) Next() bool {
  1450  	// If the iterator failed, stop iterating
  1451  	if it.fail != nil {
  1452  		return false
  1453  	}
  1454  	// If the iterator completed, deliver directly whatever's available
  1455  	if it.done {
  1456  		select {
  1457  		case log := <-it.logs:
  1458  			it.Event = new(ContractChangedValidatorStatus)
  1459  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1460  				it.fail = err
  1461  				return false
  1462  			}
  1463  			it.Event.Raw = log
  1464  			return true
  1465  
  1466  		default:
  1467  			return false
  1468  		}
  1469  	}
  1470  	// Iterator still in progress, wait for either a data or an error event
  1471  	select {
  1472  	case log := <-it.logs:
  1473  		it.Event = new(ContractChangedValidatorStatus)
  1474  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1475  			it.fail = err
  1476  			return false
  1477  		}
  1478  		it.Event.Raw = log
  1479  		return true
  1480  
  1481  	case err := <-it.sub.Err():
  1482  		it.done = true
  1483  		it.fail = err
  1484  		return it.Next()
  1485  	}
  1486  }
  1487  
  1488  // Error returns any retrieval or parsing error occurred during filtering.
  1489  func (it *ContractChangedValidatorStatusIterator) Error() error {
  1490  	return it.fail
  1491  }
  1492  
  1493  // Close terminates the iteration process, releasing any pending underlying
  1494  // resources.
  1495  func (it *ContractChangedValidatorStatusIterator) Close() error {
  1496  	it.sub.Unsubscribe()
  1497  	return nil
  1498  }
  1499  
  1500  // ContractChangedValidatorStatus represents a ChangedValidatorStatus event raised by the Contract contract.
  1501  type ContractChangedValidatorStatus struct {
  1502  	ValidatorID *big.Int
  1503  	Status      *big.Int
  1504  	Raw         types.Log // Blockchain specific contextual infos
  1505  }
  1506  
  1507  // FilterChangedValidatorStatus is a free log retrieval operation binding the contract event 0xcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e.
  1508  //
  1509  // Solidity: event ChangedValidatorStatus(uint256 indexed validatorID, uint256 status)
  1510  func (_Contract *ContractFilterer) FilterChangedValidatorStatus(opts *bind.FilterOpts, validatorID []*big.Int) (*ContractChangedValidatorStatusIterator, error) {
  1511  
  1512  	var validatorIDRule []interface{}
  1513  	for _, validatorIDItem := range validatorID {
  1514  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  1515  	}
  1516  
  1517  	logs, sub, err := _Contract.contract.FilterLogs(opts, "ChangedValidatorStatus", validatorIDRule)
  1518  	if err != nil {
  1519  		return nil, err
  1520  	}
  1521  	return &ContractChangedValidatorStatusIterator{contract: _Contract.contract, event: "ChangedValidatorStatus", logs: logs, sub: sub}, nil
  1522  }
  1523  
  1524  // WatchChangedValidatorStatus is a free log subscription operation binding the contract event 0xcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e.
  1525  //
  1526  // Solidity: event ChangedValidatorStatus(uint256 indexed validatorID, uint256 status)
  1527  func (_Contract *ContractFilterer) WatchChangedValidatorStatus(opts *bind.WatchOpts, sink chan<- *ContractChangedValidatorStatus, validatorID []*big.Int) (event.Subscription, error) {
  1528  
  1529  	var validatorIDRule []interface{}
  1530  	for _, validatorIDItem := range validatorID {
  1531  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  1532  	}
  1533  
  1534  	logs, sub, err := _Contract.contract.WatchLogs(opts, "ChangedValidatorStatus", validatorIDRule)
  1535  	if err != nil {
  1536  		return nil, err
  1537  	}
  1538  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1539  		defer sub.Unsubscribe()
  1540  		for {
  1541  			select {
  1542  			case log := <-logs:
  1543  				// New log arrived, parse the event and forward to the user
  1544  				event := new(ContractChangedValidatorStatus)
  1545  				if err := _Contract.contract.UnpackLog(event, "ChangedValidatorStatus", log); err != nil {
  1546  					return err
  1547  				}
  1548  				event.Raw = log
  1549  
  1550  				select {
  1551  				case sink <- event:
  1552  				case err := <-sub.Err():
  1553  					return err
  1554  				case <-quit:
  1555  					return nil
  1556  				}
  1557  			case err := <-sub.Err():
  1558  				return err
  1559  			case <-quit:
  1560  				return nil
  1561  			}
  1562  		}
  1563  	}), nil
  1564  }
  1565  
  1566  // ParseChangedValidatorStatus is a log parse operation binding the contract event 0xcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e.
  1567  //
  1568  // Solidity: event ChangedValidatorStatus(uint256 indexed validatorID, uint256 status)
  1569  func (_Contract *ContractFilterer) ParseChangedValidatorStatus(log types.Log) (*ContractChangedValidatorStatus, error) {
  1570  	event := new(ContractChangedValidatorStatus)
  1571  	if err := _Contract.contract.UnpackLog(event, "ChangedValidatorStatus", log); err != nil {
  1572  		return nil, err
  1573  	}
  1574  	event.Raw = log
  1575  	return event, nil
  1576  }
  1577  
  1578  // ContractDeactivatedValidatorIterator is returned from FilterDeactivatedValidator and is used to iterate over the raw logs and unpacked data for DeactivatedValidator events raised by the Contract contract.
  1579  type ContractDeactivatedValidatorIterator struct {
  1580  	Event *ContractDeactivatedValidator // Event containing the contract specifics and raw log
  1581  
  1582  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1583  	event    string              // Event name to use for unpacking event data
  1584  
  1585  	logs chan types.Log        // Log channel receiving the found contract events
  1586  	sub  u2u.Subscription // Subscription for errors, completion and termination
  1587  	done bool                  // Whether the subscription completed delivering logs
  1588  	fail error                 // Occurred error to stop iteration
  1589  }
  1590  
  1591  // Next advances the iterator to the subsequent event, returning whether there
  1592  // are any more events found. In case of a retrieval or parsing error, false is
  1593  // returned and Error() can be queried for the exact failure.
  1594  func (it *ContractDeactivatedValidatorIterator) Next() bool {
  1595  	// If the iterator failed, stop iterating
  1596  	if it.fail != nil {
  1597  		return false
  1598  	}
  1599  	// If the iterator completed, deliver directly whatever's available
  1600  	if it.done {
  1601  		select {
  1602  		case log := <-it.logs:
  1603  			it.Event = new(ContractDeactivatedValidator)
  1604  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1605  				it.fail = err
  1606  				return false
  1607  			}
  1608  			it.Event.Raw = log
  1609  			return true
  1610  
  1611  		default:
  1612  			return false
  1613  		}
  1614  	}
  1615  	// Iterator still in progress, wait for either a data or an error event
  1616  	select {
  1617  	case log := <-it.logs:
  1618  		it.Event = new(ContractDeactivatedValidator)
  1619  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1620  			it.fail = err
  1621  			return false
  1622  		}
  1623  		it.Event.Raw = log
  1624  		return true
  1625  
  1626  	case err := <-it.sub.Err():
  1627  		it.done = true
  1628  		it.fail = err
  1629  		return it.Next()
  1630  	}
  1631  }
  1632  
  1633  // Error returns any retrieval or parsing error occurred during filtering.
  1634  func (it *ContractDeactivatedValidatorIterator) Error() error {
  1635  	return it.fail
  1636  }
  1637  
  1638  // Close terminates the iteration process, releasing any pending underlying
  1639  // resources.
  1640  func (it *ContractDeactivatedValidatorIterator) Close() error {
  1641  	it.sub.Unsubscribe()
  1642  	return nil
  1643  }
  1644  
  1645  // ContractDeactivatedValidator represents a DeactivatedValidator event raised by the Contract contract.
  1646  type ContractDeactivatedValidator struct {
  1647  	ValidatorID      *big.Int
  1648  	DeactivatedEpoch *big.Int
  1649  	DeactivatedTime  *big.Int
  1650  	Raw              types.Log // Blockchain specific contextual infos
  1651  }
  1652  
  1653  // FilterDeactivatedValidator is a free log retrieval operation binding the contract event 0xac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e47.
  1654  //
  1655  // Solidity: event DeactivatedValidator(uint256 indexed validatorID, uint256 deactivatedEpoch, uint256 deactivatedTime)
  1656  func (_Contract *ContractFilterer) FilterDeactivatedValidator(opts *bind.FilterOpts, validatorID []*big.Int) (*ContractDeactivatedValidatorIterator, error) {
  1657  
  1658  	var validatorIDRule []interface{}
  1659  	for _, validatorIDItem := range validatorID {
  1660  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  1661  	}
  1662  
  1663  	logs, sub, err := _Contract.contract.FilterLogs(opts, "DeactivatedValidator", validatorIDRule)
  1664  	if err != nil {
  1665  		return nil, err
  1666  	}
  1667  	return &ContractDeactivatedValidatorIterator{contract: _Contract.contract, event: "DeactivatedValidator", logs: logs, sub: sub}, nil
  1668  }
  1669  
  1670  // WatchDeactivatedValidator is a free log subscription operation binding the contract event 0xac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e47.
  1671  //
  1672  // Solidity: event DeactivatedValidator(uint256 indexed validatorID, uint256 deactivatedEpoch, uint256 deactivatedTime)
  1673  func (_Contract *ContractFilterer) WatchDeactivatedValidator(opts *bind.WatchOpts, sink chan<- *ContractDeactivatedValidator, validatorID []*big.Int) (event.Subscription, error) {
  1674  
  1675  	var validatorIDRule []interface{}
  1676  	for _, validatorIDItem := range validatorID {
  1677  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  1678  	}
  1679  
  1680  	logs, sub, err := _Contract.contract.WatchLogs(opts, "DeactivatedValidator", validatorIDRule)
  1681  	if err != nil {
  1682  		return nil, err
  1683  	}
  1684  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1685  		defer sub.Unsubscribe()
  1686  		for {
  1687  			select {
  1688  			case log := <-logs:
  1689  				// New log arrived, parse the event and forward to the user
  1690  				event := new(ContractDeactivatedValidator)
  1691  				if err := _Contract.contract.UnpackLog(event, "DeactivatedValidator", log); err != nil {
  1692  					return err
  1693  				}
  1694  				event.Raw = log
  1695  
  1696  				select {
  1697  				case sink <- event:
  1698  				case err := <-sub.Err():
  1699  					return err
  1700  				case <-quit:
  1701  					return nil
  1702  				}
  1703  			case err := <-sub.Err():
  1704  				return err
  1705  			case <-quit:
  1706  				return nil
  1707  			}
  1708  		}
  1709  	}), nil
  1710  }
  1711  
  1712  // ParseDeactivatedValidator is a log parse operation binding the contract event 0xac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e47.
  1713  //
  1714  // Solidity: event DeactivatedValidator(uint256 indexed validatorID, uint256 deactivatedEpoch, uint256 deactivatedTime)
  1715  func (_Contract *ContractFilterer) ParseDeactivatedValidator(log types.Log) (*ContractDeactivatedValidator, error) {
  1716  	event := new(ContractDeactivatedValidator)
  1717  	if err := _Contract.contract.UnpackLog(event, "DeactivatedValidator", log); err != nil {
  1718  		return nil, err
  1719  	}
  1720  	event.Raw = log
  1721  	return event, nil
  1722  }
  1723  
  1724  // ContractOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Contract contract.
  1725  type ContractOwnershipTransferredIterator struct {
  1726  	Event *ContractOwnershipTransferred // Event containing the contract specifics and raw log
  1727  
  1728  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1729  	event    string              // Event name to use for unpacking event data
  1730  
  1731  	logs chan types.Log        // Log channel receiving the found contract events
  1732  	sub  u2u.Subscription // Subscription for errors, completion and termination
  1733  	done bool                  // Whether the subscription completed delivering logs
  1734  	fail error                 // Occurred error to stop iteration
  1735  }
  1736  
  1737  // Next advances the iterator to the subsequent event, returning whether there
  1738  // are any more events found. In case of a retrieval or parsing error, false is
  1739  // returned and Error() can be queried for the exact failure.
  1740  func (it *ContractOwnershipTransferredIterator) Next() bool {
  1741  	// If the iterator failed, stop iterating
  1742  	if it.fail != nil {
  1743  		return false
  1744  	}
  1745  	// If the iterator completed, deliver directly whatever's available
  1746  	if it.done {
  1747  		select {
  1748  		case log := <-it.logs:
  1749  			it.Event = new(ContractOwnershipTransferred)
  1750  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1751  				it.fail = err
  1752  				return false
  1753  			}
  1754  			it.Event.Raw = log
  1755  			return true
  1756  
  1757  		default:
  1758  			return false
  1759  		}
  1760  	}
  1761  	// Iterator still in progress, wait for either a data or an error event
  1762  	select {
  1763  	case log := <-it.logs:
  1764  		it.Event = new(ContractOwnershipTransferred)
  1765  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1766  			it.fail = err
  1767  			return false
  1768  		}
  1769  		it.Event.Raw = log
  1770  		return true
  1771  
  1772  	case err := <-it.sub.Err():
  1773  		it.done = true
  1774  		it.fail = err
  1775  		return it.Next()
  1776  	}
  1777  }
  1778  
  1779  // Error returns any retrieval or parsing error occurred during filtering.
  1780  func (it *ContractOwnershipTransferredIterator) Error() error {
  1781  	return it.fail
  1782  }
  1783  
  1784  // Close terminates the iteration process, releasing any pending underlying
  1785  // resources.
  1786  func (it *ContractOwnershipTransferredIterator) Close() error {
  1787  	it.sub.Unsubscribe()
  1788  	return nil
  1789  }
  1790  
  1791  // ContractOwnershipTransferred represents a OwnershipTransferred event raised by the Contract contract.
  1792  type ContractOwnershipTransferred struct {
  1793  	PreviousOwner common.Address
  1794  	NewOwner      common.Address
  1795  	Raw           types.Log // Blockchain specific contextual infos
  1796  }
  1797  
  1798  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1799  //
  1800  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1801  func (_Contract *ContractFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ContractOwnershipTransferredIterator, error) {
  1802  
  1803  	var previousOwnerRule []interface{}
  1804  	for _, previousOwnerItem := range previousOwner {
  1805  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  1806  	}
  1807  	var newOwnerRule []interface{}
  1808  	for _, newOwnerItem := range newOwner {
  1809  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  1810  	}
  1811  
  1812  	logs, sub, err := _Contract.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  1813  	if err != nil {
  1814  		return nil, err
  1815  	}
  1816  	return &ContractOwnershipTransferredIterator{contract: _Contract.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  1817  }
  1818  
  1819  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1820  //
  1821  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1822  func (_Contract *ContractFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ContractOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  1823  
  1824  	var previousOwnerRule []interface{}
  1825  	for _, previousOwnerItem := range previousOwner {
  1826  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  1827  	}
  1828  	var newOwnerRule []interface{}
  1829  	for _, newOwnerItem := range newOwner {
  1830  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  1831  	}
  1832  
  1833  	logs, sub, err := _Contract.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  1834  	if err != nil {
  1835  		return nil, err
  1836  	}
  1837  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1838  		defer sub.Unsubscribe()
  1839  		for {
  1840  			select {
  1841  			case log := <-logs:
  1842  				// New log arrived, parse the event and forward to the user
  1843  				event := new(ContractOwnershipTransferred)
  1844  				if err := _Contract.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  1845  					return err
  1846  				}
  1847  				event.Raw = log
  1848  
  1849  				select {
  1850  				case sink <- event:
  1851  				case err := <-sub.Err():
  1852  					return err
  1853  				case <-quit:
  1854  					return nil
  1855  				}
  1856  			case err := <-sub.Err():
  1857  				return err
  1858  			case <-quit:
  1859  				return nil
  1860  			}
  1861  		}
  1862  	}), nil
  1863  }
  1864  
  1865  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1866  //
  1867  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1868  func (_Contract *ContractFilterer) ParseOwnershipTransferred(log types.Log) (*ContractOwnershipTransferred, error) {
  1869  	event := new(ContractOwnershipTransferred)
  1870  	if err := _Contract.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  1871  		return nil, err
  1872  	}
  1873  	event.Raw = log
  1874  	return event, nil
  1875  }
  1876  
  1877  // ContractUpdatedBaseRewardPerSecIterator is returned from FilterUpdatedBaseRewardPerSec and is used to iterate over the raw logs and unpacked data for UpdatedBaseRewardPerSec events raised by the Contract contract.
  1878  type ContractUpdatedBaseRewardPerSecIterator struct {
  1879  	Event *ContractUpdatedBaseRewardPerSec // Event containing the contract specifics and raw log
  1880  
  1881  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1882  	event    string              // Event name to use for unpacking event data
  1883  
  1884  	logs chan types.Log        // Log channel receiving the found contract events
  1885  	sub  u2u.Subscription // Subscription for errors, completion and termination
  1886  	done bool                  // Whether the subscription completed delivering logs
  1887  	fail error                 // Occurred error to stop iteration
  1888  }
  1889  
  1890  // Next advances the iterator to the subsequent event, returning whether there
  1891  // are any more events found. In case of a retrieval or parsing error, false is
  1892  // returned and Error() can be queried for the exact failure.
  1893  func (it *ContractUpdatedBaseRewardPerSecIterator) Next() bool {
  1894  	// If the iterator failed, stop iterating
  1895  	if it.fail != nil {
  1896  		return false
  1897  	}
  1898  	// If the iterator completed, deliver directly whatever's available
  1899  	if it.done {
  1900  		select {
  1901  		case log := <-it.logs:
  1902  			it.Event = new(ContractUpdatedBaseRewardPerSec)
  1903  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1904  				it.fail = err
  1905  				return false
  1906  			}
  1907  			it.Event.Raw = log
  1908  			return true
  1909  
  1910  		default:
  1911  			return false
  1912  		}
  1913  	}
  1914  	// Iterator still in progress, wait for either a data or an error event
  1915  	select {
  1916  	case log := <-it.logs:
  1917  		it.Event = new(ContractUpdatedBaseRewardPerSec)
  1918  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1919  			it.fail = err
  1920  			return false
  1921  		}
  1922  		it.Event.Raw = log
  1923  		return true
  1924  
  1925  	case err := <-it.sub.Err():
  1926  		it.done = true
  1927  		it.fail = err
  1928  		return it.Next()
  1929  	}
  1930  }
  1931  
  1932  // Error returns any retrieval or parsing error occurred during filtering.
  1933  func (it *ContractUpdatedBaseRewardPerSecIterator) Error() error {
  1934  	return it.fail
  1935  }
  1936  
  1937  // Close terminates the iteration process, releasing any pending underlying
  1938  // resources.
  1939  func (it *ContractUpdatedBaseRewardPerSecIterator) Close() error {
  1940  	it.sub.Unsubscribe()
  1941  	return nil
  1942  }
  1943  
  1944  // ContractUpdatedBaseRewardPerSec represents a UpdatedBaseRewardPerSec event raised by the Contract contract.
  1945  type ContractUpdatedBaseRewardPerSec struct {
  1946  	Value *big.Int
  1947  	Raw   types.Log // Blockchain specific contextual infos
  1948  }
  1949  
  1950  // FilterUpdatedBaseRewardPerSec is a free log retrieval operation binding the contract event 0x8cd9dae1bbea2bc8a5e80ffce2c224727a25925130a03ae100619a8861ae2396.
  1951  //
  1952  // Solidity: event UpdatedBaseRewardPerSec(uint256 value)
  1953  func (_Contract *ContractFilterer) FilterUpdatedBaseRewardPerSec(opts *bind.FilterOpts) (*ContractUpdatedBaseRewardPerSecIterator, error) {
  1954  
  1955  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UpdatedBaseRewardPerSec")
  1956  	if err != nil {
  1957  		return nil, err
  1958  	}
  1959  	return &ContractUpdatedBaseRewardPerSecIterator{contract: _Contract.contract, event: "UpdatedBaseRewardPerSec", logs: logs, sub: sub}, nil
  1960  }
  1961  
  1962  // WatchUpdatedBaseRewardPerSec is a free log subscription operation binding the contract event 0x8cd9dae1bbea2bc8a5e80ffce2c224727a25925130a03ae100619a8861ae2396.
  1963  //
  1964  // Solidity: event UpdatedBaseRewardPerSec(uint256 value)
  1965  func (_Contract *ContractFilterer) WatchUpdatedBaseRewardPerSec(opts *bind.WatchOpts, sink chan<- *ContractUpdatedBaseRewardPerSec) (event.Subscription, error) {
  1966  
  1967  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UpdatedBaseRewardPerSec")
  1968  	if err != nil {
  1969  		return nil, err
  1970  	}
  1971  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1972  		defer sub.Unsubscribe()
  1973  		for {
  1974  			select {
  1975  			case log := <-logs:
  1976  				// New log arrived, parse the event and forward to the user
  1977  				event := new(ContractUpdatedBaseRewardPerSec)
  1978  				if err := _Contract.contract.UnpackLog(event, "UpdatedBaseRewardPerSec", log); err != nil {
  1979  					return err
  1980  				}
  1981  				event.Raw = log
  1982  
  1983  				select {
  1984  				case sink <- event:
  1985  				case err := <-sub.Err():
  1986  					return err
  1987  				case <-quit:
  1988  					return nil
  1989  				}
  1990  			case err := <-sub.Err():
  1991  				return err
  1992  			case <-quit:
  1993  				return nil
  1994  			}
  1995  		}
  1996  	}), nil
  1997  }
  1998  
  1999  // ParseUpdatedBaseRewardPerSec is a log parse operation binding the contract event 0x8cd9dae1bbea2bc8a5e80ffce2c224727a25925130a03ae100619a8861ae2396.
  2000  //
  2001  // Solidity: event UpdatedBaseRewardPerSec(uint256 value)
  2002  func (_Contract *ContractFilterer) ParseUpdatedBaseRewardPerSec(log types.Log) (*ContractUpdatedBaseRewardPerSec, error) {
  2003  	event := new(ContractUpdatedBaseRewardPerSec)
  2004  	if err := _Contract.contract.UnpackLog(event, "UpdatedBaseRewardPerSec", log); err != nil {
  2005  		return nil, err
  2006  	}
  2007  	event.Raw = log
  2008  	return event, nil
  2009  }
  2010  
  2011  // ContractUpdatedOfflinePenaltyThresholdIterator is returned from FilterUpdatedOfflinePenaltyThreshold and is used to iterate over the raw logs and unpacked data for UpdatedOfflinePenaltyThreshold events raised by the Contract contract.
  2012  type ContractUpdatedOfflinePenaltyThresholdIterator struct {
  2013  	Event *ContractUpdatedOfflinePenaltyThreshold // Event containing the contract specifics and raw log
  2014  
  2015  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2016  	event    string              // Event name to use for unpacking event data
  2017  
  2018  	logs chan types.Log        // Log channel receiving the found contract events
  2019  	sub  u2u.Subscription // Subscription for errors, completion and termination
  2020  	done bool                  // Whether the subscription completed delivering logs
  2021  	fail error                 // Occurred error to stop iteration
  2022  }
  2023  
  2024  // Next advances the iterator to the subsequent event, returning whether there
  2025  // are any more events found. In case of a retrieval or parsing error, false is
  2026  // returned and Error() can be queried for the exact failure.
  2027  func (it *ContractUpdatedOfflinePenaltyThresholdIterator) Next() bool {
  2028  	// If the iterator failed, stop iterating
  2029  	if it.fail != nil {
  2030  		return false
  2031  	}
  2032  	// If the iterator completed, deliver directly whatever's available
  2033  	if it.done {
  2034  		select {
  2035  		case log := <-it.logs:
  2036  			it.Event = new(ContractUpdatedOfflinePenaltyThreshold)
  2037  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2038  				it.fail = err
  2039  				return false
  2040  			}
  2041  			it.Event.Raw = log
  2042  			return true
  2043  
  2044  		default:
  2045  			return false
  2046  		}
  2047  	}
  2048  	// Iterator still in progress, wait for either a data or an error event
  2049  	select {
  2050  	case log := <-it.logs:
  2051  		it.Event = new(ContractUpdatedOfflinePenaltyThreshold)
  2052  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2053  			it.fail = err
  2054  			return false
  2055  		}
  2056  		it.Event.Raw = log
  2057  		return true
  2058  
  2059  	case err := <-it.sub.Err():
  2060  		it.done = true
  2061  		it.fail = err
  2062  		return it.Next()
  2063  	}
  2064  }
  2065  
  2066  // Error returns any retrieval or parsing error occurred during filtering.
  2067  func (it *ContractUpdatedOfflinePenaltyThresholdIterator) Error() error {
  2068  	return it.fail
  2069  }
  2070  
  2071  // Close terminates the iteration process, releasing any pending underlying
  2072  // resources.
  2073  func (it *ContractUpdatedOfflinePenaltyThresholdIterator) Close() error {
  2074  	it.sub.Unsubscribe()
  2075  	return nil
  2076  }
  2077  
  2078  // ContractUpdatedOfflinePenaltyThreshold represents a UpdatedOfflinePenaltyThreshold event raised by the Contract contract.
  2079  type ContractUpdatedOfflinePenaltyThreshold struct {
  2080  	BlocksNum *big.Int
  2081  	Period    *big.Int
  2082  	Raw       types.Log // Blockchain specific contextual infos
  2083  }
  2084  
  2085  // FilterUpdatedOfflinePenaltyThreshold is a free log retrieval operation binding the contract event 0x702756a07c05d0bbfd06fc17b67951a5f4deb7bb6b088407e68a58969daf2a34.
  2086  //
  2087  // Solidity: event UpdatedOfflinePenaltyThreshold(uint256 blocksNum, uint256 period)
  2088  func (_Contract *ContractFilterer) FilterUpdatedOfflinePenaltyThreshold(opts *bind.FilterOpts) (*ContractUpdatedOfflinePenaltyThresholdIterator, error) {
  2089  
  2090  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UpdatedOfflinePenaltyThreshold")
  2091  	if err != nil {
  2092  		return nil, err
  2093  	}
  2094  	return &ContractUpdatedOfflinePenaltyThresholdIterator{contract: _Contract.contract, event: "UpdatedOfflinePenaltyThreshold", logs: logs, sub: sub}, nil
  2095  }
  2096  
  2097  // WatchUpdatedOfflinePenaltyThreshold is a free log subscription operation binding the contract event 0x702756a07c05d0bbfd06fc17b67951a5f4deb7bb6b088407e68a58969daf2a34.
  2098  //
  2099  // Solidity: event UpdatedOfflinePenaltyThreshold(uint256 blocksNum, uint256 period)
  2100  func (_Contract *ContractFilterer) WatchUpdatedOfflinePenaltyThreshold(opts *bind.WatchOpts, sink chan<- *ContractUpdatedOfflinePenaltyThreshold) (event.Subscription, error) {
  2101  
  2102  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UpdatedOfflinePenaltyThreshold")
  2103  	if err != nil {
  2104  		return nil, err
  2105  	}
  2106  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2107  		defer sub.Unsubscribe()
  2108  		for {
  2109  			select {
  2110  			case log := <-logs:
  2111  				// New log arrived, parse the event and forward to the user
  2112  				event := new(ContractUpdatedOfflinePenaltyThreshold)
  2113  				if err := _Contract.contract.UnpackLog(event, "UpdatedOfflinePenaltyThreshold", log); err != nil {
  2114  					return err
  2115  				}
  2116  				event.Raw = log
  2117  
  2118  				select {
  2119  				case sink <- event:
  2120  				case err := <-sub.Err():
  2121  					return err
  2122  				case <-quit:
  2123  					return nil
  2124  				}
  2125  			case err := <-sub.Err():
  2126  				return err
  2127  			case <-quit:
  2128  				return nil
  2129  			}
  2130  		}
  2131  	}), nil
  2132  }
  2133  
  2134  // ParseUpdatedOfflinePenaltyThreshold is a log parse operation binding the contract event 0x702756a07c05d0bbfd06fc17b67951a5f4deb7bb6b088407e68a58969daf2a34.
  2135  //
  2136  // Solidity: event UpdatedOfflinePenaltyThreshold(uint256 blocksNum, uint256 period)
  2137  func (_Contract *ContractFilterer) ParseUpdatedOfflinePenaltyThreshold(log types.Log) (*ContractUpdatedOfflinePenaltyThreshold, error) {
  2138  	event := new(ContractUpdatedOfflinePenaltyThreshold)
  2139  	if err := _Contract.contract.UnpackLog(event, "UpdatedOfflinePenaltyThreshold", log); err != nil {
  2140  		return nil, err
  2141  	}
  2142  	event.Raw = log
  2143  	return event, nil
  2144  }
  2145  
  2146  var ContractBinRuntime = "0x6080604052600436106102855760003560e01c80638b0e9f3f11610153578063c65ee0e1116100cb578063d46fa5181161007f578063e08d7e6611610064578063e08d7e6614610b1f578063e6f45adf14610b9c578063f2fde38b14610bcf57610285565b8063d46fa51814610af5578063d96ed50514610b0a57610285565b8063cc8343aa116100b0578063cc8343aa14610a51578063cfd4766314610a83578063cfdbb7cd14610abc57610285565b8063c65ee0e114610a12578063c7be95de14610a3c57610285565b8063a2f6e6bc11610122578063b5d8962711610107578063b5d8962714610959578063b810e411146109c4578063c5f956af146109fd57610285565b8063a2f6e6bc146108ed578063a86a056f1461092057610285565b80638b0e9f3f1461083b5780638da5cb5b146108505780638f32d59b1461086557806396c7ee461461088e57610285565b8063592fe0c0116102015780637cacb1d6116101b5578063854873e11161019a578063854873e114610754578063860c2750146107f3578063893675c61461082657610285565b80637cacb1d61461070c578063841e45611461072157610285565b8063670322f8116101e6578063670322f8146106a9578063715018a6146106e257806376671808146106f757610285565b8063592fe0c0146105215780635fab23a81461069457610285565b80631f2701521161025857806339b80c001161023d57806339b80c001461044257806354fd4d50146104a4578063550359a0146104ee57610285565b80631f270152146103d057806328f731481461042d57610285565b80630135b1db146102ee5780630e559d821461033357806310e51e141461036457806318160ddd146103bb575b366102d7576040805162461bcd60e51b815260206004820152601560248201527f7472616e7366657273206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b6080546102ec906001600160a01b0316610c02565b005b3480156102fa57600080fd5b506103216004803603602081101561031157600080fd5b50356001600160a01b0316610c2b565b60408051918252519081900360200190f35b34801561033f57600080fd5b50610348610c3d565b604080516001600160a01b039092168252519081900360200190f35b34801561037057600080fd5b506102ec600480360360c081101561038757600080fd5b508035906020810135906001600160a01b0360408201358116916060810135821691608082013581169160a0013516610c4c565b3480156103c757600080fd5b50610321610dd9565b3480156103dc57600080fd5b5061040f600480360360608110156103f357600080fd5b506001600160a01b038135169060208101359060400135610ddf565b60408051938452602084019290925282820152519081900360600190f35b34801561043957600080fd5b50610321610e11565b34801561044e57600080fd5b5061046c6004803603602081101561046557600080fd5b5035610e17565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156104b057600080fd5b506104b9610e59565b604080517fffffff00000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b3480156104fa57600080fd5b506102ec6004803603602081101561051157600080fd5b50356001600160a01b0316610e7e565b34801561052d57600080fd5b506102ec600480360360a081101561054457600080fd5b81019060208101813564010000000081111561055f57600080fd5b82018360208201111561057157600080fd5b8035906020019184602083028401116401000000008311171561059357600080fd5b9193909290916020810190356401000000008111156105b157600080fd5b8201836020820111156105c357600080fd5b803590602001918460208302840111640100000000831117156105e557600080fd5b91939092909160208101903564010000000081111561060357600080fd5b82018360208201111561061557600080fd5b8035906020019184602083028401116401000000008311171561063757600080fd5b91939092909160208101903564010000000081111561065557600080fd5b82018360208201111561066757600080fd5b8035906020019184602083028401116401000000008311171561068957600080fd5b919350915035610f11565b3480156106a057600080fd5b506103216111cc565b3480156106b557600080fd5b50610321600480360360408110156106cc57600080fd5b506001600160a01b0381351690602001356111d2565b3480156106ee57600080fd5b506102ec611216565b34801561070357600080fd5b506103216112d1565b34801561071857600080fd5b506103216112da565b34801561072d57600080fd5b506102ec6004803603602081101561074457600080fd5b50356001600160a01b03166112e0565b34801561076057600080fd5b5061077e6004803603602081101561077757600080fd5b5035611373565b6040805160208082528351818301528351919283929083019185019080838360005b838110156107b85781810151838201526020016107a0565b50505050905090810190601f1680156107e55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107ff57600080fd5b506102ec6004803603602081101561081657600080fd5b50356001600160a01b031661142c565b34801561083257600080fd5b506103486114bf565b34801561084757600080fd5b506103216114ce565b34801561085c57600080fd5b506103486114d4565b34801561087157600080fd5b5061087a6114e3565b604080519115158252519081900360200190f35b34801561089a57600080fd5b506108c7600480360360408110156108b157600080fd5b506001600160a01b0381351690602001356114f4565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156108f957600080fd5b506102ec6004803603602081101561091057600080fd5b50356001600160a01b0316611526565b34801561092c57600080fd5b506103216004803603604081101561094357600080fd5b506001600160a01b0381351690602001356115b9565b34801561096557600080fd5b506109836004803603602081101561097c57600080fd5b50356115d6565b604080519788526020880196909652868601949094526060860192909252608085015260a08401526001600160a01b031660c0830152519081900360e00190f35b3480156109d057600080fd5b5061040f600480360360408110156109e757600080fd5b506001600160a01b03813516906020013561161c565b348015610a0957600080fd5b50610348611648565b348015610a1e57600080fd5b5061032160048036036020811015610a3557600080fd5b5035611657565b348015610a4857600080fd5b50610321611669565b348015610a5d57600080fd5b506102ec60048036036040811015610a7457600080fd5b5080359060200135151561166f565b348015610a8f57600080fd5b5061032160048036036040811015610aa657600080fd5b506001600160a01b03813516906020013561189e565b348015610ac857600080fd5b5061087a60048036036040811015610adf57600080fd5b506001600160a01b0381351690602001356118bb565b348015610b0157600080fd5b50610348611952565b348015610b1657600080fd5b50610321611961565b348015610b2b57600080fd5b506102ec60048036036020811015610b4257600080fd5b810190602081018135640100000000811115610b5d57600080fd5b820183602082011115610b6f57600080fd5b80359060200191846020830284011164010000000083111715610b9157600080fd5b509092509050611967565b348015610ba857600080fd5b506102ec60048036036020811015610bbf57600080fd5b50356001600160a01b0316611aab565b348015610bdb57600080fd5b506102ec60048036036020811015610bf257600080fd5b50356001600160a01b0316611b3e565b3660008037600080366000845af43d6000803e808015610c21573d6000f35b3d6000fd5b505050565b60696020526000908152604090205481565b607b546001600160a01b031681565b600054610100900460ff1680610c655750610c65611ba3565b80610c73575060005460ff16155b610cae5760405162461bcd60e51b815260040180806020018281038252602e81526020018061335a602e913960400191505060405180910390fd5b600054610100900460ff16158015610d1457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610d1d82611ba9565b6067879055606680546001600160a01b038088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556080805487841690831617905560818054928616929091169190911790556076869055610d84611d0b565b607e55610d8f611d14565b6000888152607760205260409020600701558015610dd057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50505050505050565b60765481565b607160209081526000938452604080852082529284528284209052825290208054600182015460029092015490919083565b606d5481565b607760205280600052604060002060009150905080600701549080600801549080600901549080600a01549080600b01549080600c01549080600d0154905087565b7f33303400000000000000000000000000000000000000000000000000000000005b90565b610e866114e3565b610ed7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610f1a33611d18565b610f555760405162461bcd60e51b81526004018080602001828103825260298152602001806133106029913960400191505060405180910390fd5b600060776000610f636112d1565b81526020019081526020016000209050606081600601805480602002602001604051908101604052809291908181526020018280548015610fc357602002820191906000526020600020905b815481526020019060010190808311610faf575b5050505050905061104a82828d8d80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508c8c80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d2f92505050565b6067546000908152607760205260409020600781015460019061106b611d14565b111561108257816007015461107e611d14565b0390505b611104818584868d8d80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508c8c80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611f3692505050565b61110e8186612720565b50506111186112d1565b606755611123611d14565b6007830155608154604080517fd9a7c1f900000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163d9a7c1f991600480820192602092909190829003018186803b15801561118657600080fd5b505afa15801561119a573d6000803e3d6000fd5b505050506040513d60208110156111b057600080fd5b5051600b83015550607654600d90910155505050505050505050565b606e5481565b60006111de83836118bb565b6111ea57506000611210565b506001600160a01b03821660009081526073602090815260408083208484529091529020545b92915050565b61121e6114e3565b61126f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60675460010190565b60675481565b6112e86114e3565b611339576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b607f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606a6020908152600091825260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156114245780601f106113f957610100808354040283529160200191611424565b820191906000526020600020905b81548152906001019060200180831161140757829003601f168201915b505050505081565b6114346114e3565b611485576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6082546001600160a01b031681565b606c5481565b6033546001600160a01b031690565b6033546001600160a01b0316331490565b607360209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b61152e6114e3565b61157f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b607b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b607060209081526000928352604080842090915290825290205481565b606860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391929091906001600160a01b031687565b607460209081526000928352604080842090915290825290208054600182015460029092015490919083565b607f546001600160a01b031681565b607a6020526000908152604090205481565b606b5481565b61167882612899565b6116c9576040805162461bcd60e51b815260206004820152601760248201527f76616c696461746f7220646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b600082815260686020526040902060038101549054156116e7575060005b606654604080517fa4066fbe000000000000000000000000000000000000000000000000000000008152600481018690526024810184905290516001600160a01b039092169163a4066fbe9160448082019260009290919082900301818387803b15801561175457600080fd5b505af1158015611768573d6000803e3d6000fd5b5050505081801561177857508015155b15610c26576066546000848152606a60205260409081902081517f242a6e3f0000000000000000000000000000000000000000000000000000000081526004810187815260248201938452825460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001831615610100020190911604604483018190526001600160a01b039095169463242a6e3f948994939091606490910190849080156118695780601f1061183e57610100808354040283529160200191611869565b820191906000526020600020905b81548152906001019060200180831161184c57829003601f168201915b50509350505050600060405180830381600087803b15801561188a57600080fd5b505af1158015610dd0573d6000803e3d6000fd5b607260209081526000928352604080842090915290825290205481565b6001600160a01b03821660009081526073602090815260408083208484529091528120600201541580159061191257506001600160a01b038316600090815260736020908152604080832085845290915290205415155b801561194b57506001600160a01b0383166000908152607360209081526040808320858452909152902060020154611948611d14565b11155b9392505050565b6081546001600160a01b031690565b607e5481565b61197033611d18565b6119ab5760405162461bcd60e51b81526004018080602001828103825260298152602001806133106029913960400191505060405180910390fd5b6000607760006119b96112d1565b8152602001908152602001600020905060008090505b82811015611a325760008484838181106119e557fe5b60209081029290920135600081815260688452604080822060030154948890529020839055600c860154909350611a2391508263ffffffff6128b016565b600c85015550506001016119cf565b50611a41600682018484613238565b50606654607e54604080517f07aaf3440000000000000000000000000000000000000000000000000000000081526004810192909252516001600160a01b03909216916307aaf3449160248082019260009290919082900301818387803b15801561188a57600080fd5b611ab36114e3565b611b04576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611b466114e3565b611b97576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611ba08161290a565b50565b303b1590565b600054610100900460ff1680611bc25750611bc2611ba3565b80611bd0575060005460ff16155b611c0b5760405162461bcd60e51b815260040180806020018281038252602e81526020018061335a602e913960400191505060405180910390fd5b600054610100900460ff16158015611c7157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015611d0757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b64174876e80090565b4290565b6066546001600160a01b038281169116145b919050565b60005b8351811015611f2f57608160009054906101000a90046001600160a01b03166001600160a01b0316635a68f01a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d6020811015611db357600080fd5b50518251839083908110611dc357fe5b6020026020010151118015611e655750608160009054906101000a90046001600160a01b03166001600160a01b031662cc7f836040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2057600080fd5b505afa158015611e34573d6000803e3d6000fd5b505050506040513d6020811015611e4a57600080fd5b50518351849083908110611e5a57fe5b602002602001015110155b15611ea657611e88848281518110611e7957fe5b602002602001015160086129c3565b611ea6848281518110611e9757fe5b6020026020010151600061166f565b828181518110611eb257fe5b6020026020010151856004016000868481518110611ecc57fe5b6020026020010151815260200190815260200160002081905550818181518110611ef257fe5b6020026020010151856005016000868481518110611f0c57fe5b602090810291909101810151825281019190915260400160002055600101611d32565b5050505050565b611f3e61327f565b6040518060a001604052808551604051908082528060200260200182016040528015611f74578160200160208202803883390190505b508152602001600081526020018551604051908082528060200260200182016040528015611fac578160200160208202803883390190505b508152602001600081526020016000815250905060008090505b84518110156120c7576000866003016000878481518110611fe357fe5b6020026020010151815260200190815260200160002054905060008090508185848151811061200e57fe5b60200260200101511115612035578185848151811061202957fe5b60200260200101510390505b8986848151811061204257fe5b602002602001015182028161205357fe5b048460400151848151811061206457fe5b60200260200101818152505061209e8460400151848151811061208357fe5b602002602001015185606001516128b090919063ffffffff16565b606085015260808401516120b8908263ffffffff6128b016565b60808501525050600101611fc6565b5060005b845181101561219057878482815181106120e157fe5b6020026020010151898684815181106120f657fe5b60200260200101518a60000160008a878151811061211057fe5b6020026020010151815260200190815260200160002054028161212f57fe5b04028161213857fe5b048260000151828151811061214957fe5b6020026020010181815250506121838260000151828151811061216857fe5b602002602001015183602001516128b090919063ffffffff16565b60208301526001016120cb565b5060005b84518110156125cf57600061223d89608160009054906101000a90046001600160a01b03166001600160a01b031663d9a7c1f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156121f157600080fd5b505afa158015612205573d6000803e3d6000fd5b505050506040513d602081101561221b57600080fd5b5051855180518690811061222b57fe5b60200260200101518660200151612aed565b905061227961226c84608001518560400151858151811061225a57fe5b60200260200101518660600151612b3c565b829063ffffffff6128b016565b9050600086838151811061228957fe5b60209081029190910181015160008181526068835260408082206006015460815482517fa778651500000000000000000000000000000000000000000000000000000000815292519496506001600160a01b0391821695939461233f948994929093169263a77865159260048082019391829003018186803b15801561230e57600080fd5b505afa158015612322573d6000803e3d6000fd5b505050506040513d602081101561233857600080fd5b5051612ca5565b6001600160a01b038316600090815260726020908152604080832087845290915290205490915080156124e65760008161237985876111d2565b84028161238257fe5b0490508083036123906132ae565b6001600160a01b03861660009081526073602090815260408083208a84529091529020600301546123c2908490612cc2565b90506123cc6132ae565b6123d7836000612cc2565b6001600160a01b0388166000908152606f602090815260408083208c8452825291829020825160608101845281548152600182015492810192909252600201549181019190915290915061242c908383612e84565b6001600160a01b0388166000818152606f602090815260408083208d84528252808320855181558583015160018083019190915595820151600291820155938352607482528083208d8452825291829020825160608101845281548152948101549185019190915290910154908201526124a7908383612e84565b6001600160a01b03881660009081526074602090815260408083208c845282529182902083518155908301516001820155910151600290910155505050505b600084815260686020526040812060030154838703918115612518578161250b612e9f565b84028161251457fe5b0490505b808e600101600089815260200190815260200160002054018f6001016000898152602001908152602001600020819055508a898151811061255557fe5b60200260200101518f6003016000898152602001908152602001600020819055508b898151811061258257fe5b60200260200101518e600201600089815260200190815260200160002054018f60020160008981526020019081526020016000208190555050505050505050508080600101915050612194565b50608081015160088701819055602082015160098801556060820151600a880155607654111561260d57600886015460768054919091039055612613565b60006076555b607f546001600160a01b031615610dd057600061262e612e9f565b608160009054906101000a90046001600160a01b03166001600160a01b03166394c3e9146040518163ffffffff1660e01b815260040160206040518083038186803b15801561267c57600080fd5b505afa158015612690573d6000803e3d6000fd5b505050506040513d60208110156126a657600080fd5b5051608084015102816126b557fe5b0490506126c181612eab565b607f546040516001600160a01b03909116908290600081818185875af1925050503d806000811461270e576040519150601f19603f3d011682016040523d82523d6000602084013e612713565b606091505b5050505050505050505050565b608154604080517f3a3ef66c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633a3ef66c916004808301926020929190829003018186803b15801561277e57600080fd5b505afa158015612792573d6000803e3d6000fd5b505050506040513d60208110156127a857600080fd5b5051830260010190506000816127bc612e9f565b8402816127c557fe5b0490506000608160009054906101000a90046001600160a01b03166001600160a01b0316632c8c36a56040518163ffffffff1660e01b815260040160206040518083038186803b15801561281857600080fd5b505afa15801561282c573d6000803e3d6000fd5b505050506040513d602081101561284257600080fd5b50519050848101612851612e9f565b8202838702018161285e57fe5b04915061286a82612f49565b91506000612876612e9f565b83607e54028161288257fe5b04905061288e81612fb7565b607e55505050505050565b600090815260686020526040902060050154151590565b60008282018381101561194b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03811661294f5760405162461bcd60e51b81526004018080602001828103825260268152602001806132ea6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000828152606860205260409020541580156129de57508015155b15612a0b57600082815260686020526040902060030154606d54612a079163ffffffff612fed16565b606d555b600082815260686020526040902054811115611d0757600082815260686020526040902081815560020154612ab357612a426112d1565b600083815260686020526040902060020155612a5c611d14565b6000838152606860209081526040918290206001810184905560020154825190815290810192909252805184927fac4801c32a6067ff757446524ee4e7a373797278ac3c883eac5c693b4ad72e4792908290030190a25b60408051828152905183917fcd35267e7654194727477d6c78b541a553483cff7f92a055d17868d3da6e953e919081900360200190a25050565b600082612afc57506000612b34565b6000612b0e868663ffffffff61302f16565b9050612b3083612b24838763ffffffff61302f16565b9063ffffffff61308816565b9150505b949350505050565b600082612b4b5750600061194b565b6000612b6183612b24878763ffffffff61302f16565b9050612c9c612b6e612e9f565b608154604080517f94c3e9140000000000000000000000000000000000000000000000000000000081529051612b24926001600160a01b0316916394c3e914916004808301926020929190829003018186803b158015612bcd57600080fd5b505afa158015612be1573d6000803e3d6000fd5b505050506040513d6020811015612bf757600080fd5b5051608154604080517fc74dd62100000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163c74dd62191600480820192602092909190829003018186803b158015612c5757600080fd5b505afa158015612c6b573d6000803e3d6000fd5b505050506040513d6020811015612c8157600080fd5b5051612c8b612e9f565b03038461302f90919063ffffffff16565b95945050505050565b600061194b612cb2612e9f565b612b24858563ffffffff61302f16565b612cca6132ae565b60405180606001604052806000815260200160008152602001600081525090506000608160009054906101000a90046001600160a01b03166001600160a01b0316635e2308d26040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3a57600080fd5b505afa158015612d4e573d6000803e3d6000fd5b505050506040513d6020811015612d6457600080fd5b505190508215612e5c57600081612d79612e9f565b0390506000612e0b608160009054906101000a90046001600160a01b03166001600160a01b0316630d4955e36040518163ffffffff1660e01b815260040160206040518083038186803b158015612dcf57600080fd5b505afa158015612de3573d6000803e3d6000fd5b505050506040513d6020811015612df957600080fd5b5051612b24848863ffffffff61302f16565b90506000612e2c612e1a612e9f565b612b248987860163ffffffff61302f16565b9050612e49612e39612e9f565b612b24898763ffffffff61302f16565b602086018190529003845250612e7d9050565b612e77612e67612e9f565b612b24868463ffffffff61302f16565b60408301525b5092915050565b612e8c6132ae565b612b34612e9985856130ca565b836130ca565b670de0b6b3a764000090565b606654604080517f66e7ea0f0000000000000000000000000000000000000000000000000000000081523060048201526024810184905290516001600160a01b03909216916366e7ea0f9160448082019260009290919082900301818387803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b5050607654612f43925090508263ffffffff6128b016565b60765550565b60006064612f55612e9f565b60690281612f5f57fe5b04821115612f83576064612f71612e9f565b60690281612f7b57fe5b049050611d2a565b6064612f8d612e9f565b605f0281612f9757fe5b04821015612fb3576064612fa9612e9f565b605f0281612f7b57fe5b5090565b600066038d7ea4c68000821115612fd6575066038d7ea4c68000611d2a565b633b9aca00821015612fb35750633b9aca00611d2a565b600061194b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061313c565b60008261303e57506000611210565b8282028284828161304b57fe5b041461194b5760405162461bcd60e51b81526004018080602001828103825260218152602001806133396021913960400191505060405180910390fd5b600061194b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131d3565b6130d26132ae565b60408051606081019091528251845182916130f3919063ffffffff6128b016565b8152602001613113846020015186602001516128b090919063ffffffff16565b8152602001613133846040015186604001516128b090919063ffffffff16565b90529392505050565b600081848411156131cb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613190578181015183820152602001613178565b50505050905090810190601f1680156131bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836132225760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613190578181015183820152602001613178565b50600083858161322e57fe5b0495945050505050565b828054828255906000526020600020908101928215613273579160200282015b82811115613273578235825591602001919060010190613258565b50612fb39291506132cf565b6040518060a0016040528060608152602001600081526020016060815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b610e7b91905b80821115612fb357600081556001016132d556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737363616c6c6572206973206e6f7420746865204e6f64654472697665724175746820636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a265627a7a723158202e03a7f7bebc4feaccc27e3c21e1033d901c6a29dc0061bd3121a9ffe136abe164736f6c63430005110032"