github.com/XinFinOrg/xdcchain@v1.1.0/contracts/validator/contract/validator.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 contract
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // SafeMathABI is the input ABI used to generate the binding from.
    19  const SafeMathABI = "[]"
    20  
    21  // SafeMathBin is the compiled bytecode used for deploying new contracts.
    22  const SafeMathBin = `0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146060604052600080fd00a165627a7a72305820b9407d48ebc7efee5c9f08b3b3a957df2939281f5913225e8c1291f069b900490029`
    23  
    24  // DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it.
    25  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
    26  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
    27  	if err != nil {
    28  		return common.Address{}, nil, nil, err
    29  	}
    30  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
    31  	if err != nil {
    32  		return common.Address{}, nil, nil, err
    33  	}
    34  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
    35  }
    36  
    37  // SafeMath is an auto generated Go binding around an Ethereum contract.
    38  type SafeMath struct {
    39  	SafeMathCaller     // Read-only binding to the contract
    40  	SafeMathTransactor // Write-only binding to the contract
    41  	SafeMathFilterer   // Log filterer for contract events
    42  }
    43  
    44  // SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract.
    45  type SafeMathCaller struct {
    46  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    47  }
    48  
    49  // SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
    50  type SafeMathTransactor struct {
    51  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    52  }
    53  
    54  // SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    55  type SafeMathFilterer struct {
    56  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    57  }
    58  
    59  // SafeMathSession is an auto generated Go binding around an Ethereum contract,
    60  // with pre-set call and transact options.
    61  type SafeMathSession struct {
    62  	Contract     *SafeMath         // Generic contract binding to set the session for
    63  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    64  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    65  }
    66  
    67  // SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    68  // with pre-set call options.
    69  type SafeMathCallerSession struct {
    70  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
    71  	CallOpts bind.CallOpts   // Call options to use throughout this session
    72  }
    73  
    74  // SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    75  // with pre-set transact options.
    76  type SafeMathTransactorSession struct {
    77  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
    78  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
    79  }
    80  
    81  // SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract.
    82  type SafeMathRaw struct {
    83  	Contract *SafeMath // Generic contract binding to access the raw methods on
    84  }
    85  
    86  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    87  type SafeMathCallerRaw struct {
    88  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
    89  }
    90  
    91  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    92  type SafeMathTransactorRaw struct {
    93  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
    94  }
    95  
    96  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
    97  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
    98  	contract, err := bindSafeMath(address, backend, backend, backend)
    99  	if err != nil {
   100  		return nil, err
   101  	}
   102  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
   103  }
   104  
   105  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
   106  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
   107  	contract, err := bindSafeMath(address, caller, nil, nil)
   108  	if err != nil {
   109  		return nil, err
   110  	}
   111  	return &SafeMathCaller{contract: contract}, nil
   112  }
   113  
   114  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
   115  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
   116  	contract, err := bindSafeMath(address, nil, transactor, nil)
   117  	if err != nil {
   118  		return nil, err
   119  	}
   120  	return &SafeMathTransactor{contract: contract}, nil
   121  }
   122  
   123  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
   124  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
   125  	contract, err := bindSafeMath(address, nil, nil, filterer)
   126  	if err != nil {
   127  		return nil, err
   128  	}
   129  	return &SafeMathFilterer{contract: contract}, nil
   130  }
   131  
   132  // bindSafeMath binds a generic wrapper to an already deployed contract.
   133  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   134  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
   135  	if err != nil {
   136  		return nil, err
   137  	}
   138  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   139  }
   140  
   141  // Call invokes the (constant) contract method with params as input values and
   142  // sets the output to result. The result type might be a single field for simple
   143  // returns, a slice of interfaces for anonymous returns and a struct for named
   144  // returns.
   145  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   146  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
   147  }
   148  
   149  // Transfer initiates a plain transaction to move funds to the contract, calling
   150  // its default method if one is available.
   151  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   152  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
   153  }
   154  
   155  // Transact invokes the (paid) contract method with params as input values.
   156  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   157  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
   158  }
   159  
   160  // Call invokes the (constant) contract method with params as input values and
   161  // sets the output to result. The result type might be a single field for simple
   162  // returns, a slice of interfaces for anonymous returns and a struct for named
   163  // returns.
   164  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   165  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
   166  }
   167  
   168  // Transfer initiates a plain transaction to move funds to the contract, calling
   169  // its default method if one is available.
   170  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   171  	return _SafeMath.Contract.contract.Transfer(opts)
   172  }
   173  
   174  // Transact invokes the (paid) contract method with params as input values.
   175  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   176  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
   177  }
   178  
   179  // XDCValidatorABI is the input ABI used to generate the binding from.
   180  const XDCValidatorABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"propose\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"owners\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"},{\"name\":\"_cap\",\"type\":\"uint256\"}],\"name\":\"unvote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCandidates\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ownerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"address\"}],\"name\":\"hasVotedInvalid\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getWithdrawCap\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerToCandidate\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"getVoters\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getWithdrawBlockNumbers\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"},{\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"getVoterCap\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getLatestKYC\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"candidates\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"getCandidateCap\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_invalidCandidate\",\"type\":\"address\"}],\"name\":\"invalidPercent\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"KYCString\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"invalidKYCCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"candidateCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"voterWithdrawDelay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"resign\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"getCandidateOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getHashCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxValidatorNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"candidateWithdrawDelay\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"isCandidate\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minCandidateCap\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOwnerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_invalidCandidate\",\"type\":\"address\"}],\"name\":\"voteInvalidKYC\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"kychash\",\"type\":\"string\"}],\"name\":\"uploadKYC\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minVoterCap\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_candidates\",\"type\":\"address[]\"},{\"name\":\"_caps\",\"type\":\"uint256[]\"},{\"name\":\"_firstOwner\",\"type\":\"address\"},{\"name\":\"_minCandidateCap\",\"type\":\"uint256\"},{\"name\":\"_minVoterCap\",\"type\":\"uint256\"},{\"name\":\"_maxValidatorNumber\",\"type\":\"uint256\"},{\"name\":\"_candidateWithdrawDelay\",\"type\":\"uint256\"},{\"name\":\"_voterWithdrawDelay\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_voter\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_candidate\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_cap\",\"type\":\"uint256\"}],\"name\":\"Vote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_voter\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_candidate\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_cap\",\"type\":\"uint256\"}],\"name\":\"Unvote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_candidate\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_cap\",\"type\":\"uint256\"}],\"name\":\"Propose\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"Resign\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_cap\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"kycHash\",\"type\":\"string\"}],\"name\":\"UploadedKYC\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_masternodeOwner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_masternodes\",\"type\":\"address[]\"}],\"name\":\"InvalidatedNode\",\"type\":\"event\"}]"
   181  
   182  // XDCValidatorBin is the compiled bytecode used for deploying new contracts.
   183  const XDCValidatorBin = `606060405260006009556000600a5534156200001a57600080fd5b60405162003dcc38038062003dcc83398101604052808051820191906020018051820191906020018051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050600085600b8190555084600c8190555083600d8190555082600e8190555081600f81905550885160098190555060078054806001018281620000bd9190620004f1565b9160005260206000209001600089909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600a60008154809291906001019190505550600090505b8851811015620004e25760088054806001018281620001439190620004f1565b916000526020600020900160008b848151811015156200015f57fe5b90602001906020020151909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506060604051908101604052808873ffffffffffffffffffffffffffffffffffffffff1681526020016001151581526020018983815181101515620001ea57fe5b90602001906020020151815250600160008b848151811015156200020a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160010155905050600260008a83815181101515620002d557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060010182816200032d9190620004f1565b9160005260206000209001600089909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281620003cf9190620004f1565b916000526020600020900160008b84815181101515620003eb57fe5b90602001906020020151909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600b54600160008b848151811015156200044c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808060010191505062000123565b50505050505050505062000548565b8154818355818115116200051b578183600052602060002091820191016200051a919062000520565b5b505050565b6200054591905b808211156200054157600081600090555060010162000527565b5090565b90565b61387480620005586000396000f300606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063012679511461019b578063025e7c27146101c957806302aa9be21461022c57806306a49fce1461026e5780630db02622146102d85780630e3e4fb81461030157806315febd68146103715780632a3640b1146103a85780632d15cc041461042a5780632f9c4bba146104b8578063302b687214610522578063326586521461058e5780633477ee2e14610640578063441a3e70146106a357806358e7525f146106cf5780635b860d271461071c5780635b9cd8cc146107695780636dd7d8ea1461082457806372e44a3814610852578063a9a981a31461089f578063a9ff959e146108c8578063ae6e43f5146108f1578063b642facd1461092a578063c45607df146109a3578063d09f1ab4146109f0578063d161c76714610a19578063d51b9e9314610a42578063d55b7dff14610a93578063ef18374a14610abc578063f2ee3c7d14610ae5578063f5c9512514610b1e578063f8ac9dd514610b4c575b600080fd5b6101c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b75565b005b34156101d457600080fd5b6101ea60048080359060200190919050506111fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561023757600080fd5b61026c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061123b565b005b341561027957600080fd5b610281611796565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102c45780820151818401526020810190506102a9565b505050509050019250505060405180910390f35b34156102e357600080fd5b6102eb61182a565b6040518082815260200191505060405180910390f35b341561030c57600080fd5b610357600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611830565b604051808215151515815260200191505060405180910390f35b341561037c57600080fd5b610392600480803590602001909190505061185f565b6040518082815260200191505060405180910390f35b34156103b357600080fd5b6103e8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043557600080fd5b610461600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611909565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104a4578082015181840152602081019050610489565b505050509050019250505060405180910390f35b34156104c357600080fd5b6104cb6119dc565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561050e5780820151818401526020810190506104f3565b505050509050019250505060405180910390f35b341561052d57600080fd5b610578600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a79565b6040518082815260200191505060405180910390f35b341561059957600080fd5b6105c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b03565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106055780820151818401526020810190506105ea565b50505050905090810190601f1680156106325780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561064b57600080fd5b6106616004808035906020019091905050611da2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106ae57600080fd5b6106cd6004808035906020019091908035906020019091905050611de1565b005b34156106da57600080fd5b610706600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061208d565b6040518082815260200191505060405180910390f35b341561072757600080fd5b610753600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120d9565b6040518082815260200191505060405180910390f35b341561077457600080fd5b6107a9600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506121a1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e95780820151818401526020810190506107ce565b50505050905090810190601f1680156108165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610850600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061226a565b005b341561085d57600080fd5b610889600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612653565b6040518082815260200191505060405180910390f35b34156108aa57600080fd5b6108b261266b565b6040518082815260200191505060405180910390f35b34156108d357600080fd5b6108db612671565b6040518082815260200191505060405180910390f35b34156108fc57600080fd5b610928600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612677565b005b341561093557600080fd5b610961600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c36565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109ae57600080fd5b6109da600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612ca2565b6040518082815260200191505060405180910390f35b34156109fb57600080fd5b610a03612cee565b6040518082815260200191505060405180910390f35b3415610a2457600080fd5b610a2c612cf4565b6040518082815260200191505060405180910390f35b3415610a4d57600080fd5b610a79600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612cfa565b604051808215151515815260200191505060405180910390f35b3415610a9e57600080fd5b610aa6612d53565b6040518082815260200191505060405180910390f35b3415610ac757600080fd5b610acf612d59565b6040518082815260200191505060405180910390f35b3415610af057600080fd5b610b1c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d63565b005b3415610b2957600080fd5b610b4a600480803590602001908201803590602001919091929050506134f1565b005b3415610b5757600080fd5b610b5f6135f0565b6040518082815260200191505060405180910390f35b6000600b543410151515610b8857600080fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050141580610c1c57506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050115b1515610c2757600080fd5b81600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff16151515610c8457600080fd5b610cd934600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546135f690919063ffffffff16565b915060088054806001018281610cef919061362d565b9160005260206000209001600085909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506060604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160011515815260200183815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160010155905050610eb834600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5160016009546135f690919063ffffffff16565b6009819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905014156110185760078054806001018281610fb6919061362d565b9160005260206000209001600033909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600a600081548092919060010191905055505b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281611069919061362d565b9160005260206000209001600085909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281611109919061362d565b9160005260206000209001600033909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507f7635f1d87b47fba9f2b09e56eb4be75cca030e0cb179c1602ac9261d39a8f5c1338434604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b60078181548110151561120b57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000828280600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156112cd57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561140657600b546113f882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461361490919063ffffffff16565b1015151561140557600080fd5b5b61145b84600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461361490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061153384600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461361490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115cb43600f546135f690919063ffffffff16565b9250611632846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000868152602001908152602001600020546135f690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000858152602001908152602001600020819055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180548060010182816116db9190613659565b9160005260206000209001600085909190915055507faa0e554f781c3c3b2be110a0557f260f11af9a8aa2c64bc1e7a31dbb21e32fa2338686604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050505050565b61179e613685565b600880548060200260200160405190810160405280929190818152602001828054801561182057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116117d6575b5050505050905090565b600a5481565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000838152602001908152602001600020549050919050565b6006602052816000526040600020818154811015156118d657fe5b90600052602060002090016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611911613685565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156119d057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611986575b50505050509050919050565b6119e4613699565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480602002602001604051908101604052809291908181526020018280548015611a6f57602002820191906000526020600020905b815481526020019060010190808311611a5b575b5050505050905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b0b6136ad565b611b1482612cfa565b15611c655760036000611b2684612c36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600160036000611b6f86612c36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905003815481101515611bba57fe5b90600052602060002090018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c595780601f10611c2e57610100808354040283529160200191611c59565b820191906000526020600020905b815481529060010190602001808311611c3c57829003601f168201915b50505050509050611d9d565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905003815481101515611cf657fe5b90600052602060002090018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d955780601f10611d6a57610100808354040283529160200191611d95565b820191906000526020600020905b815481529060010190602001808311611d7857829003601f168201915b505050505090505b919050565b600881815481101515611db157fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008282600082111515611df457600080fd5b814310151515611e0357600080fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600084815260200190815260200160002054111515611e6457600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611eb357fe5b906000526020600020900154141515611ecb57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008681526020019081526020016000205492506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000868152602001908152602001600020600090556000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010184815481101515611fc457fe5b9060005260206000209001600090553373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561201357600080fd5b7ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568338685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60008082600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff16151561213857600080fd5b61214184612c36565b915061214b612d59565b6064600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540281151561219757fe5b0492505050919050565b6003602052816000526040600020818154811015156121bc57fe5b9060005260206000209001600091509150508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122625780601f1061223757610100808354040283529160200191612262565b820191906000526020600020905b81548152906001019060200180831161224557829003601f168201915b505050505081565b600c54341015151561227b57600080fd5b80600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff1615156122d757600080fd5b61232c34600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546135f690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561249b57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480600101828161244b919061362d565b9160005260206000209001600033909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b61252d34600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc338334604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050565b60046020528060005260406000206000915090505481565b60095481565b600f5481565b6000806000833373ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561271957600080fd5b84600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff16151561277557600080fd5b6000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160146101000a81548160ff0219169083151502179055506127e6600160095461361490919063ffffffff16565b600981905550600094505b6008805490508510156128bb578573ffffffffffffffffffffffffffffffffffffffff1660088681548110151561282457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156128ae5760088581548110151561287b57fe5b906000526020600020900160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556128bb565b84806001019550506127f1565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054935061299284600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461361490919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a7243600e546135f690919063ffffffff16565b9250612ad9846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000868152602001908152602001600020546135f690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000858152602001908152602001600020819055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054806001018281612b829190613659565b9160005260206000209001600085909190915055507f4edf3e325d0063213a39f9085522994a1c44bea5f39e7d63ef61260a1e58c6d33387604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600d5481565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff169050919050565b600b5481565b6000600a54905090565b600080612d6e613685565b600080600033600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff161515612dcf57600080fd5b87600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff161515612e2b57600080fd5b612e3433612c36565b9750612e3f89612c36565b9650600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612ed757600080fd5b6001600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550604b612fc4612d59565b6064600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540281151561301057fe5b041015156134e65760016008805490500360405180591061302e5750595b9080825280602002602001820160405250955060009450600093505b600880549050841015613357578673ffffffffffffffffffffffffffffffffffffffff166130b160088681548110151561308057fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612c36565b73ffffffffffffffffffffffffffffffffffffffff16141561334a576130e3600160095461361490919063ffffffff16565b6009819055506008848154811015156130f857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868680600101975081518110151561313857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060088481548110151561318357fe5b906000526020600020900160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160006008868154811015156131c457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905560018201600090555050600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006132bb91906136c1565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061330691906136e2565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090555b838060010194505061304a565b600092505b600780549050831015613439578673ffffffffffffffffffffffffffffffffffffffff1660078481548110151561338f57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561342c576007838154811015156133e657fe5b906000526020600020900160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a6000815480929190600190039190505550613439565b828060010193505061335c565b7fe18d61a5bf4aa2ab40afc88aa9039d27ae17ff4ec1c65f5f414df6f02ce8b35e8787604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156134d15780820151818401526020810190506134b6565b50505050905001935050505060405180910390a15b505050505050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060010182816135429190613703565b91600052602060002090016000848490919290919250919061356592919061372f565b50507f949360d814b28a3b393a68909efe1fee120ee09cac30f360a0f80ab5415a611a338383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a15050565b600c5481565b600080828401905083811015151561360a57fe5b8091505092915050565b600082821115151561362257fe5b818303905092915050565b8154818355818115116136545781836000526020600020918201910161365391906137af565b5b505050565b8154818355818115116136805781836000526020600020918201910161367f91906137af565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b50805460008255906000526020600020908101906136df91906137d4565b50565b508054600082559060005260206000209081019061370091906137af565b50565b81548183558181151161372a5781836000526020600020918201910161372991906137d4565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061377057803560ff191683800117855561379e565b8280016001018555821561379e579182015b8281111561379d578235825591602001919060010190613782565b5b5090506137ab91906137af565b5090565b6137d191905b808211156137cd5760008160009055506001016137b5565b5090565b90565b6137fd91905b808211156137f957600081816137f09190613800565b506001016137da565b5090565b90565b50805460018160011615610100020316600290046000825580601f106138265750613845565b601f01602090049060005260206000209081019061384491906137af565b5b505600a165627a7a72305820f5bbb127b52ce86c873faef85cff176563476a5e49a3d88eaa9a06a8f432c9080029`
   184  
   185  // DeployXDCValidator deploys a new Ethereum contract, binding an instance of XDCValidator to it.
   186  func DeployXDCValidator(auth *bind.TransactOpts, backend bind.ContractBackend, _candidates []common.Address, _caps []*big.Int, _firstOwner common.Address, _minCandidateCap *big.Int, _minVoterCap *big.Int, _maxValidatorNumber *big.Int, _candidateWithdrawDelay *big.Int, _voterWithdrawDelay *big.Int) (common.Address, *types.Transaction, *XDCValidator, error) {
   187  	parsed, err := abi.JSON(strings.NewReader(XDCValidatorABI))
   188  	if err != nil {
   189  		return common.Address{}, nil, nil, err
   190  	}
   191  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(XDCValidatorBin), backend, _candidates, _caps, _firstOwner, _minCandidateCap, _minVoterCap, _maxValidatorNumber, _candidateWithdrawDelay, _voterWithdrawDelay)
   192  	if err != nil {
   193  		return common.Address{}, nil, nil, err
   194  	}
   195  	return address, tx, &XDCValidator{XDCValidatorCaller: XDCValidatorCaller{contract: contract}, XDCValidatorTransactor: XDCValidatorTransactor{contract: contract}, XDCValidatorFilterer: XDCValidatorFilterer{contract: contract}}, nil
   196  }
   197  
   198  // XDCValidator is an auto generated Go binding around an Ethereum contract.
   199  type XDCValidator struct {
   200  	XDCValidatorCaller     // Read-only binding to the contract
   201  	XDCValidatorTransactor // Write-only binding to the contract
   202  	XDCValidatorFilterer   // Log filterer for contract events
   203  }
   204  
   205  // XDCValidatorCaller is an auto generated read-only Go binding around an Ethereum contract.
   206  type XDCValidatorCaller struct {
   207  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   208  }
   209  
   210  // XDCValidatorTransactor is an auto generated write-only Go binding around an Ethereum contract.
   211  type XDCValidatorTransactor struct {
   212  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   213  }
   214  
   215  // XDCValidatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   216  type XDCValidatorFilterer struct {
   217  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   218  }
   219  
   220  // XDCValidatorSession is an auto generated Go binding around an Ethereum contract,
   221  // with pre-set call and transact options.
   222  type XDCValidatorSession struct {
   223  	Contract     *XDCValidator     // Generic contract binding to set the session for
   224  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   225  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   226  }
   227  
   228  // XDCValidatorCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   229  // with pre-set call options.
   230  type XDCValidatorCallerSession struct {
   231  	Contract *XDCValidatorCaller // Generic contract caller binding to set the session for
   232  	CallOpts bind.CallOpts       // Call options to use throughout this session
   233  }
   234  
   235  // XDCValidatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   236  // with pre-set transact options.
   237  type XDCValidatorTransactorSession struct {
   238  	Contract     *XDCValidatorTransactor // Generic contract transactor binding to set the session for
   239  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
   240  }
   241  
   242  // XDCValidatorRaw is an auto generated low-level Go binding around an Ethereum contract.
   243  type XDCValidatorRaw struct {
   244  	Contract *XDCValidator // Generic contract binding to access the raw methods on
   245  }
   246  
   247  // XDCValidatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   248  type XDCValidatorCallerRaw struct {
   249  	Contract *XDCValidatorCaller // Generic read-only contract binding to access the raw methods on
   250  }
   251  
   252  // XDCValidatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   253  type XDCValidatorTransactorRaw struct {
   254  	Contract *XDCValidatorTransactor // Generic write-only contract binding to access the raw methods on
   255  }
   256  
   257  // NewXDCValidator creates a new instance of XDCValidator, bound to a specific deployed contract.
   258  func NewXDCValidator(address common.Address, backend bind.ContractBackend) (*XDCValidator, error) {
   259  	contract, err := bindXDCValidator(address, backend, backend, backend)
   260  	if err != nil {
   261  		return nil, err
   262  	}
   263  	return &XDCValidator{XDCValidatorCaller: XDCValidatorCaller{contract: contract}, XDCValidatorTransactor: XDCValidatorTransactor{contract: contract}, XDCValidatorFilterer: XDCValidatorFilterer{contract: contract}}, nil
   264  }
   265  
   266  // NewXDCValidatorCaller creates a new read-only instance of XDCValidator, bound to a specific deployed contract.
   267  func NewXDCValidatorCaller(address common.Address, caller bind.ContractCaller) (*XDCValidatorCaller, error) {
   268  	contract, err := bindXDCValidator(address, caller, nil, nil)
   269  	if err != nil {
   270  		return nil, err
   271  	}
   272  	return &XDCValidatorCaller{contract: contract}, nil
   273  }
   274  
   275  // NewXDCValidatorTransactor creates a new write-only instance of XDCValidator, bound to a specific deployed contract.
   276  func NewXDCValidatorTransactor(address common.Address, transactor bind.ContractTransactor) (*XDCValidatorTransactor, error) {
   277  	contract, err := bindXDCValidator(address, nil, transactor, nil)
   278  	if err != nil {
   279  		return nil, err
   280  	}
   281  	return &XDCValidatorTransactor{contract: contract}, nil
   282  }
   283  
   284  // NewXDCValidatorFilterer creates a new log filterer instance of XDCValidator, bound to a specific deployed contract.
   285  func NewXDCValidatorFilterer(address common.Address, filterer bind.ContractFilterer) (*XDCValidatorFilterer, error) {
   286  	contract, err := bindXDCValidator(address, nil, nil, filterer)
   287  	if err != nil {
   288  		return nil, err
   289  	}
   290  	return &XDCValidatorFilterer{contract: contract}, nil
   291  }
   292  
   293  // bindXDCValidator binds a generic wrapper to an already deployed contract.
   294  func bindXDCValidator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   295  	parsed, err := abi.JSON(strings.NewReader(XDCValidatorABI))
   296  	if err != nil {
   297  		return nil, err
   298  	}
   299  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   300  }
   301  
   302  // Call invokes the (constant) contract method with params as input values and
   303  // sets the output to result. The result type might be a single field for simple
   304  // returns, a slice of interfaces for anonymous returns and a struct for named
   305  // returns.
   306  func (_XDCValidator *XDCValidatorRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   307  	return _XDCValidator.Contract.XDCValidatorCaller.contract.Call(opts, result, method, params...)
   308  }
   309  
   310  // Transfer initiates a plain transaction to move funds to the contract, calling
   311  // its default method if one is available.
   312  func (_XDCValidator *XDCValidatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   313  	return _XDCValidator.Contract.XDCValidatorTransactor.contract.Transfer(opts)
   314  }
   315  
   316  // Transact invokes the (paid) contract method with params as input values.
   317  func (_XDCValidator *XDCValidatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   318  	return _XDCValidator.Contract.XDCValidatorTransactor.contract.Transact(opts, method, params...)
   319  }
   320  
   321  // Call invokes the (constant) contract method with params as input values and
   322  // sets the output to result. The result type might be a single field for simple
   323  // returns, a slice of interfaces for anonymous returns and a struct for named
   324  // returns.
   325  func (_XDCValidator *XDCValidatorCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   326  	return _XDCValidator.Contract.contract.Call(opts, result, method, params...)
   327  }
   328  
   329  // Transfer initiates a plain transaction to move funds to the contract, calling
   330  // its default method if one is available.
   331  func (_XDCValidator *XDCValidatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   332  	return _XDCValidator.Contract.contract.Transfer(opts)
   333  }
   334  
   335  // Transact invokes the (paid) contract method with params as input values.
   336  func (_XDCValidator *XDCValidatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   337  	return _XDCValidator.Contract.contract.Transact(opts, method, params...)
   338  }
   339  
   340  // KYCString is a free data retrieval call binding the contract method 0x5b9cd8cc.
   341  //
   342  // Solidity: function KYCString( address,  uint256) constant returns(string)
   343  func (_XDCValidator *XDCValidatorCaller) KYCString(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (string, error) {
   344  	var (
   345  		ret0 = new(string)
   346  	)
   347  	out := ret0
   348  	err := _XDCValidator.contract.Call(opts, out, "KYCString", arg0, arg1)
   349  	return *ret0, err
   350  }
   351  
   352  // KYCString is a free data retrieval call binding the contract method 0x5b9cd8cc.
   353  //
   354  // Solidity: function KYCString( address,  uint256) constant returns(string)
   355  func (_XDCValidator *XDCValidatorSession) KYCString(arg0 common.Address, arg1 *big.Int) (string, error) {
   356  	return _XDCValidator.Contract.KYCString(&_XDCValidator.CallOpts, arg0, arg1)
   357  }
   358  
   359  // KYCString is a free data retrieval call binding the contract method 0x5b9cd8cc.
   360  //
   361  // Solidity: function KYCString( address,  uint256) constant returns(string)
   362  func (_XDCValidator *XDCValidatorCallerSession) KYCString(arg0 common.Address, arg1 *big.Int) (string, error) {
   363  	return _XDCValidator.Contract.KYCString(&_XDCValidator.CallOpts, arg0, arg1)
   364  }
   365  
   366  // CandidateCount is a free data retrieval call binding the contract method 0xa9a981a3.
   367  //
   368  // Solidity: function candidateCount() constant returns(uint256)
   369  func (_XDCValidator *XDCValidatorCaller) CandidateCount(opts *bind.CallOpts) (*big.Int, error) {
   370  	var (
   371  		ret0 = new(*big.Int)
   372  	)
   373  	out := ret0
   374  	err := _XDCValidator.contract.Call(opts, out, "candidateCount")
   375  	return *ret0, err
   376  }
   377  
   378  // CandidateCount is a free data retrieval call binding the contract method 0xa9a981a3.
   379  //
   380  // Solidity: function candidateCount() constant returns(uint256)
   381  func (_XDCValidator *XDCValidatorSession) CandidateCount() (*big.Int, error) {
   382  	return _XDCValidator.Contract.CandidateCount(&_XDCValidator.CallOpts)
   383  }
   384  
   385  // CandidateCount is a free data retrieval call binding the contract method 0xa9a981a3.
   386  //
   387  // Solidity: function candidateCount() constant returns(uint256)
   388  func (_XDCValidator *XDCValidatorCallerSession) CandidateCount() (*big.Int, error) {
   389  	return _XDCValidator.Contract.CandidateCount(&_XDCValidator.CallOpts)
   390  }
   391  
   392  // CandidateWithdrawDelay is a free data retrieval call binding the contract method 0xd161c767.
   393  //
   394  // Solidity: function candidateWithdrawDelay() constant returns(uint256)
   395  func (_XDCValidator *XDCValidatorCaller) CandidateWithdrawDelay(opts *bind.CallOpts) (*big.Int, error) {
   396  	var (
   397  		ret0 = new(*big.Int)
   398  	)
   399  	out := ret0
   400  	err := _XDCValidator.contract.Call(opts, out, "candidateWithdrawDelay")
   401  	return *ret0, err
   402  }
   403  
   404  // CandidateWithdrawDelay is a free data retrieval call binding the contract method 0xd161c767.
   405  //
   406  // Solidity: function candidateWithdrawDelay() constant returns(uint256)
   407  func (_XDCValidator *XDCValidatorSession) CandidateWithdrawDelay() (*big.Int, error) {
   408  	return _XDCValidator.Contract.CandidateWithdrawDelay(&_XDCValidator.CallOpts)
   409  }
   410  
   411  // CandidateWithdrawDelay is a free data retrieval call binding the contract method 0xd161c767.
   412  //
   413  // Solidity: function candidateWithdrawDelay() constant returns(uint256)
   414  func (_XDCValidator *XDCValidatorCallerSession) CandidateWithdrawDelay() (*big.Int, error) {
   415  	return _XDCValidator.Contract.CandidateWithdrawDelay(&_XDCValidator.CallOpts)
   416  }
   417  
   418  // Candidates is a free data retrieval call binding the contract method 0x3477ee2e.
   419  //
   420  // Solidity: function candidates( uint256) constant returns(address)
   421  func (_XDCValidator *XDCValidatorCaller) Candidates(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
   422  	var (
   423  		ret0 = new(common.Address)
   424  	)
   425  	out := ret0
   426  	err := _XDCValidator.contract.Call(opts, out, "candidates", arg0)
   427  	return *ret0, err
   428  }
   429  
   430  // Candidates is a free data retrieval call binding the contract method 0x3477ee2e.
   431  //
   432  // Solidity: function candidates( uint256) constant returns(address)
   433  func (_XDCValidator *XDCValidatorSession) Candidates(arg0 *big.Int) (common.Address, error) {
   434  	return _XDCValidator.Contract.Candidates(&_XDCValidator.CallOpts, arg0)
   435  }
   436  
   437  // Candidates is a free data retrieval call binding the contract method 0x3477ee2e.
   438  //
   439  // Solidity: function candidates( uint256) constant returns(address)
   440  func (_XDCValidator *XDCValidatorCallerSession) Candidates(arg0 *big.Int) (common.Address, error) {
   441  	return _XDCValidator.Contract.Candidates(&_XDCValidator.CallOpts, arg0)
   442  }
   443  
   444  // GetCandidateCap is a free data retrieval call binding the contract method 0x58e7525f.
   445  //
   446  // Solidity: function getCandidateCap(_candidate address) constant returns(uint256)
   447  func (_XDCValidator *XDCValidatorCaller) GetCandidateCap(opts *bind.CallOpts, _candidate common.Address) (*big.Int, error) {
   448  	var (
   449  		ret0 = new(*big.Int)
   450  	)
   451  	out := ret0
   452  	err := _XDCValidator.contract.Call(opts, out, "getCandidateCap", _candidate)
   453  	return *ret0, err
   454  }
   455  
   456  // GetCandidateCap is a free data retrieval call binding the contract method 0x58e7525f.
   457  //
   458  // Solidity: function getCandidateCap(_candidate address) constant returns(uint256)
   459  func (_XDCValidator *XDCValidatorSession) GetCandidateCap(_candidate common.Address) (*big.Int, error) {
   460  	return _XDCValidator.Contract.GetCandidateCap(&_XDCValidator.CallOpts, _candidate)
   461  }
   462  
   463  // GetCandidateCap is a free data retrieval call binding the contract method 0x58e7525f.
   464  //
   465  // Solidity: function getCandidateCap(_candidate address) constant returns(uint256)
   466  func (_XDCValidator *XDCValidatorCallerSession) GetCandidateCap(_candidate common.Address) (*big.Int, error) {
   467  	return _XDCValidator.Contract.GetCandidateCap(&_XDCValidator.CallOpts, _candidate)
   468  }
   469  
   470  // GetCandidateOwner is a free data retrieval call binding the contract method 0xb642facd.
   471  //
   472  // Solidity: function getCandidateOwner(_candidate address) constant returns(address)
   473  func (_XDCValidator *XDCValidatorCaller) GetCandidateOwner(opts *bind.CallOpts, _candidate common.Address) (common.Address, error) {
   474  	var (
   475  		ret0 = new(common.Address)
   476  	)
   477  	out := ret0
   478  	err := _XDCValidator.contract.Call(opts, out, "getCandidateOwner", _candidate)
   479  	return *ret0, err
   480  }
   481  
   482  // GetCandidateOwner is a free data retrieval call binding the contract method 0xb642facd.
   483  //
   484  // Solidity: function getCandidateOwner(_candidate address) constant returns(address)
   485  func (_XDCValidator *XDCValidatorSession) GetCandidateOwner(_candidate common.Address) (common.Address, error) {
   486  	return _XDCValidator.Contract.GetCandidateOwner(&_XDCValidator.CallOpts, _candidate)
   487  }
   488  
   489  // GetCandidateOwner is a free data retrieval call binding the contract method 0xb642facd.
   490  //
   491  // Solidity: function getCandidateOwner(_candidate address) constant returns(address)
   492  func (_XDCValidator *XDCValidatorCallerSession) GetCandidateOwner(_candidate common.Address) (common.Address, error) {
   493  	return _XDCValidator.Contract.GetCandidateOwner(&_XDCValidator.CallOpts, _candidate)
   494  }
   495  
   496  // GetCandidates is a free data retrieval call binding the contract method 0x06a49fce.
   497  //
   498  // Solidity: function getCandidates() constant returns(address[])
   499  func (_XDCValidator *XDCValidatorCaller) GetCandidates(opts *bind.CallOpts) ([]common.Address, error) {
   500  	var (
   501  		ret0 = new([]common.Address)
   502  	)
   503  	out := ret0
   504  	err := _XDCValidator.contract.Call(opts, out, "getCandidates")
   505  	return *ret0, err
   506  }
   507  
   508  // GetCandidates is a free data retrieval call binding the contract method 0x06a49fce.
   509  //
   510  // Solidity: function getCandidates() constant returns(address[])
   511  func (_XDCValidator *XDCValidatorSession) GetCandidates() ([]common.Address, error) {
   512  	return _XDCValidator.Contract.GetCandidates(&_XDCValidator.CallOpts)
   513  }
   514  
   515  // GetCandidates is a free data retrieval call binding the contract method 0x06a49fce.
   516  //
   517  // Solidity: function getCandidates() constant returns(address[])
   518  func (_XDCValidator *XDCValidatorCallerSession) GetCandidates() ([]common.Address, error) {
   519  	return _XDCValidator.Contract.GetCandidates(&_XDCValidator.CallOpts)
   520  }
   521  
   522  // GetHashCount is a free data retrieval call binding the contract method 0xc45607df.
   523  //
   524  // Solidity: function getHashCount(_address address) constant returns(uint256)
   525  func (_XDCValidator *XDCValidatorCaller) GetHashCount(opts *bind.CallOpts, _address common.Address) (*big.Int, error) {
   526  	var (
   527  		ret0 = new(*big.Int)
   528  	)
   529  	out := ret0
   530  	err := _XDCValidator.contract.Call(opts, out, "getHashCount", _address)
   531  	return *ret0, err
   532  }
   533  
   534  // GetHashCount is a free data retrieval call binding the contract method 0xc45607df.
   535  //
   536  // Solidity: function getHashCount(_address address) constant returns(uint256)
   537  func (_XDCValidator *XDCValidatorSession) GetHashCount(_address common.Address) (*big.Int, error) {
   538  	return _XDCValidator.Contract.GetHashCount(&_XDCValidator.CallOpts, _address)
   539  }
   540  
   541  // GetHashCount is a free data retrieval call binding the contract method 0xc45607df.
   542  //
   543  // Solidity: function getHashCount(_address address) constant returns(uint256)
   544  func (_XDCValidator *XDCValidatorCallerSession) GetHashCount(_address common.Address) (*big.Int, error) {
   545  	return _XDCValidator.Contract.GetHashCount(&_XDCValidator.CallOpts, _address)
   546  }
   547  
   548  // GetLatestKYC is a free data retrieval call binding the contract method 0x32658652.
   549  //
   550  // Solidity: function getLatestKYC(_address address) constant returns(string)
   551  func (_XDCValidator *XDCValidatorCaller) GetLatestKYC(opts *bind.CallOpts, _address common.Address) (string, error) {
   552  	var (
   553  		ret0 = new(string)
   554  	)
   555  	out := ret0
   556  	err := _XDCValidator.contract.Call(opts, out, "getLatestKYC", _address)
   557  	return *ret0, err
   558  }
   559  
   560  // GetLatestKYC is a free data retrieval call binding the contract method 0x32658652.
   561  //
   562  // Solidity: function getLatestKYC(_address address) constant returns(string)
   563  func (_XDCValidator *XDCValidatorSession) GetLatestKYC(_address common.Address) (string, error) {
   564  	return _XDCValidator.Contract.GetLatestKYC(&_XDCValidator.CallOpts, _address)
   565  }
   566  
   567  // GetLatestKYC is a free data retrieval call binding the contract method 0x32658652.
   568  //
   569  // Solidity: function getLatestKYC(_address address) constant returns(string)
   570  func (_XDCValidator *XDCValidatorCallerSession) GetLatestKYC(_address common.Address) (string, error) {
   571  	return _XDCValidator.Contract.GetLatestKYC(&_XDCValidator.CallOpts, _address)
   572  }
   573  
   574  // GetOwnerCount is a free data retrieval call binding the contract method 0xef18374a.
   575  //
   576  // Solidity: function getOwnerCount() constant returns(uint256)
   577  func (_XDCValidator *XDCValidatorCaller) GetOwnerCount(opts *bind.CallOpts) (*big.Int, error) {
   578  	var (
   579  		ret0 = new(*big.Int)
   580  	)
   581  	out := ret0
   582  	err := _XDCValidator.contract.Call(opts, out, "getOwnerCount")
   583  	return *ret0, err
   584  }
   585  
   586  // GetOwnerCount is a free data retrieval call binding the contract method 0xef18374a.
   587  //
   588  // Solidity: function getOwnerCount() constant returns(uint256)
   589  func (_XDCValidator *XDCValidatorSession) GetOwnerCount() (*big.Int, error) {
   590  	return _XDCValidator.Contract.GetOwnerCount(&_XDCValidator.CallOpts)
   591  }
   592  
   593  // GetOwnerCount is a free data retrieval call binding the contract method 0xef18374a.
   594  //
   595  // Solidity: function getOwnerCount() constant returns(uint256)
   596  func (_XDCValidator *XDCValidatorCallerSession) GetOwnerCount() (*big.Int, error) {
   597  	return _XDCValidator.Contract.GetOwnerCount(&_XDCValidator.CallOpts)
   598  }
   599  
   600  // GetVoterCap is a free data retrieval call binding the contract method 0x302b6872.
   601  //
   602  // Solidity: function getVoterCap(_candidate address, _voter address) constant returns(uint256)
   603  func (_XDCValidator *XDCValidatorCaller) GetVoterCap(opts *bind.CallOpts, _candidate common.Address, _voter common.Address) (*big.Int, error) {
   604  	var (
   605  		ret0 = new(*big.Int)
   606  	)
   607  	out := ret0
   608  	err := _XDCValidator.contract.Call(opts, out, "getVoterCap", _candidate, _voter)
   609  	return *ret0, err
   610  }
   611  
   612  // GetVoterCap is a free data retrieval call binding the contract method 0x302b6872.
   613  //
   614  // Solidity: function getVoterCap(_candidate address, _voter address) constant returns(uint256)
   615  func (_XDCValidator *XDCValidatorSession) GetVoterCap(_candidate common.Address, _voter common.Address) (*big.Int, error) {
   616  	return _XDCValidator.Contract.GetVoterCap(&_XDCValidator.CallOpts, _candidate, _voter)
   617  }
   618  
   619  // GetVoterCap is a free data retrieval call binding the contract method 0x302b6872.
   620  //
   621  // Solidity: function getVoterCap(_candidate address, _voter address) constant returns(uint256)
   622  func (_XDCValidator *XDCValidatorCallerSession) GetVoterCap(_candidate common.Address, _voter common.Address) (*big.Int, error) {
   623  	return _XDCValidator.Contract.GetVoterCap(&_XDCValidator.CallOpts, _candidate, _voter)
   624  }
   625  
   626  // GetVoters is a free data retrieval call binding the contract method 0x2d15cc04.
   627  //
   628  // Solidity: function getVoters(_candidate address) constant returns(address[])
   629  func (_XDCValidator *XDCValidatorCaller) GetVoters(opts *bind.CallOpts, _candidate common.Address) ([]common.Address, error) {
   630  	var (
   631  		ret0 = new([]common.Address)
   632  	)
   633  	out := ret0
   634  	err := _XDCValidator.contract.Call(opts, out, "getVoters", _candidate)
   635  	return *ret0, err
   636  }
   637  
   638  // GetVoters is a free data retrieval call binding the contract method 0x2d15cc04.
   639  //
   640  // Solidity: function getVoters(_candidate address) constant returns(address[])
   641  func (_XDCValidator *XDCValidatorSession) GetVoters(_candidate common.Address) ([]common.Address, error) {
   642  	return _XDCValidator.Contract.GetVoters(&_XDCValidator.CallOpts, _candidate)
   643  }
   644  
   645  // GetVoters is a free data retrieval call binding the contract method 0x2d15cc04.
   646  //
   647  // Solidity: function getVoters(_candidate address) constant returns(address[])
   648  func (_XDCValidator *XDCValidatorCallerSession) GetVoters(_candidate common.Address) ([]common.Address, error) {
   649  	return _XDCValidator.Contract.GetVoters(&_XDCValidator.CallOpts, _candidate)
   650  }
   651  
   652  // GetWithdrawBlockNumbers is a free data retrieval call binding the contract method 0x2f9c4bba.
   653  //
   654  // Solidity: function getWithdrawBlockNumbers() constant returns(uint256[])
   655  func (_XDCValidator *XDCValidatorCaller) GetWithdrawBlockNumbers(opts *bind.CallOpts) ([]*big.Int, error) {
   656  	var (
   657  		ret0 = new([]*big.Int)
   658  	)
   659  	out := ret0
   660  	err := _XDCValidator.contract.Call(opts, out, "getWithdrawBlockNumbers")
   661  	return *ret0, err
   662  }
   663  
   664  // GetWithdrawBlockNumbers is a free data retrieval call binding the contract method 0x2f9c4bba.
   665  //
   666  // Solidity: function getWithdrawBlockNumbers() constant returns(uint256[])
   667  func (_XDCValidator *XDCValidatorSession) GetWithdrawBlockNumbers() ([]*big.Int, error) {
   668  	return _XDCValidator.Contract.GetWithdrawBlockNumbers(&_XDCValidator.CallOpts)
   669  }
   670  
   671  // GetWithdrawBlockNumbers is a free data retrieval call binding the contract method 0x2f9c4bba.
   672  //
   673  // Solidity: function getWithdrawBlockNumbers() constant returns(uint256[])
   674  func (_XDCValidator *XDCValidatorCallerSession) GetWithdrawBlockNumbers() ([]*big.Int, error) {
   675  	return _XDCValidator.Contract.GetWithdrawBlockNumbers(&_XDCValidator.CallOpts)
   676  }
   677  
   678  // GetWithdrawCap is a free data retrieval call binding the contract method 0x15febd68.
   679  //
   680  // Solidity: function getWithdrawCap(_blockNumber uint256) constant returns(uint256)
   681  func (_XDCValidator *XDCValidatorCaller) GetWithdrawCap(opts *bind.CallOpts, _blockNumber *big.Int) (*big.Int, error) {
   682  	var (
   683  		ret0 = new(*big.Int)
   684  	)
   685  	out := ret0
   686  	err := _XDCValidator.contract.Call(opts, out, "getWithdrawCap", _blockNumber)
   687  	return *ret0, err
   688  }
   689  
   690  // GetWithdrawCap is a free data retrieval call binding the contract method 0x15febd68.
   691  //
   692  // Solidity: function getWithdrawCap(_blockNumber uint256) constant returns(uint256)
   693  func (_XDCValidator *XDCValidatorSession) GetWithdrawCap(_blockNumber *big.Int) (*big.Int, error) {
   694  	return _XDCValidator.Contract.GetWithdrawCap(&_XDCValidator.CallOpts, _blockNumber)
   695  }
   696  
   697  // GetWithdrawCap is a free data retrieval call binding the contract method 0x15febd68.
   698  //
   699  // Solidity: function getWithdrawCap(_blockNumber uint256) constant returns(uint256)
   700  func (_XDCValidator *XDCValidatorCallerSession) GetWithdrawCap(_blockNumber *big.Int) (*big.Int, error) {
   701  	return _XDCValidator.Contract.GetWithdrawCap(&_XDCValidator.CallOpts, _blockNumber)
   702  }
   703  
   704  // HasVotedInvalid is a free data retrieval call binding the contract method 0x0e3e4fb8.
   705  //
   706  // Solidity: function hasVotedInvalid( address,  address) constant returns(bool)
   707  func (_XDCValidator *XDCValidatorCaller) HasVotedInvalid(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (bool, error) {
   708  	var (
   709  		ret0 = new(bool)
   710  	)
   711  	out := ret0
   712  	err := _XDCValidator.contract.Call(opts, out, "hasVotedInvalid", arg0, arg1)
   713  	return *ret0, err
   714  }
   715  
   716  // HasVotedInvalid is a free data retrieval call binding the contract method 0x0e3e4fb8.
   717  //
   718  // Solidity: function hasVotedInvalid( address,  address) constant returns(bool)
   719  func (_XDCValidator *XDCValidatorSession) HasVotedInvalid(arg0 common.Address, arg1 common.Address) (bool, error) {
   720  	return _XDCValidator.Contract.HasVotedInvalid(&_XDCValidator.CallOpts, arg0, arg1)
   721  }
   722  
   723  // HasVotedInvalid is a free data retrieval call binding the contract method 0x0e3e4fb8.
   724  //
   725  // Solidity: function hasVotedInvalid( address,  address) constant returns(bool)
   726  func (_XDCValidator *XDCValidatorCallerSession) HasVotedInvalid(arg0 common.Address, arg1 common.Address) (bool, error) {
   727  	return _XDCValidator.Contract.HasVotedInvalid(&_XDCValidator.CallOpts, arg0, arg1)
   728  }
   729  
   730  // InvalidKYCCount is a free data retrieval call binding the contract method 0x72e44a38.
   731  //
   732  // Solidity: function invalidKYCCount( address) constant returns(uint256)
   733  func (_XDCValidator *XDCValidatorCaller) InvalidKYCCount(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   734  	var (
   735  		ret0 = new(*big.Int)
   736  	)
   737  	out := ret0
   738  	err := _XDCValidator.contract.Call(opts, out, "invalidKYCCount", arg0)
   739  	return *ret0, err
   740  }
   741  
   742  // InvalidKYCCount is a free data retrieval call binding the contract method 0x72e44a38.
   743  //
   744  // Solidity: function invalidKYCCount( address) constant returns(uint256)
   745  func (_XDCValidator *XDCValidatorSession) InvalidKYCCount(arg0 common.Address) (*big.Int, error) {
   746  	return _XDCValidator.Contract.InvalidKYCCount(&_XDCValidator.CallOpts, arg0)
   747  }
   748  
   749  // InvalidKYCCount is a free data retrieval call binding the contract method 0x72e44a38.
   750  //
   751  // Solidity: function invalidKYCCount( address) constant returns(uint256)
   752  func (_XDCValidator *XDCValidatorCallerSession) InvalidKYCCount(arg0 common.Address) (*big.Int, error) {
   753  	return _XDCValidator.Contract.InvalidKYCCount(&_XDCValidator.CallOpts, arg0)
   754  }
   755  
   756  // InvalidPercent is a free data retrieval call binding the contract method 0x5b860d27.
   757  //
   758  // Solidity: function invalidPercent(_invalidCandidate address) constant returns(uint256)
   759  func (_XDCValidator *XDCValidatorCaller) InvalidPercent(opts *bind.CallOpts, _invalidCandidate common.Address) (*big.Int, error) {
   760  	var (
   761  		ret0 = new(*big.Int)
   762  	)
   763  	out := ret0
   764  	err := _XDCValidator.contract.Call(opts, out, "invalidPercent", _invalidCandidate)
   765  	return *ret0, err
   766  }
   767  
   768  // InvalidPercent is a free data retrieval call binding the contract method 0x5b860d27.
   769  //
   770  // Solidity: function invalidPercent(_invalidCandidate address) constant returns(uint256)
   771  func (_XDCValidator *XDCValidatorSession) InvalidPercent(_invalidCandidate common.Address) (*big.Int, error) {
   772  	return _XDCValidator.Contract.InvalidPercent(&_XDCValidator.CallOpts, _invalidCandidate)
   773  }
   774  
   775  // InvalidPercent is a free data retrieval call binding the contract method 0x5b860d27.
   776  //
   777  // Solidity: function invalidPercent(_invalidCandidate address) constant returns(uint256)
   778  func (_XDCValidator *XDCValidatorCallerSession) InvalidPercent(_invalidCandidate common.Address) (*big.Int, error) {
   779  	return _XDCValidator.Contract.InvalidPercent(&_XDCValidator.CallOpts, _invalidCandidate)
   780  }
   781  
   782  // IsCandidate is a free data retrieval call binding the contract method 0xd51b9e93.
   783  //
   784  // Solidity: function isCandidate(_candidate address) constant returns(bool)
   785  func (_XDCValidator *XDCValidatorCaller) IsCandidate(opts *bind.CallOpts, _candidate common.Address) (bool, error) {
   786  	var (
   787  		ret0 = new(bool)
   788  	)
   789  	out := ret0
   790  	err := _XDCValidator.contract.Call(opts, out, "isCandidate", _candidate)
   791  	return *ret0, err
   792  }
   793  
   794  // IsCandidate is a free data retrieval call binding the contract method 0xd51b9e93.
   795  //
   796  // Solidity: function isCandidate(_candidate address) constant returns(bool)
   797  func (_XDCValidator *XDCValidatorSession) IsCandidate(_candidate common.Address) (bool, error) {
   798  	return _XDCValidator.Contract.IsCandidate(&_XDCValidator.CallOpts, _candidate)
   799  }
   800  
   801  // IsCandidate is a free data retrieval call binding the contract method 0xd51b9e93.
   802  //
   803  // Solidity: function isCandidate(_candidate address) constant returns(bool)
   804  func (_XDCValidator *XDCValidatorCallerSession) IsCandidate(_candidate common.Address) (bool, error) {
   805  	return _XDCValidator.Contract.IsCandidate(&_XDCValidator.CallOpts, _candidate)
   806  }
   807  
   808  // MaxValidatorNumber is a free data retrieval call binding the contract method 0xd09f1ab4.
   809  //
   810  // Solidity: function maxValidatorNumber() constant returns(uint256)
   811  func (_XDCValidator *XDCValidatorCaller) MaxValidatorNumber(opts *bind.CallOpts) (*big.Int, error) {
   812  	var (
   813  		ret0 = new(*big.Int)
   814  	)
   815  	out := ret0
   816  	err := _XDCValidator.contract.Call(opts, out, "maxValidatorNumber")
   817  	return *ret0, err
   818  }
   819  
   820  // MaxValidatorNumber is a free data retrieval call binding the contract method 0xd09f1ab4.
   821  //
   822  // Solidity: function maxValidatorNumber() constant returns(uint256)
   823  func (_XDCValidator *XDCValidatorSession) MaxValidatorNumber() (*big.Int, error) {
   824  	return _XDCValidator.Contract.MaxValidatorNumber(&_XDCValidator.CallOpts)
   825  }
   826  
   827  // MaxValidatorNumber is a free data retrieval call binding the contract method 0xd09f1ab4.
   828  //
   829  // Solidity: function maxValidatorNumber() constant returns(uint256)
   830  func (_XDCValidator *XDCValidatorCallerSession) MaxValidatorNumber() (*big.Int, error) {
   831  	return _XDCValidator.Contract.MaxValidatorNumber(&_XDCValidator.CallOpts)
   832  }
   833  
   834  // MinCandidateCap is a free data retrieval call binding the contract method 0xd55b7dff.
   835  //
   836  // Solidity: function minCandidateCap() constant returns(uint256)
   837  func (_XDCValidator *XDCValidatorCaller) MinCandidateCap(opts *bind.CallOpts) (*big.Int, error) {
   838  	var (
   839  		ret0 = new(*big.Int)
   840  	)
   841  	out := ret0
   842  	err := _XDCValidator.contract.Call(opts, out, "minCandidateCap")
   843  	return *ret0, err
   844  }
   845  
   846  // MinCandidateCap is a free data retrieval call binding the contract method 0xd55b7dff.
   847  //
   848  // Solidity: function minCandidateCap() constant returns(uint256)
   849  func (_XDCValidator *XDCValidatorSession) MinCandidateCap() (*big.Int, error) {
   850  	return _XDCValidator.Contract.MinCandidateCap(&_XDCValidator.CallOpts)
   851  }
   852  
   853  // MinCandidateCap is a free data retrieval call binding the contract method 0xd55b7dff.
   854  //
   855  // Solidity: function minCandidateCap() constant returns(uint256)
   856  func (_XDCValidator *XDCValidatorCallerSession) MinCandidateCap() (*big.Int, error) {
   857  	return _XDCValidator.Contract.MinCandidateCap(&_XDCValidator.CallOpts)
   858  }
   859  
   860  // MinVoterCap is a free data retrieval call binding the contract method 0xf8ac9dd5.
   861  //
   862  // Solidity: function minVoterCap() constant returns(uint256)
   863  func (_XDCValidator *XDCValidatorCaller) MinVoterCap(opts *bind.CallOpts) (*big.Int, error) {
   864  	var (
   865  		ret0 = new(*big.Int)
   866  	)
   867  	out := ret0
   868  	err := _XDCValidator.contract.Call(opts, out, "minVoterCap")
   869  	return *ret0, err
   870  }
   871  
   872  // MinVoterCap is a free data retrieval call binding the contract method 0xf8ac9dd5.
   873  //
   874  // Solidity: function minVoterCap() constant returns(uint256)
   875  func (_XDCValidator *XDCValidatorSession) MinVoterCap() (*big.Int, error) {
   876  	return _XDCValidator.Contract.MinVoterCap(&_XDCValidator.CallOpts)
   877  }
   878  
   879  // MinVoterCap is a free data retrieval call binding the contract method 0xf8ac9dd5.
   880  //
   881  // Solidity: function minVoterCap() constant returns(uint256)
   882  func (_XDCValidator *XDCValidatorCallerSession) MinVoterCap() (*big.Int, error) {
   883  	return _XDCValidator.Contract.MinVoterCap(&_XDCValidator.CallOpts)
   884  }
   885  
   886  // OwnerCount is a free data retrieval call binding the contract method 0x0db02622.
   887  //
   888  // Solidity: function ownerCount() constant returns(uint256)
   889  func (_XDCValidator *XDCValidatorCaller) OwnerCount(opts *bind.CallOpts) (*big.Int, error) {
   890  	var (
   891  		ret0 = new(*big.Int)
   892  	)
   893  	out := ret0
   894  	err := _XDCValidator.contract.Call(opts, out, "ownerCount")
   895  	return *ret0, err
   896  }
   897  
   898  // OwnerCount is a free data retrieval call binding the contract method 0x0db02622.
   899  //
   900  // Solidity: function ownerCount() constant returns(uint256)
   901  func (_XDCValidator *XDCValidatorSession) OwnerCount() (*big.Int, error) {
   902  	return _XDCValidator.Contract.OwnerCount(&_XDCValidator.CallOpts)
   903  }
   904  
   905  // OwnerCount is a free data retrieval call binding the contract method 0x0db02622.
   906  //
   907  // Solidity: function ownerCount() constant returns(uint256)
   908  func (_XDCValidator *XDCValidatorCallerSession) OwnerCount() (*big.Int, error) {
   909  	return _XDCValidator.Contract.OwnerCount(&_XDCValidator.CallOpts)
   910  }
   911  
   912  // OwnerToCandidate is a free data retrieval call binding the contract method 0x2a3640b1.
   913  //
   914  // Solidity: function ownerToCandidate( address,  uint256) constant returns(address)
   915  func (_XDCValidator *XDCValidatorCaller) OwnerToCandidate(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (common.Address, error) {
   916  	var (
   917  		ret0 = new(common.Address)
   918  	)
   919  	out := ret0
   920  	err := _XDCValidator.contract.Call(opts, out, "ownerToCandidate", arg0, arg1)
   921  	return *ret0, err
   922  }
   923  
   924  // OwnerToCandidate is a free data retrieval call binding the contract method 0x2a3640b1.
   925  //
   926  // Solidity: function ownerToCandidate( address,  uint256) constant returns(address)
   927  func (_XDCValidator *XDCValidatorSession) OwnerToCandidate(arg0 common.Address, arg1 *big.Int) (common.Address, error) {
   928  	return _XDCValidator.Contract.OwnerToCandidate(&_XDCValidator.CallOpts, arg0, arg1)
   929  }
   930  
   931  // OwnerToCandidate is a free data retrieval call binding the contract method 0x2a3640b1.
   932  //
   933  // Solidity: function ownerToCandidate( address,  uint256) constant returns(address)
   934  func (_XDCValidator *XDCValidatorCallerSession) OwnerToCandidate(arg0 common.Address, arg1 *big.Int) (common.Address, error) {
   935  	return _XDCValidator.Contract.OwnerToCandidate(&_XDCValidator.CallOpts, arg0, arg1)
   936  }
   937  
   938  // Owners is a free data retrieval call binding the contract method 0x025e7c27.
   939  //
   940  // Solidity: function owners( uint256) constant returns(address)
   941  func (_XDCValidator *XDCValidatorCaller) Owners(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
   942  	var (
   943  		ret0 = new(common.Address)
   944  	)
   945  	out := ret0
   946  	err := _XDCValidator.contract.Call(opts, out, "owners", arg0)
   947  	return *ret0, err
   948  }
   949  
   950  // Owners is a free data retrieval call binding the contract method 0x025e7c27.
   951  //
   952  // Solidity: function owners( uint256) constant returns(address)
   953  func (_XDCValidator *XDCValidatorSession) Owners(arg0 *big.Int) (common.Address, error) {
   954  	return _XDCValidator.Contract.Owners(&_XDCValidator.CallOpts, arg0)
   955  }
   956  
   957  // Owners is a free data retrieval call binding the contract method 0x025e7c27.
   958  //
   959  // Solidity: function owners( uint256) constant returns(address)
   960  func (_XDCValidator *XDCValidatorCallerSession) Owners(arg0 *big.Int) (common.Address, error) {
   961  	return _XDCValidator.Contract.Owners(&_XDCValidator.CallOpts, arg0)
   962  }
   963  
   964  // VoterWithdrawDelay is a free data retrieval call binding the contract method 0xa9ff959e.
   965  //
   966  // Solidity: function voterWithdrawDelay() constant returns(uint256)
   967  func (_XDCValidator *XDCValidatorCaller) VoterWithdrawDelay(opts *bind.CallOpts) (*big.Int, error) {
   968  	var (
   969  		ret0 = new(*big.Int)
   970  	)
   971  	out := ret0
   972  	err := _XDCValidator.contract.Call(opts, out, "voterWithdrawDelay")
   973  	return *ret0, err
   974  }
   975  
   976  // VoterWithdrawDelay is a free data retrieval call binding the contract method 0xa9ff959e.
   977  //
   978  // Solidity: function voterWithdrawDelay() constant returns(uint256)
   979  func (_XDCValidator *XDCValidatorSession) VoterWithdrawDelay() (*big.Int, error) {
   980  	return _XDCValidator.Contract.VoterWithdrawDelay(&_XDCValidator.CallOpts)
   981  }
   982  
   983  // VoterWithdrawDelay is a free data retrieval call binding the contract method 0xa9ff959e.
   984  //
   985  // Solidity: function voterWithdrawDelay() constant returns(uint256)
   986  func (_XDCValidator *XDCValidatorCallerSession) VoterWithdrawDelay() (*big.Int, error) {
   987  	return _XDCValidator.Contract.VoterWithdrawDelay(&_XDCValidator.CallOpts)
   988  }
   989  
   990  // Propose is a paid mutator transaction binding the contract method 0x01267951.
   991  //
   992  // Solidity: function propose(_candidate address) returns()
   993  func (_XDCValidator *XDCValidatorTransactor) Propose(opts *bind.TransactOpts, _candidate common.Address) (*types.Transaction, error) {
   994  	return _XDCValidator.contract.Transact(opts, "propose", _candidate)
   995  }
   996  
   997  // Propose is a paid mutator transaction binding the contract method 0x01267951.
   998  //
   999  // Solidity: function propose(_candidate address) returns()
  1000  func (_XDCValidator *XDCValidatorSession) Propose(_candidate common.Address) (*types.Transaction, error) {
  1001  	return _XDCValidator.Contract.Propose(&_XDCValidator.TransactOpts, _candidate)
  1002  }
  1003  
  1004  // Propose is a paid mutator transaction binding the contract method 0x01267951.
  1005  //
  1006  // Solidity: function propose(_candidate address) returns()
  1007  func (_XDCValidator *XDCValidatorTransactorSession) Propose(_candidate common.Address) (*types.Transaction, error) {
  1008  	return _XDCValidator.Contract.Propose(&_XDCValidator.TransactOpts, _candidate)
  1009  }
  1010  
  1011  // Resign is a paid mutator transaction binding the contract method 0xae6e43f5.
  1012  //
  1013  // Solidity: function resign(_candidate address) returns()
  1014  func (_XDCValidator *XDCValidatorTransactor) Resign(opts *bind.TransactOpts, _candidate common.Address) (*types.Transaction, error) {
  1015  	return _XDCValidator.contract.Transact(opts, "resign", _candidate)
  1016  }
  1017  
  1018  // Resign is a paid mutator transaction binding the contract method 0xae6e43f5.
  1019  //
  1020  // Solidity: function resign(_candidate address) returns()
  1021  func (_XDCValidator *XDCValidatorSession) Resign(_candidate common.Address) (*types.Transaction, error) {
  1022  	return _XDCValidator.Contract.Resign(&_XDCValidator.TransactOpts, _candidate)
  1023  }
  1024  
  1025  // Resign is a paid mutator transaction binding the contract method 0xae6e43f5.
  1026  //
  1027  // Solidity: function resign(_candidate address) returns()
  1028  func (_XDCValidator *XDCValidatorTransactorSession) Resign(_candidate common.Address) (*types.Transaction, error) {
  1029  	return _XDCValidator.Contract.Resign(&_XDCValidator.TransactOpts, _candidate)
  1030  }
  1031  
  1032  // Unvote is a paid mutator transaction binding the contract method 0x02aa9be2.
  1033  //
  1034  // Solidity: function unvote(_candidate address, _cap uint256) returns()
  1035  func (_XDCValidator *XDCValidatorTransactor) Unvote(opts *bind.TransactOpts, _candidate common.Address, _cap *big.Int) (*types.Transaction, error) {
  1036  	return _XDCValidator.contract.Transact(opts, "unvote", _candidate, _cap)
  1037  }
  1038  
  1039  // Unvote is a paid mutator transaction binding the contract method 0x02aa9be2.
  1040  //
  1041  // Solidity: function unvote(_candidate address, _cap uint256) returns()
  1042  func (_XDCValidator *XDCValidatorSession) Unvote(_candidate common.Address, _cap *big.Int) (*types.Transaction, error) {
  1043  	return _XDCValidator.Contract.Unvote(&_XDCValidator.TransactOpts, _candidate, _cap)
  1044  }
  1045  
  1046  // Unvote is a paid mutator transaction binding the contract method 0x02aa9be2.
  1047  //
  1048  // Solidity: function unvote(_candidate address, _cap uint256) returns()
  1049  func (_XDCValidator *XDCValidatorTransactorSession) Unvote(_candidate common.Address, _cap *big.Int) (*types.Transaction, error) {
  1050  	return _XDCValidator.Contract.Unvote(&_XDCValidator.TransactOpts, _candidate, _cap)
  1051  }
  1052  
  1053  // UploadKYC is a paid mutator transaction binding the contract method 0xf5c95125.
  1054  //
  1055  // Solidity: function uploadKYC(kychash string) returns()
  1056  func (_XDCValidator *XDCValidatorTransactor) UploadKYC(opts *bind.TransactOpts, kychash string) (*types.Transaction, error) {
  1057  	return _XDCValidator.contract.Transact(opts, "uploadKYC", kychash)
  1058  }
  1059  
  1060  // UploadKYC is a paid mutator transaction binding the contract method 0xf5c95125.
  1061  //
  1062  // Solidity: function uploadKYC(kychash string) returns()
  1063  func (_XDCValidator *XDCValidatorSession) UploadKYC(kychash string) (*types.Transaction, error) {
  1064  	return _XDCValidator.Contract.UploadKYC(&_XDCValidator.TransactOpts, kychash)
  1065  }
  1066  
  1067  // UploadKYC is a paid mutator transaction binding the contract method 0xf5c95125.
  1068  //
  1069  // Solidity: function uploadKYC(kychash string) returns()
  1070  func (_XDCValidator *XDCValidatorTransactorSession) UploadKYC(kychash string) (*types.Transaction, error) {
  1071  	return _XDCValidator.Contract.UploadKYC(&_XDCValidator.TransactOpts, kychash)
  1072  }
  1073  
  1074  // Vote is a paid mutator transaction binding the contract method 0x6dd7d8ea.
  1075  //
  1076  // Solidity: function vote(_candidate address) returns()
  1077  func (_XDCValidator *XDCValidatorTransactor) Vote(opts *bind.TransactOpts, _candidate common.Address) (*types.Transaction, error) {
  1078  	return _XDCValidator.contract.Transact(opts, "vote", _candidate)
  1079  }
  1080  
  1081  // Vote is a paid mutator transaction binding the contract method 0x6dd7d8ea.
  1082  //
  1083  // Solidity: function vote(_candidate address) returns()
  1084  func (_XDCValidator *XDCValidatorSession) Vote(_candidate common.Address) (*types.Transaction, error) {
  1085  	return _XDCValidator.Contract.Vote(&_XDCValidator.TransactOpts, _candidate)
  1086  }
  1087  
  1088  // Vote is a paid mutator transaction binding the contract method 0x6dd7d8ea.
  1089  //
  1090  // Solidity: function vote(_candidate address) returns()
  1091  func (_XDCValidator *XDCValidatorTransactorSession) Vote(_candidate common.Address) (*types.Transaction, error) {
  1092  	return _XDCValidator.Contract.Vote(&_XDCValidator.TransactOpts, _candidate)
  1093  }
  1094  
  1095  // VoteInvalidKYC is a paid mutator transaction binding the contract method 0xf2ee3c7d.
  1096  //
  1097  // Solidity: function voteInvalidKYC(_invalidCandidate address) returns()
  1098  func (_XDCValidator *XDCValidatorTransactor) VoteInvalidKYC(opts *bind.TransactOpts, _invalidCandidate common.Address) (*types.Transaction, error) {
  1099  	return _XDCValidator.contract.Transact(opts, "voteInvalidKYC", _invalidCandidate)
  1100  }
  1101  
  1102  // VoteInvalidKYC is a paid mutator transaction binding the contract method 0xf2ee3c7d.
  1103  //
  1104  // Solidity: function voteInvalidKYC(_invalidCandidate address) returns()
  1105  func (_XDCValidator *XDCValidatorSession) VoteInvalidKYC(_invalidCandidate common.Address) (*types.Transaction, error) {
  1106  	return _XDCValidator.Contract.VoteInvalidKYC(&_XDCValidator.TransactOpts, _invalidCandidate)
  1107  }
  1108  
  1109  // VoteInvalidKYC is a paid mutator transaction binding the contract method 0xf2ee3c7d.
  1110  //
  1111  // Solidity: function voteInvalidKYC(_invalidCandidate address) returns()
  1112  func (_XDCValidator *XDCValidatorTransactorSession) VoteInvalidKYC(_invalidCandidate common.Address) (*types.Transaction, error) {
  1113  	return _XDCValidator.Contract.VoteInvalidKYC(&_XDCValidator.TransactOpts, _invalidCandidate)
  1114  }
  1115  
  1116  // Withdraw is a paid mutator transaction binding the contract method 0x441a3e70.
  1117  //
  1118  // Solidity: function withdraw(_blockNumber uint256, _index uint256) returns()
  1119  func (_XDCValidator *XDCValidatorTransactor) Withdraw(opts *bind.TransactOpts, _blockNumber *big.Int, _index *big.Int) (*types.Transaction, error) {
  1120  	return _XDCValidator.contract.Transact(opts, "withdraw", _blockNumber, _index)
  1121  }
  1122  
  1123  // Withdraw is a paid mutator transaction binding the contract method 0x441a3e70.
  1124  //
  1125  // Solidity: function withdraw(_blockNumber uint256, _index uint256) returns()
  1126  func (_XDCValidator *XDCValidatorSession) Withdraw(_blockNumber *big.Int, _index *big.Int) (*types.Transaction, error) {
  1127  	return _XDCValidator.Contract.Withdraw(&_XDCValidator.TransactOpts, _blockNumber, _index)
  1128  }
  1129  
  1130  // Withdraw is a paid mutator transaction binding the contract method 0x441a3e70.
  1131  //
  1132  // Solidity: function withdraw(_blockNumber uint256, _index uint256) returns()
  1133  func (_XDCValidator *XDCValidatorTransactorSession) Withdraw(_blockNumber *big.Int, _index *big.Int) (*types.Transaction, error) {
  1134  	return _XDCValidator.Contract.Withdraw(&_XDCValidator.TransactOpts, _blockNumber, _index)
  1135  }
  1136  
  1137  // XDCValidatorInvalidatedNodeIterator is returned from FilterInvalidatedNode and is used to iterate over the raw logs and unpacked data for InvalidatedNode events raised by the XDCValidator contract.
  1138  type XDCValidatorInvalidatedNodeIterator struct {
  1139  	Event *XDCValidatorInvalidatedNode // Event containing the contract specifics and raw log
  1140  
  1141  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1142  	event    string              // Event name to use for unpacking event data
  1143  
  1144  	logs chan types.Log        // Log channel receiving the found contract events
  1145  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1146  	done bool                  // Whether the subscription completed delivering logs
  1147  	fail error                 // Occurred error to stop iteration
  1148  }
  1149  
  1150  // Next advances the iterator to the subsequent event, returning whether there
  1151  // are any more events found. In case of a retrieval or parsing error, false is
  1152  // returned and Error() can be queried for the exact failure.
  1153  func (it *XDCValidatorInvalidatedNodeIterator) Next() bool {
  1154  	// If the iterator failed, stop iterating
  1155  	if it.fail != nil {
  1156  		return false
  1157  	}
  1158  	// If the iterator completed, deliver directly whatever's available
  1159  	if it.done {
  1160  		select {
  1161  		case log := <-it.logs:
  1162  			it.Event = new(XDCValidatorInvalidatedNode)
  1163  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1164  				it.fail = err
  1165  				return false
  1166  			}
  1167  			it.Event.Raw = log
  1168  			return true
  1169  
  1170  		default:
  1171  			return false
  1172  		}
  1173  	}
  1174  	// Iterator still in progress, wait for either a data or an error event
  1175  	select {
  1176  	case log := <-it.logs:
  1177  		it.Event = new(XDCValidatorInvalidatedNode)
  1178  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1179  			it.fail = err
  1180  			return false
  1181  		}
  1182  		it.Event.Raw = log
  1183  		return true
  1184  
  1185  	case err := <-it.sub.Err():
  1186  		it.done = true
  1187  		it.fail = err
  1188  		return it.Next()
  1189  	}
  1190  }
  1191  
  1192  // Error returns any retrieval or parsing error occurred during filtering.
  1193  func (it *XDCValidatorInvalidatedNodeIterator) Error() error {
  1194  	return it.fail
  1195  }
  1196  
  1197  // Close terminates the iteration process, releasing any pending underlying
  1198  // resources.
  1199  func (it *XDCValidatorInvalidatedNodeIterator) Close() error {
  1200  	it.sub.Unsubscribe()
  1201  	return nil
  1202  }
  1203  
  1204  // XDCValidatorInvalidatedNode represents a InvalidatedNode event raised by the XDCValidator contract.
  1205  type XDCValidatorInvalidatedNode struct {
  1206  	MasternodeOwner common.Address
  1207  	Masternodes     []common.Address
  1208  	Raw             types.Log // Blockchain specific contextual infos
  1209  }
  1210  
  1211  // FilterInvalidatedNode is a free log retrieval operation binding the contract event 0xe18d61a5bf4aa2ab40afc88aa9039d27ae17ff4ec1c65f5f414df6f02ce8b35e.
  1212  //
  1213  // Solidity: event InvalidatedNode(_masternodeOwner address, _masternodes address[])
  1214  func (_XDCValidator *XDCValidatorFilterer) FilterInvalidatedNode(opts *bind.FilterOpts) (*XDCValidatorInvalidatedNodeIterator, error) {
  1215  
  1216  	logs, sub, err := _XDCValidator.contract.FilterLogs(opts, "InvalidatedNode")
  1217  	if err != nil {
  1218  		return nil, err
  1219  	}
  1220  	return &XDCValidatorInvalidatedNodeIterator{contract: _XDCValidator.contract, event: "InvalidatedNode", logs: logs, sub: sub}, nil
  1221  }
  1222  
  1223  // WatchInvalidatedNode is a free log subscription operation binding the contract event 0xe18d61a5bf4aa2ab40afc88aa9039d27ae17ff4ec1c65f5f414df6f02ce8b35e.
  1224  //
  1225  // Solidity: event InvalidatedNode(_masternodeOwner address, _masternodes address[])
  1226  func (_XDCValidator *XDCValidatorFilterer) WatchInvalidatedNode(opts *bind.WatchOpts, sink chan<- *XDCValidatorInvalidatedNode) (event.Subscription, error) {
  1227  
  1228  	logs, sub, err := _XDCValidator.contract.WatchLogs(opts, "InvalidatedNode")
  1229  	if err != nil {
  1230  		return nil, err
  1231  	}
  1232  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1233  		defer sub.Unsubscribe()
  1234  		for {
  1235  			select {
  1236  			case log := <-logs:
  1237  				// New log arrived, parse the event and forward to the user
  1238  				event := new(XDCValidatorInvalidatedNode)
  1239  				if err := _XDCValidator.contract.UnpackLog(event, "InvalidatedNode", log); err != nil {
  1240  					return err
  1241  				}
  1242  				event.Raw = log
  1243  
  1244  				select {
  1245  				case sink <- event:
  1246  				case err := <-sub.Err():
  1247  					return err
  1248  				case <-quit:
  1249  					return nil
  1250  				}
  1251  			case err := <-sub.Err():
  1252  				return err
  1253  			case <-quit:
  1254  				return nil
  1255  			}
  1256  		}
  1257  	}), nil
  1258  }
  1259  
  1260  // XDCValidatorProposeIterator is returned from FilterPropose and is used to iterate over the raw logs and unpacked data for Propose events raised by the XDCValidator contract.
  1261  type XDCValidatorProposeIterator struct {
  1262  	Event *XDCValidatorPropose // Event containing the contract specifics and raw log
  1263  
  1264  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1265  	event    string              // Event name to use for unpacking event data
  1266  
  1267  	logs chan types.Log        // Log channel receiving the found contract events
  1268  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1269  	done bool                  // Whether the subscription completed delivering logs
  1270  	fail error                 // Occurred error to stop iteration
  1271  }
  1272  
  1273  // Next advances the iterator to the subsequent event, returning whether there
  1274  // are any more events found. In case of a retrieval or parsing error, false is
  1275  // returned and Error() can be queried for the exact failure.
  1276  func (it *XDCValidatorProposeIterator) Next() bool {
  1277  	// If the iterator failed, stop iterating
  1278  	if it.fail != nil {
  1279  		return false
  1280  	}
  1281  	// If the iterator completed, deliver directly whatever's available
  1282  	if it.done {
  1283  		select {
  1284  		case log := <-it.logs:
  1285  			it.Event = new(XDCValidatorPropose)
  1286  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1287  				it.fail = err
  1288  				return false
  1289  			}
  1290  			it.Event.Raw = log
  1291  			return true
  1292  
  1293  		default:
  1294  			return false
  1295  		}
  1296  	}
  1297  	// Iterator still in progress, wait for either a data or an error event
  1298  	select {
  1299  	case log := <-it.logs:
  1300  		it.Event = new(XDCValidatorPropose)
  1301  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1302  			it.fail = err
  1303  			return false
  1304  		}
  1305  		it.Event.Raw = log
  1306  		return true
  1307  
  1308  	case err := <-it.sub.Err():
  1309  		it.done = true
  1310  		it.fail = err
  1311  		return it.Next()
  1312  	}
  1313  }
  1314  
  1315  // Error returns any retrieval or parsing error occurred during filtering.
  1316  func (it *XDCValidatorProposeIterator) Error() error {
  1317  	return it.fail
  1318  }
  1319  
  1320  // Close terminates the iteration process, releasing any pending underlying
  1321  // resources.
  1322  func (it *XDCValidatorProposeIterator) Close() error {
  1323  	it.sub.Unsubscribe()
  1324  	return nil
  1325  }
  1326  
  1327  // XDCValidatorPropose represents a Propose event raised by the XDCValidator contract.
  1328  type XDCValidatorPropose struct {
  1329  	Owner     common.Address
  1330  	Candidate common.Address
  1331  	Cap       *big.Int
  1332  	Raw       types.Log // Blockchain specific contextual infos
  1333  }
  1334  
  1335  // FilterPropose is a free log retrieval operation binding the contract event 0x7635f1d87b47fba9f2b09e56eb4be75cca030e0cb179c1602ac9261d39a8f5c1.
  1336  //
  1337  // Solidity: event Propose(_owner address, _candidate address, _cap uint256)
  1338  func (_XDCValidator *XDCValidatorFilterer) FilterPropose(opts *bind.FilterOpts) (*XDCValidatorProposeIterator, error) {
  1339  
  1340  	logs, sub, err := _XDCValidator.contract.FilterLogs(opts, "Propose")
  1341  	if err != nil {
  1342  		return nil, err
  1343  	}
  1344  	return &XDCValidatorProposeIterator{contract: _XDCValidator.contract, event: "Propose", logs: logs, sub: sub}, nil
  1345  }
  1346  
  1347  // WatchPropose is a free log subscription operation binding the contract event 0x7635f1d87b47fba9f2b09e56eb4be75cca030e0cb179c1602ac9261d39a8f5c1.
  1348  //
  1349  // Solidity: event Propose(_owner address, _candidate address, _cap uint256)
  1350  func (_XDCValidator *XDCValidatorFilterer) WatchPropose(opts *bind.WatchOpts, sink chan<- *XDCValidatorPropose) (event.Subscription, error) {
  1351  
  1352  	logs, sub, err := _XDCValidator.contract.WatchLogs(opts, "Propose")
  1353  	if err != nil {
  1354  		return nil, err
  1355  	}
  1356  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1357  		defer sub.Unsubscribe()
  1358  		for {
  1359  			select {
  1360  			case log := <-logs:
  1361  				// New log arrived, parse the event and forward to the user
  1362  				event := new(XDCValidatorPropose)
  1363  				if err := _XDCValidator.contract.UnpackLog(event, "Propose", log); err != nil {
  1364  					return err
  1365  				}
  1366  				event.Raw = log
  1367  
  1368  				select {
  1369  				case sink <- event:
  1370  				case err := <-sub.Err():
  1371  					return err
  1372  				case <-quit:
  1373  					return nil
  1374  				}
  1375  			case err := <-sub.Err():
  1376  				return err
  1377  			case <-quit:
  1378  				return nil
  1379  			}
  1380  		}
  1381  	}), nil
  1382  }
  1383  
  1384  // XDCValidatorResignIterator is returned from FilterResign and is used to iterate over the raw logs and unpacked data for Resign events raised by the XDCValidator contract.
  1385  type XDCValidatorResignIterator struct {
  1386  	Event *XDCValidatorResign // Event containing the contract specifics and raw log
  1387  
  1388  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1389  	event    string              // Event name to use for unpacking event data
  1390  
  1391  	logs chan types.Log        // Log channel receiving the found contract events
  1392  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1393  	done bool                  // Whether the subscription completed delivering logs
  1394  	fail error                 // Occurred error to stop iteration
  1395  }
  1396  
  1397  // Next advances the iterator to the subsequent event, returning whether there
  1398  // are any more events found. In case of a retrieval or parsing error, false is
  1399  // returned and Error() can be queried for the exact failure.
  1400  func (it *XDCValidatorResignIterator) Next() bool {
  1401  	// If the iterator failed, stop iterating
  1402  	if it.fail != nil {
  1403  		return false
  1404  	}
  1405  	// If the iterator completed, deliver directly whatever's available
  1406  	if it.done {
  1407  		select {
  1408  		case log := <-it.logs:
  1409  			it.Event = new(XDCValidatorResign)
  1410  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1411  				it.fail = err
  1412  				return false
  1413  			}
  1414  			it.Event.Raw = log
  1415  			return true
  1416  
  1417  		default:
  1418  			return false
  1419  		}
  1420  	}
  1421  	// Iterator still in progress, wait for either a data or an error event
  1422  	select {
  1423  	case log := <-it.logs:
  1424  		it.Event = new(XDCValidatorResign)
  1425  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1426  			it.fail = err
  1427  			return false
  1428  		}
  1429  		it.Event.Raw = log
  1430  		return true
  1431  
  1432  	case err := <-it.sub.Err():
  1433  		it.done = true
  1434  		it.fail = err
  1435  		return it.Next()
  1436  	}
  1437  }
  1438  
  1439  // Error returns any retrieval or parsing error occurred during filtering.
  1440  func (it *XDCValidatorResignIterator) Error() error {
  1441  	return it.fail
  1442  }
  1443  
  1444  // Close terminates the iteration process, releasing any pending underlying
  1445  // resources.
  1446  func (it *XDCValidatorResignIterator) Close() error {
  1447  	it.sub.Unsubscribe()
  1448  	return nil
  1449  }
  1450  
  1451  // XDCValidatorResign represents a Resign event raised by the XDCValidator contract.
  1452  type XDCValidatorResign struct {
  1453  	Owner     common.Address
  1454  	Candidate common.Address
  1455  	Raw       types.Log // Blockchain specific contextual infos
  1456  }
  1457  
  1458  // FilterResign is a free log retrieval operation binding the contract event 0x4edf3e325d0063213a39f9085522994a1c44bea5f39e7d63ef61260a1e58c6d3.
  1459  //
  1460  // Solidity: event Resign(_owner address, _candidate address)
  1461  func (_XDCValidator *XDCValidatorFilterer) FilterResign(opts *bind.FilterOpts) (*XDCValidatorResignIterator, error) {
  1462  
  1463  	logs, sub, err := _XDCValidator.contract.FilterLogs(opts, "Resign")
  1464  	if err != nil {
  1465  		return nil, err
  1466  	}
  1467  	return &XDCValidatorResignIterator{contract: _XDCValidator.contract, event: "Resign", logs: logs, sub: sub}, nil
  1468  }
  1469  
  1470  // WatchResign is a free log subscription operation binding the contract event 0x4edf3e325d0063213a39f9085522994a1c44bea5f39e7d63ef61260a1e58c6d3.
  1471  //
  1472  // Solidity: event Resign(_owner address, _candidate address)
  1473  func (_XDCValidator *XDCValidatorFilterer) WatchResign(opts *bind.WatchOpts, sink chan<- *XDCValidatorResign) (event.Subscription, error) {
  1474  
  1475  	logs, sub, err := _XDCValidator.contract.WatchLogs(opts, "Resign")
  1476  	if err != nil {
  1477  		return nil, err
  1478  	}
  1479  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1480  		defer sub.Unsubscribe()
  1481  		for {
  1482  			select {
  1483  			case log := <-logs:
  1484  				// New log arrived, parse the event and forward to the user
  1485  				event := new(XDCValidatorResign)
  1486  				if err := _XDCValidator.contract.UnpackLog(event, "Resign", log); err != nil {
  1487  					return err
  1488  				}
  1489  				event.Raw = log
  1490  
  1491  				select {
  1492  				case sink <- event:
  1493  				case err := <-sub.Err():
  1494  					return err
  1495  				case <-quit:
  1496  					return nil
  1497  				}
  1498  			case err := <-sub.Err():
  1499  				return err
  1500  			case <-quit:
  1501  				return nil
  1502  			}
  1503  		}
  1504  	}), nil
  1505  }
  1506  
  1507  // XDCValidatorUnvoteIterator is returned from FilterUnvote and is used to iterate over the raw logs and unpacked data for Unvote events raised by the XDCValidator contract.
  1508  type XDCValidatorUnvoteIterator struct {
  1509  	Event *XDCValidatorUnvote // Event containing the contract specifics and raw log
  1510  
  1511  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1512  	event    string              // Event name to use for unpacking event data
  1513  
  1514  	logs chan types.Log        // Log channel receiving the found contract events
  1515  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1516  	done bool                  // Whether the subscription completed delivering logs
  1517  	fail error                 // Occurred error to stop iteration
  1518  }
  1519  
  1520  // Next advances the iterator to the subsequent event, returning whether there
  1521  // are any more events found. In case of a retrieval or parsing error, false is
  1522  // returned and Error() can be queried for the exact failure.
  1523  func (it *XDCValidatorUnvoteIterator) Next() bool {
  1524  	// If the iterator failed, stop iterating
  1525  	if it.fail != nil {
  1526  		return false
  1527  	}
  1528  	// If the iterator completed, deliver directly whatever's available
  1529  	if it.done {
  1530  		select {
  1531  		case log := <-it.logs:
  1532  			it.Event = new(XDCValidatorUnvote)
  1533  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1534  				it.fail = err
  1535  				return false
  1536  			}
  1537  			it.Event.Raw = log
  1538  			return true
  1539  
  1540  		default:
  1541  			return false
  1542  		}
  1543  	}
  1544  	// Iterator still in progress, wait for either a data or an error event
  1545  	select {
  1546  	case log := <-it.logs:
  1547  		it.Event = new(XDCValidatorUnvote)
  1548  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1549  			it.fail = err
  1550  			return false
  1551  		}
  1552  		it.Event.Raw = log
  1553  		return true
  1554  
  1555  	case err := <-it.sub.Err():
  1556  		it.done = true
  1557  		it.fail = err
  1558  		return it.Next()
  1559  	}
  1560  }
  1561  
  1562  // Error returns any retrieval or parsing error occurred during filtering.
  1563  func (it *XDCValidatorUnvoteIterator) Error() error {
  1564  	return it.fail
  1565  }
  1566  
  1567  // Close terminates the iteration process, releasing any pending underlying
  1568  // resources.
  1569  func (it *XDCValidatorUnvoteIterator) Close() error {
  1570  	it.sub.Unsubscribe()
  1571  	return nil
  1572  }
  1573  
  1574  // XDCValidatorUnvote represents a Unvote event raised by the XDCValidator contract.
  1575  type XDCValidatorUnvote struct {
  1576  	Voter     common.Address
  1577  	Candidate common.Address
  1578  	Cap       *big.Int
  1579  	Raw       types.Log // Blockchain specific contextual infos
  1580  }
  1581  
  1582  // FilterUnvote is a free log retrieval operation binding the contract event 0xaa0e554f781c3c3b2be110a0557f260f11af9a8aa2c64bc1e7a31dbb21e32fa2.
  1583  //
  1584  // Solidity: event Unvote(_voter address, _candidate address, _cap uint256)
  1585  func (_XDCValidator *XDCValidatorFilterer) FilterUnvote(opts *bind.FilterOpts) (*XDCValidatorUnvoteIterator, error) {
  1586  
  1587  	logs, sub, err := _XDCValidator.contract.FilterLogs(opts, "Unvote")
  1588  	if err != nil {
  1589  		return nil, err
  1590  	}
  1591  	return &XDCValidatorUnvoteIterator{contract: _XDCValidator.contract, event: "Unvote", logs: logs, sub: sub}, nil
  1592  }
  1593  
  1594  // WatchUnvote is a free log subscription operation binding the contract event 0xaa0e554f781c3c3b2be110a0557f260f11af9a8aa2c64bc1e7a31dbb21e32fa2.
  1595  //
  1596  // Solidity: event Unvote(_voter address, _candidate address, _cap uint256)
  1597  func (_XDCValidator *XDCValidatorFilterer) WatchUnvote(opts *bind.WatchOpts, sink chan<- *XDCValidatorUnvote) (event.Subscription, error) {
  1598  
  1599  	logs, sub, err := _XDCValidator.contract.WatchLogs(opts, "Unvote")
  1600  	if err != nil {
  1601  		return nil, err
  1602  	}
  1603  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1604  		defer sub.Unsubscribe()
  1605  		for {
  1606  			select {
  1607  			case log := <-logs:
  1608  				// New log arrived, parse the event and forward to the user
  1609  				event := new(XDCValidatorUnvote)
  1610  				if err := _XDCValidator.contract.UnpackLog(event, "Unvote", log); err != nil {
  1611  					return err
  1612  				}
  1613  				event.Raw = log
  1614  
  1615  				select {
  1616  				case sink <- event:
  1617  				case err := <-sub.Err():
  1618  					return err
  1619  				case <-quit:
  1620  					return nil
  1621  				}
  1622  			case err := <-sub.Err():
  1623  				return err
  1624  			case <-quit:
  1625  				return nil
  1626  			}
  1627  		}
  1628  	}), nil
  1629  }
  1630  
  1631  // XDCValidatorUploadedKYCIterator is returned from FilterUploadedKYC and is used to iterate over the raw logs and unpacked data for UploadedKYC events raised by the XDCValidator contract.
  1632  type XDCValidatorUploadedKYCIterator struct {
  1633  	Event *XDCValidatorUploadedKYC // Event containing the contract specifics and raw log
  1634  
  1635  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1636  	event    string              // Event name to use for unpacking event data
  1637  
  1638  	logs chan types.Log        // Log channel receiving the found contract events
  1639  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1640  	done bool                  // Whether the subscription completed delivering logs
  1641  	fail error                 // Occurred error to stop iteration
  1642  }
  1643  
  1644  // Next advances the iterator to the subsequent event, returning whether there
  1645  // are any more events found. In case of a retrieval or parsing error, false is
  1646  // returned and Error() can be queried for the exact failure.
  1647  func (it *XDCValidatorUploadedKYCIterator) Next() bool {
  1648  	// If the iterator failed, stop iterating
  1649  	if it.fail != nil {
  1650  		return false
  1651  	}
  1652  	// If the iterator completed, deliver directly whatever's available
  1653  	if it.done {
  1654  		select {
  1655  		case log := <-it.logs:
  1656  			it.Event = new(XDCValidatorUploadedKYC)
  1657  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1658  				it.fail = err
  1659  				return false
  1660  			}
  1661  			it.Event.Raw = log
  1662  			return true
  1663  
  1664  		default:
  1665  			return false
  1666  		}
  1667  	}
  1668  	// Iterator still in progress, wait for either a data or an error event
  1669  	select {
  1670  	case log := <-it.logs:
  1671  		it.Event = new(XDCValidatorUploadedKYC)
  1672  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1673  			it.fail = err
  1674  			return false
  1675  		}
  1676  		it.Event.Raw = log
  1677  		return true
  1678  
  1679  	case err := <-it.sub.Err():
  1680  		it.done = true
  1681  		it.fail = err
  1682  		return it.Next()
  1683  	}
  1684  }
  1685  
  1686  // Error returns any retrieval or parsing error occurred during filtering.
  1687  func (it *XDCValidatorUploadedKYCIterator) Error() error {
  1688  	return it.fail
  1689  }
  1690  
  1691  // Close terminates the iteration process, releasing any pending underlying
  1692  // resources.
  1693  func (it *XDCValidatorUploadedKYCIterator) Close() error {
  1694  	it.sub.Unsubscribe()
  1695  	return nil
  1696  }
  1697  
  1698  // XDCValidatorUploadedKYC represents a UploadedKYC event raised by the XDCValidator contract.
  1699  type XDCValidatorUploadedKYC struct {
  1700  	Owner   common.Address
  1701  	KycHash string
  1702  	Raw     types.Log // Blockchain specific contextual infos
  1703  }
  1704  
  1705  // FilterUploadedKYC is a free log retrieval operation binding the contract event 0x949360d814b28a3b393a68909efe1fee120ee09cac30f360a0f80ab5415a611a.
  1706  //
  1707  // Solidity: event UploadedKYC(_owner address, kycHash string)
  1708  func (_XDCValidator *XDCValidatorFilterer) FilterUploadedKYC(opts *bind.FilterOpts) (*XDCValidatorUploadedKYCIterator, error) {
  1709  
  1710  	logs, sub, err := _XDCValidator.contract.FilterLogs(opts, "UploadedKYC")
  1711  	if err != nil {
  1712  		return nil, err
  1713  	}
  1714  	return &XDCValidatorUploadedKYCIterator{contract: _XDCValidator.contract, event: "UploadedKYC", logs: logs, sub: sub}, nil
  1715  }
  1716  
  1717  // WatchUploadedKYC is a free log subscription operation binding the contract event 0x949360d814b28a3b393a68909efe1fee120ee09cac30f360a0f80ab5415a611a.
  1718  //
  1719  // Solidity: event UploadedKYC(_owner address, kycHash string)
  1720  func (_XDCValidator *XDCValidatorFilterer) WatchUploadedKYC(opts *bind.WatchOpts, sink chan<- *XDCValidatorUploadedKYC) (event.Subscription, error) {
  1721  
  1722  	logs, sub, err := _XDCValidator.contract.WatchLogs(opts, "UploadedKYC")
  1723  	if err != nil {
  1724  		return nil, err
  1725  	}
  1726  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1727  		defer sub.Unsubscribe()
  1728  		for {
  1729  			select {
  1730  			case log := <-logs:
  1731  				// New log arrived, parse the event and forward to the user
  1732  				event := new(XDCValidatorUploadedKYC)
  1733  				if err := _XDCValidator.contract.UnpackLog(event, "UploadedKYC", log); err != nil {
  1734  					return err
  1735  				}
  1736  				event.Raw = log
  1737  
  1738  				select {
  1739  				case sink <- event:
  1740  				case err := <-sub.Err():
  1741  					return err
  1742  				case <-quit:
  1743  					return nil
  1744  				}
  1745  			case err := <-sub.Err():
  1746  				return err
  1747  			case <-quit:
  1748  				return nil
  1749  			}
  1750  		}
  1751  	}), nil
  1752  }
  1753  
  1754  // XDCValidatorVoteIterator is returned from FilterVote and is used to iterate over the raw logs and unpacked data for Vote events raised by the XDCValidator contract.
  1755  type XDCValidatorVoteIterator struct {
  1756  	Event *XDCValidatorVote // Event containing the contract specifics and raw log
  1757  
  1758  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1759  	event    string              // Event name to use for unpacking event data
  1760  
  1761  	logs chan types.Log        // Log channel receiving the found contract events
  1762  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1763  	done bool                  // Whether the subscription completed delivering logs
  1764  	fail error                 // Occurred error to stop iteration
  1765  }
  1766  
  1767  // Next advances the iterator to the subsequent event, returning whether there
  1768  // are any more events found. In case of a retrieval or parsing error, false is
  1769  // returned and Error() can be queried for the exact failure.
  1770  func (it *XDCValidatorVoteIterator) Next() bool {
  1771  	// If the iterator failed, stop iterating
  1772  	if it.fail != nil {
  1773  		return false
  1774  	}
  1775  	// If the iterator completed, deliver directly whatever's available
  1776  	if it.done {
  1777  		select {
  1778  		case log := <-it.logs:
  1779  			it.Event = new(XDCValidatorVote)
  1780  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1781  				it.fail = err
  1782  				return false
  1783  			}
  1784  			it.Event.Raw = log
  1785  			return true
  1786  
  1787  		default:
  1788  			return false
  1789  		}
  1790  	}
  1791  	// Iterator still in progress, wait for either a data or an error event
  1792  	select {
  1793  	case log := <-it.logs:
  1794  		it.Event = new(XDCValidatorVote)
  1795  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1796  			it.fail = err
  1797  			return false
  1798  		}
  1799  		it.Event.Raw = log
  1800  		return true
  1801  
  1802  	case err := <-it.sub.Err():
  1803  		it.done = true
  1804  		it.fail = err
  1805  		return it.Next()
  1806  	}
  1807  }
  1808  
  1809  // Error returns any retrieval or parsing error occurred during filtering.
  1810  func (it *XDCValidatorVoteIterator) Error() error {
  1811  	return it.fail
  1812  }
  1813  
  1814  // Close terminates the iteration process, releasing any pending underlying
  1815  // resources.
  1816  func (it *XDCValidatorVoteIterator) Close() error {
  1817  	it.sub.Unsubscribe()
  1818  	return nil
  1819  }
  1820  
  1821  // XDCValidatorVote represents a Vote event raised by the XDCValidator contract.
  1822  type XDCValidatorVote struct {
  1823  	Voter     common.Address
  1824  	Candidate common.Address
  1825  	Cap       *big.Int
  1826  	Raw       types.Log // Blockchain specific contextual infos
  1827  }
  1828  
  1829  // FilterVote is a free log retrieval operation binding the contract event 0x66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc.
  1830  //
  1831  // Solidity: event Vote(_voter address, _candidate address, _cap uint256)
  1832  func (_XDCValidator *XDCValidatorFilterer) FilterVote(opts *bind.FilterOpts) (*XDCValidatorVoteIterator, error) {
  1833  
  1834  	logs, sub, err := _XDCValidator.contract.FilterLogs(opts, "Vote")
  1835  	if err != nil {
  1836  		return nil, err
  1837  	}
  1838  	return &XDCValidatorVoteIterator{contract: _XDCValidator.contract, event: "Vote", logs: logs, sub: sub}, nil
  1839  }
  1840  
  1841  // WatchVote is a free log subscription operation binding the contract event 0x66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc.
  1842  //
  1843  // Solidity: event Vote(_voter address, _candidate address, _cap uint256)
  1844  func (_XDCValidator *XDCValidatorFilterer) WatchVote(opts *bind.WatchOpts, sink chan<- *XDCValidatorVote) (event.Subscription, error) {
  1845  
  1846  	logs, sub, err := _XDCValidator.contract.WatchLogs(opts, "Vote")
  1847  	if err != nil {
  1848  		return nil, err
  1849  	}
  1850  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1851  		defer sub.Unsubscribe()
  1852  		for {
  1853  			select {
  1854  			case log := <-logs:
  1855  				// New log arrived, parse the event and forward to the user
  1856  				event := new(XDCValidatorVote)
  1857  				if err := _XDCValidator.contract.UnpackLog(event, "Vote", log); err != nil {
  1858  					return err
  1859  				}
  1860  				event.Raw = log
  1861  
  1862  				select {
  1863  				case sink <- event:
  1864  				case err := <-sub.Err():
  1865  					return err
  1866  				case <-quit:
  1867  					return nil
  1868  				}
  1869  			case err := <-sub.Err():
  1870  				return err
  1871  			case <-quit:
  1872  				return nil
  1873  			}
  1874  		}
  1875  	}), nil
  1876  }
  1877  
  1878  // XDCValidatorWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the XDCValidator contract.
  1879  type XDCValidatorWithdrawIterator struct {
  1880  	Event *XDCValidatorWithdraw // Event containing the contract specifics and raw log
  1881  
  1882  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1883  	event    string              // Event name to use for unpacking event data
  1884  
  1885  	logs chan types.Log        // Log channel receiving the found contract events
  1886  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1887  	done bool                  // Whether the subscription completed delivering logs
  1888  	fail error                 // Occurred error to stop iteration
  1889  }
  1890  
  1891  // Next advances the iterator to the subsequent event, returning whether there
  1892  // are any more events found. In case of a retrieval or parsing error, false is
  1893  // returned and Error() can be queried for the exact failure.
  1894  func (it *XDCValidatorWithdrawIterator) Next() bool {
  1895  	// If the iterator failed, stop iterating
  1896  	if it.fail != nil {
  1897  		return false
  1898  	}
  1899  	// If the iterator completed, deliver directly whatever's available
  1900  	if it.done {
  1901  		select {
  1902  		case log := <-it.logs:
  1903  			it.Event = new(XDCValidatorWithdraw)
  1904  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1905  				it.fail = err
  1906  				return false
  1907  			}
  1908  			it.Event.Raw = log
  1909  			return true
  1910  
  1911  		default:
  1912  			return false
  1913  		}
  1914  	}
  1915  	// Iterator still in progress, wait for either a data or an error event
  1916  	select {
  1917  	case log := <-it.logs:
  1918  		it.Event = new(XDCValidatorWithdraw)
  1919  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1920  			it.fail = err
  1921  			return false
  1922  		}
  1923  		it.Event.Raw = log
  1924  		return true
  1925  
  1926  	case err := <-it.sub.Err():
  1927  		it.done = true
  1928  		it.fail = err
  1929  		return it.Next()
  1930  	}
  1931  }
  1932  
  1933  // Error returns any retrieval or parsing error occurred during filtering.
  1934  func (it *XDCValidatorWithdrawIterator) Error() error {
  1935  	return it.fail
  1936  }
  1937  
  1938  // Close terminates the iteration process, releasing any pending underlying
  1939  // resources.
  1940  func (it *XDCValidatorWithdrawIterator) Close() error {
  1941  	it.sub.Unsubscribe()
  1942  	return nil
  1943  }
  1944  
  1945  // XDCValidatorWithdraw represents a Withdraw event raised by the XDCValidator contract.
  1946  type XDCValidatorWithdraw struct {
  1947  	Owner       common.Address
  1948  	BlockNumber *big.Int
  1949  	Cap         *big.Int
  1950  	Raw         types.Log // Blockchain specific contextual infos
  1951  }
  1952  
  1953  // FilterWithdraw is a free log retrieval operation binding the contract event 0xf279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568.
  1954  //
  1955  // Solidity: event Withdraw(_owner address, _blockNumber uint256, _cap uint256)
  1956  func (_XDCValidator *XDCValidatorFilterer) FilterWithdraw(opts *bind.FilterOpts) (*XDCValidatorWithdrawIterator, error) {
  1957  
  1958  	logs, sub, err := _XDCValidator.contract.FilterLogs(opts, "Withdraw")
  1959  	if err != nil {
  1960  		return nil, err
  1961  	}
  1962  	return &XDCValidatorWithdrawIterator{contract: _XDCValidator.contract, event: "Withdraw", logs: logs, sub: sub}, nil
  1963  }
  1964  
  1965  // WatchWithdraw is a free log subscription operation binding the contract event 0xf279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568.
  1966  //
  1967  // Solidity: event Withdraw(_owner address, _blockNumber uint256, _cap uint256)
  1968  func (_XDCValidator *XDCValidatorFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *XDCValidatorWithdraw) (event.Subscription, error) {
  1969  
  1970  	logs, sub, err := _XDCValidator.contract.WatchLogs(opts, "Withdraw")
  1971  	if err != nil {
  1972  		return nil, err
  1973  	}
  1974  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1975  		defer sub.Unsubscribe()
  1976  		for {
  1977  			select {
  1978  			case log := <-logs:
  1979  				// New log arrived, parse the event and forward to the user
  1980  				event := new(XDCValidatorWithdraw)
  1981  				if err := _XDCValidator.contract.UnpackLog(event, "Withdraw", log); err != nil {
  1982  					return err
  1983  				}
  1984  				event.Raw = log
  1985  
  1986  				select {
  1987  				case sink <- event:
  1988  				case err := <-sub.Err():
  1989  					return err
  1990  				case <-quit:
  1991  					return nil
  1992  				}
  1993  			case err := <-sub.Err():
  1994  				return err
  1995  			case <-quit:
  1996  				return nil
  1997  			}
  1998  		}
  1999  	}), nil
  2000  }