github.com/codingfuture/orig-energi3@v0.8.4/energi/abi/MasternodeTokenV2.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 abi 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 // Reference imports to suppress errors if they are not otherwise used. 19 var ( 20 _ = big.NewInt 21 _ = strings.NewReader 22 _ = ethereum.NotFound 23 _ = abi.U256 24 _ = bind.Bind 25 _ = common.Big1 26 _ = types.BloomLookup 27 _ = event.NewSubscription 28 ) 29 30 // MasternodeTokenV2ABI is the input ABI used to generate the binding from. 31 const MasternodeTokenV2ABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proxy\",\"type\":\"address\"},{\"internalType\":\"contractIGovernedProxy\",\"name\":\"_registry_proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenOwner\",\"type\":\"address\"}],\"name\":\"balanceInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_block\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"depositCollateral\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractIGovernedContract\",\"name\":\"_newImpl\",\"type\":\"address\"}],\"name\":\"destroy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractIGovernedContract\",\"name\":\"_oldImpl\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry_proxy\",\"outputs\":[{\"internalType\":\"contractIGovernedProxy\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"v1storage\",\"outputs\":[{\"internalType\":\"contractStorageMasternodeTokenV1\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawCollateral\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" 32 33 // MasternodeTokenV2Bin is the compiled bytecode used for deploying new contracts. 34 const MasternodeTokenV2Bin = `608060405234801561001057600080fd5b5060405161185a38038061185a8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03841617905560405182908290610067906100f5565b604051809103906000f080158015610083573d6000803e3d6000fd5b50600280546001600160a01b039283166001600160a01b0319918216179091556003805492841692909116919091179055604080516000808252915182917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a350505050610102565b6104208061143a83390190565b611329806101116000396000f3fe60806040526004361061010d5760003560e01c80636112fe2e116100a557806395d89b4111610074578063ce5494bb11610059578063ce5494bb1461046f578063dd62ed3e146104af578063ec556889146104f75761010d565b806395d89b411461045a578063a9059cbb146102405761010d565b80636112fe2e1461038f5780636f758140146103b957806370a08231146103c157806378c7d979146104015761010d565b806323b872dd116100e157806323b872dd146102c15780632d0593051461031157806330016a421461034f578063313ce567146103645761010d565b8062f55d9d1461017457806306fdde03146101b6578063095ea7b31461024057806318160ddd1461029a575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420737570706f7274656400000000000000000000000000000000000000604482015290519081900360640190fd5b34801561018057600080fd5b506101b46004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661050c565b005b3480156101c257600080fd5b506101cb6105b4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102055781810151838201526020016101ed565b50505050905090810190601f1680156102325780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024c57600080fd5b506102866004803603604081101561026357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105ec565b604080519115158252519081900360200190f35b3480156102a657600080fd5b506102af610655565b60408051918252519081900360200190f35b3480156102cd57600080fd5b50610286600480360360608110156102e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356105ec565b34801561031d57600080fd5b5061032661065a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035b57600080fd5b50610326610676565b34801561037057600080fd5b50610379610692565b6040805160ff9092168252519081900360200190f35b34801561039b57600080fd5b506101b4600480360360208110156103b257600080fd5b5035610697565b6101b4610a88565b3480156103cd57600080fd5b506102af600480360360208110156103e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610dc4565b34801561040d57600080fd5b506104416004803603602081101561042457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e6d565b6040805192835260208301919091528051918290030190f35b34801561046657600080fd5b506101cb610f1d565b34801561047b57600080fd5b506101b46004803603602081101561049257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f54565b3480156104bb57600080fd5b506102af600480360360408110156104d257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610fe6565b34801561050357600080fd5b50610326610fee565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b61059b8161100a565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60408051808201909152601581527f4d61737465726e6f646520436f6c6c61746572616c000000000000000000000060208201525b90565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f7420616c6c6f7765640000000000000000000000000000000000000000006044820152905160009181900360640190fd5b303190565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b601290565b6001541561070657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180556000610714611099565b600254604080517f133264e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301529151939450600093919092169163133264e7916024808301926020929190829003018186803b15801561078d57600080fd5b505afa1580156107a1573d6000803e3d6000fd5b505050506040513d60208110156107b757600080fd5b505190508281101561082a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f7420656e6f75676800000000000000000000000000000000000000000000604482015290519081900360640190fd5b829003610836816110c8565b600254604080517fe8a6a28900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590524360448301529151919092169163e8a6a28991606480830192600092919082900301818387803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b50506040805186815290516000935073ffffffffffffffffffffffffffffffffffffffff861692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b15801561098557600080fd5b505afa158015610999573d6000803e3d6000fd5b505050506040513d60208110156109af57600080fd5b5051604080517fcdc7d4ad00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169163cdc7d4ad91602480830192600092919082900301818387803b158015610a2257600080fd5b505af1158015610a36573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff8516925085156108fc02915085906000818181858888f19350505050158015610a7d573d6000803e3d6000fd5b505060006001555050565b60015415610af757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180556000610b05611099565b600254604080517f133264e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301529151939450600093919092169163133264e7916024808301926020929190829003018186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d6020811015610ba857600080fd5b505134019050610bb7816110c8565b600254604080517fe8a6a28900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590524360448301529151919092169163e8a6a28991606480830192600092919082900301818387803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b505060408051348152905173ffffffffffffffffffffffffffffffffffffffff86169350600092507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0657600080fd5b505afa158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b5051604080517fcdc7d4ad00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169163cdc7d4ad91602480830192600092919082900301818387803b158015610da357600080fd5b505af1158015610db7573d6000803e3d6000fd5b5050600060015550505050565b600254604080517f133264e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151600093929092169163133264e791602480820192602092909190829003018186803b158015610e3b57600080fd5b505afa158015610e4f573d6000803e3d6000fd5b505050506040513d6020811015610e6557600080fd5b505192915050565b600254604080517f27e235e300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152825160009485949216926327e235e3926024808301939192829003018186803b158015610ee057600080fd5b505afa158015610ef4573d6000803e3d6000fd5b505050506040513d6040811015610f0a57600080fd5b5080516020909101519094909350915050565b60408051808201909152600481527f4d4e524700000000000000000000000000000000000000000000000000000000602082015290565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610fe3816111b9565b50565b600092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600254604080517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152915191909216916313af403591602480830192600092919082900301818387803b15801561107e57600080fd5b505af1158015611092573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314156110c15750326105e9565b50336105e9565b69152d02c7e14af680000081111561114157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f546f6f206d756368000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b683635c9adc5dea00000810615610fe357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f742061206d756c7469706c65000000000000000000000000000000000000604482015290519081900360640190fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341c0e1b56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561122357600080fd5b505af1158015611237573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16632d0593056040518163ffffffff1660e01b815260040160206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d60208110156112ab57600080fd5b5051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790555056fea265627a7a723158205905081457b9ec909f2e836a5604261e77031781d35ade3d39d9962a7846397c64736f6c634300051000326080604052600080546001600160a01b031916331790556103fb806100256000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806327e235e31161005057806327e235e3146100e657806341c0e1b514610132578063e8a6a2891461013a57610067565b8063133264e71461006c57806313af4035146100b1575b600080fd5b61009f6004803603602081101561008257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610179565b60408051918252519081900360200190f35b6100e4600480360360208110156100c757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101a1565b005b610119600480360360208110156100fc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661026e565b6040805192835260208301919091528051918290030190f35b6100e4610287565b6100e46004803603606081101561015057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060400135610310565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff16331461022757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6001602081905260009182526040909120805491015482565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b33ff5b60005473ffffffffffffffffffffffffffffffffffffffff16331461039657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600160208190526040909120918255015556fea265627a7a723158204f7087aac63529a55dabfac7688c5f4cd0d61e297f1ec358aa8ae46e937743c964736f6c63430005100032` 35 36 // DeployMasternodeTokenV2 deploys a new Ethereum contract, binding an instance of MasternodeTokenV2 to it. 37 func DeployMasternodeTokenV2(auth *bind.TransactOpts, backend bind.ContractBackend, _proxy common.Address, _registry_proxy common.Address) (common.Address, *types.Transaction, *MasternodeTokenV2, error) { 38 parsed, err := abi.JSON(strings.NewReader(MasternodeTokenV2ABI)) 39 if err != nil { 40 return common.Address{}, nil, nil, err 41 } 42 address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(MasternodeTokenV2Bin), backend, _proxy, _registry_proxy) 43 if err != nil { 44 return common.Address{}, nil, nil, err 45 } 46 return address, tx, &MasternodeTokenV2{MasternodeTokenV2Caller: MasternodeTokenV2Caller{contract: contract}, MasternodeTokenV2Transactor: MasternodeTokenV2Transactor{contract: contract}, MasternodeTokenV2Filterer: MasternodeTokenV2Filterer{contract: contract}}, nil 47 } 48 49 // MasternodeTokenV2Bin is the compiled bytecode of contract after deployment. 50 const MasternodeTokenV2RuntimeBin = `60806040526004361061010d5760003560e01c80636112fe2e116100a557806395d89b4111610074578063ce5494bb11610059578063ce5494bb1461046f578063dd62ed3e146104af578063ec556889146104f75761010d565b806395d89b411461045a578063a9059cbb146102405761010d565b80636112fe2e1461038f5780636f758140146103b957806370a08231146103c157806378c7d979146104015761010d565b806323b872dd116100e157806323b872dd146102c15780632d0593051461031157806330016a421461034f578063313ce567146103645761010d565b8062f55d9d1461017457806306fdde03146101b6578063095ea7b31461024057806318160ddd1461029a575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420737570706f7274656400000000000000000000000000000000000000604482015290519081900360640190fd5b34801561018057600080fd5b506101b46004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661050c565b005b3480156101c257600080fd5b506101cb6105b4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102055781810151838201526020016101ed565b50505050905090810190601f1680156102325780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024c57600080fd5b506102866004803603604081101561026357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105ec565b604080519115158252519081900360200190f35b3480156102a657600080fd5b506102af610655565b60408051918252519081900360200190f35b3480156102cd57600080fd5b50610286600480360360608110156102e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356105ec565b34801561031d57600080fd5b5061032661065a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035b57600080fd5b50610326610676565b34801561037057600080fd5b50610379610692565b6040805160ff9092168252519081900360200190f35b34801561039b57600080fd5b506101b4600480360360208110156103b257600080fd5b5035610697565b6101b4610a88565b3480156103cd57600080fd5b506102af600480360360208110156103e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610dc4565b34801561040d57600080fd5b506104416004803603602081101561042457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e6d565b6040805192835260208301919091528051918290030190f35b34801561046657600080fd5b506101cb610f1d565b34801561047b57600080fd5b506101b46004803603602081101561049257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f54565b3480156104bb57600080fd5b506102af600480360360408110156104d257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610fe6565b34801561050357600080fd5b50610326610fee565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b61059b8161100a565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60408051808201909152601581527f4d61737465726e6f646520436f6c6c61746572616c000000000000000000000060208201525b90565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f7420616c6c6f7765640000000000000000000000000000000000000000006044820152905160009181900360640190fd5b303190565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b601290565b6001541561070657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180556000610714611099565b600254604080517f133264e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301529151939450600093919092169163133264e7916024808301926020929190829003018186803b15801561078d57600080fd5b505afa1580156107a1573d6000803e3d6000fd5b505050506040513d60208110156107b757600080fd5b505190508281101561082a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f7420656e6f75676800000000000000000000000000000000000000000000604482015290519081900360640190fd5b829003610836816110c8565b600254604080517fe8a6a28900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590524360448301529151919092169163e8a6a28991606480830192600092919082900301818387803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b50506040805186815290516000935073ffffffffffffffffffffffffffffffffffffffff861692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b15801561098557600080fd5b505afa158015610999573d6000803e3d6000fd5b505050506040513d60208110156109af57600080fd5b5051604080517fcdc7d4ad00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169163cdc7d4ad91602480830192600092919082900301818387803b158015610a2257600080fd5b505af1158015610a36573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff8516925085156108fc02915085906000818181858888f19350505050158015610a7d573d6000803e3d6000fd5b505060006001555050565b60015415610af757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180556000610b05611099565b600254604080517f133264e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301529151939450600093919092169163133264e7916024808301926020929190829003018186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d6020811015610ba857600080fd5b505134019050610bb7816110c8565b600254604080517fe8a6a28900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590524360448301529151919092169163e8a6a28991606480830192600092919082900301818387803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b505060408051348152905173ffffffffffffffffffffffffffffffffffffffff86169350600092507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0657600080fd5b505afa158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b5051604080517fcdc7d4ad00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169163cdc7d4ad91602480830192600092919082900301818387803b158015610da357600080fd5b505af1158015610db7573d6000803e3d6000fd5b5050600060015550505050565b600254604080517f133264e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151600093929092169163133264e791602480820192602092909190829003018186803b158015610e3b57600080fd5b505afa158015610e4f573d6000803e3d6000fd5b505050506040513d6020811015610e6557600080fd5b505192915050565b600254604080517f27e235e300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152825160009485949216926327e235e3926024808301939192829003018186803b158015610ee057600080fd5b505afa158015610ef4573d6000803e3d6000fd5b505050506040513d6040811015610f0a57600080fd5b5080516020909101519094909350915050565b60408051808201909152600481527f4d4e524700000000000000000000000000000000000000000000000000000000602082015290565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610fe3816111b9565b50565b600092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600254604080517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152915191909216916313af403591602480830192600092919082900301818387803b15801561107e57600080fd5b505af1158015611092573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314156110c15750326105e9565b50336105e9565b69152d02c7e14af680000081111561114157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f546f6f206d756368000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b683635c9adc5dea00000810615610fe357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f742061206d756c7469706c65000000000000000000000000000000000000604482015290519081900360640190fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341c0e1b56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561122357600080fd5b505af1158015611237573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16632d0593056040518163ffffffff1660e01b815260040160206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d60208110156112ab57600080fd5b5051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790555056fea265627a7a723158205905081457b9ec909f2e836a5604261e77031781d35ade3d39d9962a7846397c64736f6c63430005100032` 51 52 // MasternodeTokenV2 is an auto generated Go binding around an Ethereum contract. 53 type MasternodeTokenV2 struct { 54 MasternodeTokenV2Caller // Read-only binding to the contract 55 MasternodeTokenV2Transactor // Write-only binding to the contract 56 MasternodeTokenV2Filterer // Log filterer for contract events 57 } 58 59 // MasternodeTokenV2Caller is an auto generated read-only Go binding around an Ethereum contract. 60 type MasternodeTokenV2Caller struct { 61 contract *bind.BoundContract // Generic contract wrapper for the low level calls 62 } 63 64 // MasternodeTokenV2Transactor is an auto generated write-only Go binding around an Ethereum contract. 65 type MasternodeTokenV2Transactor struct { 66 contract *bind.BoundContract // Generic contract wrapper for the low level calls 67 } 68 69 // MasternodeTokenV2Filterer is an auto generated log filtering Go binding around an Ethereum contract events. 70 type MasternodeTokenV2Filterer struct { 71 contract *bind.BoundContract // Generic contract wrapper for the low level calls 72 } 73 74 // MasternodeTokenV2Session is an auto generated Go binding around an Ethereum contract, 75 // with pre-set call and transact options. 76 type MasternodeTokenV2Session struct { 77 Contract *MasternodeTokenV2 // Generic contract binding to set the session for 78 CallOpts bind.CallOpts // Call options to use throughout this session 79 TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session 80 } 81 82 // MasternodeTokenV2CallerSession is an auto generated read-only Go binding around an Ethereum contract, 83 // with pre-set call options. 84 type MasternodeTokenV2CallerSession struct { 85 Contract *MasternodeTokenV2Caller // Generic contract caller binding to set the session for 86 CallOpts bind.CallOpts // Call options to use throughout this session 87 } 88 89 // MasternodeTokenV2TransactorSession is an auto generated write-only Go binding around an Ethereum contract, 90 // with pre-set transact options. 91 type MasternodeTokenV2TransactorSession struct { 92 Contract *MasternodeTokenV2Transactor // Generic contract transactor binding to set the session for 93 TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session 94 } 95 96 // MasternodeTokenV2Raw is an auto generated low-level Go binding around an Ethereum contract. 97 type MasternodeTokenV2Raw struct { 98 Contract *MasternodeTokenV2 // Generic contract binding to access the raw methods on 99 } 100 101 // MasternodeTokenV2CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. 102 type MasternodeTokenV2CallerRaw struct { 103 Contract *MasternodeTokenV2Caller // Generic read-only contract binding to access the raw methods on 104 } 105 106 // MasternodeTokenV2TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. 107 type MasternodeTokenV2TransactorRaw struct { 108 Contract *MasternodeTokenV2Transactor // Generic write-only contract binding to access the raw methods on 109 } 110 111 // NewMasternodeTokenV2 creates a new instance of MasternodeTokenV2, bound to a specific deployed contract. 112 func NewMasternodeTokenV2(address common.Address, backend bind.ContractBackend) (*MasternodeTokenV2, error) { 113 contract, err := bindMasternodeTokenV2(address, backend, backend, backend) 114 if err != nil { 115 return nil, err 116 } 117 return &MasternodeTokenV2{MasternodeTokenV2Caller: MasternodeTokenV2Caller{contract: contract}, MasternodeTokenV2Transactor: MasternodeTokenV2Transactor{contract: contract}, MasternodeTokenV2Filterer: MasternodeTokenV2Filterer{contract: contract}}, nil 118 } 119 120 // NewMasternodeTokenV2Caller creates a new read-only instance of MasternodeTokenV2, bound to a specific deployed contract. 121 func NewMasternodeTokenV2Caller(address common.Address, caller bind.ContractCaller) (*MasternodeTokenV2Caller, error) { 122 contract, err := bindMasternodeTokenV2(address, caller, nil, nil) 123 if err != nil { 124 return nil, err 125 } 126 return &MasternodeTokenV2Caller{contract: contract}, nil 127 } 128 129 // NewMasternodeTokenV2Transactor creates a new write-only instance of MasternodeTokenV2, bound to a specific deployed contract. 130 func NewMasternodeTokenV2Transactor(address common.Address, transactor bind.ContractTransactor) (*MasternodeTokenV2Transactor, error) { 131 contract, err := bindMasternodeTokenV2(address, nil, transactor, nil) 132 if err != nil { 133 return nil, err 134 } 135 return &MasternodeTokenV2Transactor{contract: contract}, nil 136 } 137 138 // NewMasternodeTokenV2Filterer creates a new log filterer instance of MasternodeTokenV2, bound to a specific deployed contract. 139 func NewMasternodeTokenV2Filterer(address common.Address, filterer bind.ContractFilterer) (*MasternodeTokenV2Filterer, error) { 140 contract, err := bindMasternodeTokenV2(address, nil, nil, filterer) 141 if err != nil { 142 return nil, err 143 } 144 return &MasternodeTokenV2Filterer{contract: contract}, nil 145 } 146 147 // bindMasternodeTokenV2 binds a generic wrapper to an already deployed contract. 148 func bindMasternodeTokenV2(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { 149 parsed, err := abi.JSON(strings.NewReader(MasternodeTokenV2ABI)) 150 if err != nil { 151 return nil, err 152 } 153 return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil 154 } 155 156 // Call invokes the (constant) contract method with params as input values and 157 // sets the output to result. The result type might be a single field for simple 158 // returns, a slice of interfaces for anonymous returns and a struct for named 159 // returns. 160 func (_MasternodeTokenV2 *MasternodeTokenV2Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { 161 return _MasternodeTokenV2.Contract.MasternodeTokenV2Caller.contract.Call(opts, result, method, params...) 162 } 163 164 // Transfer initiates a plain transaction to move funds to the contract, calling 165 // its default method if one is available. 166 func (_MasternodeTokenV2 *MasternodeTokenV2Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { 167 return _MasternodeTokenV2.Contract.MasternodeTokenV2Transactor.contract.Transfer(opts) 168 } 169 170 // Transact invokes the (paid) contract method with params as input values. 171 func (_MasternodeTokenV2 *MasternodeTokenV2Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { 172 return _MasternodeTokenV2.Contract.MasternodeTokenV2Transactor.contract.Transact(opts, method, params...) 173 } 174 175 // Call invokes the (constant) contract method with params as input values and 176 // sets the output to result. The result type might be a single field for simple 177 // returns, a slice of interfaces for anonymous returns and a struct for named 178 // returns. 179 func (_MasternodeTokenV2 *MasternodeTokenV2CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { 180 return _MasternodeTokenV2.Contract.contract.Call(opts, result, method, params...) 181 } 182 183 // Transfer initiates a plain transaction to move funds to the contract, calling 184 // its default method if one is available. 185 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { 186 return _MasternodeTokenV2.Contract.contract.Transfer(opts) 187 } 188 189 // Transact invokes the (paid) contract method with params as input values. 190 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { 191 return _MasternodeTokenV2.Contract.contract.Transact(opts, method, params...) 192 } 193 194 // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. 195 // 196 // Solidity: function allowance(address , address ) constant returns(uint256) 197 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { 198 var ( 199 ret0 = new(*big.Int) 200 ) 201 out := ret0 202 err := _MasternodeTokenV2.contract.Call(opts, out, "allowance", arg0, arg1) 203 return *ret0, err 204 } 205 206 // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. 207 // 208 // Solidity: function allowance(address , address ) constant returns(uint256) 209 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { 210 return _MasternodeTokenV2.Contract.Allowance(&_MasternodeTokenV2.CallOpts, arg0, arg1) 211 } 212 213 // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. 214 // 215 // Solidity: function allowance(address , address ) constant returns(uint256) 216 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { 217 return _MasternodeTokenV2.Contract.Allowance(&_MasternodeTokenV2.CallOpts, arg0, arg1) 218 } 219 220 // BalanceInfo is a free data retrieval call binding the contract method 0x78c7d979. 221 // 222 // Solidity: function balanceInfo(address _tokenOwner) constant returns(uint256 balance, uint256 last_block) 223 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) BalanceInfo(opts *bind.CallOpts, _tokenOwner common.Address) (struct { 224 Balance *big.Int 225 LastBlock *big.Int 226 }, error) { 227 ret := new(struct { 228 Balance *big.Int 229 LastBlock *big.Int 230 }) 231 out := ret 232 err := _MasternodeTokenV2.contract.Call(opts, out, "balanceInfo", _tokenOwner) 233 return *ret, err 234 } 235 236 // BalanceInfo is a free data retrieval call binding the contract method 0x78c7d979. 237 // 238 // Solidity: function balanceInfo(address _tokenOwner) constant returns(uint256 balance, uint256 last_block) 239 func (_MasternodeTokenV2 *MasternodeTokenV2Session) BalanceInfo(_tokenOwner common.Address) (struct { 240 Balance *big.Int 241 LastBlock *big.Int 242 }, error) { 243 return _MasternodeTokenV2.Contract.BalanceInfo(&_MasternodeTokenV2.CallOpts, _tokenOwner) 244 } 245 246 // BalanceInfo is a free data retrieval call binding the contract method 0x78c7d979. 247 // 248 // Solidity: function balanceInfo(address _tokenOwner) constant returns(uint256 balance, uint256 last_block) 249 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) BalanceInfo(_tokenOwner common.Address) (struct { 250 Balance *big.Int 251 LastBlock *big.Int 252 }, error) { 253 return _MasternodeTokenV2.Contract.BalanceInfo(&_MasternodeTokenV2.CallOpts, _tokenOwner) 254 } 255 256 // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. 257 // 258 // Solidity: function balanceOf(address _owner) constant returns(uint256) 259 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { 260 var ( 261 ret0 = new(*big.Int) 262 ) 263 out := ret0 264 err := _MasternodeTokenV2.contract.Call(opts, out, "balanceOf", _owner) 265 return *ret0, err 266 } 267 268 // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. 269 // 270 // Solidity: function balanceOf(address _owner) constant returns(uint256) 271 func (_MasternodeTokenV2 *MasternodeTokenV2Session) BalanceOf(_owner common.Address) (*big.Int, error) { 272 return _MasternodeTokenV2.Contract.BalanceOf(&_MasternodeTokenV2.CallOpts, _owner) 273 } 274 275 // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. 276 // 277 // Solidity: function balanceOf(address _owner) constant returns(uint256) 278 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) BalanceOf(_owner common.Address) (*big.Int, error) { 279 return _MasternodeTokenV2.Contract.BalanceOf(&_MasternodeTokenV2.CallOpts, _owner) 280 } 281 282 // Decimals is a free data retrieval call binding the contract method 0x313ce567. 283 // 284 // Solidity: function decimals() constant returns(uint8) 285 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) Decimals(opts *bind.CallOpts) (uint8, error) { 286 var ( 287 ret0 = new(uint8) 288 ) 289 out := ret0 290 err := _MasternodeTokenV2.contract.Call(opts, out, "decimals") 291 return *ret0, err 292 } 293 294 // Decimals is a free data retrieval call binding the contract method 0x313ce567. 295 // 296 // Solidity: function decimals() constant returns(uint8) 297 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Decimals() (uint8, error) { 298 return _MasternodeTokenV2.Contract.Decimals(&_MasternodeTokenV2.CallOpts) 299 } 300 301 // Decimals is a free data retrieval call binding the contract method 0x313ce567. 302 // 303 // Solidity: function decimals() constant returns(uint8) 304 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) Decimals() (uint8, error) { 305 return _MasternodeTokenV2.Contract.Decimals(&_MasternodeTokenV2.CallOpts) 306 } 307 308 // Name is a free data retrieval call binding the contract method 0x06fdde03. 309 // 310 // Solidity: function name() constant returns(string) 311 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) Name(opts *bind.CallOpts) (string, error) { 312 var ( 313 ret0 = new(string) 314 ) 315 out := ret0 316 err := _MasternodeTokenV2.contract.Call(opts, out, "name") 317 return *ret0, err 318 } 319 320 // Name is a free data retrieval call binding the contract method 0x06fdde03. 321 // 322 // Solidity: function name() constant returns(string) 323 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Name() (string, error) { 324 return _MasternodeTokenV2.Contract.Name(&_MasternodeTokenV2.CallOpts) 325 } 326 327 // Name is a free data retrieval call binding the contract method 0x06fdde03. 328 // 329 // Solidity: function name() constant returns(string) 330 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) Name() (string, error) { 331 return _MasternodeTokenV2.Contract.Name(&_MasternodeTokenV2.CallOpts) 332 } 333 334 // Proxy is a free data retrieval call binding the contract method 0xec556889. 335 // 336 // Solidity: function proxy() constant returns(address) 337 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) Proxy(opts *bind.CallOpts) (common.Address, error) { 338 var ( 339 ret0 = new(common.Address) 340 ) 341 out := ret0 342 err := _MasternodeTokenV2.contract.Call(opts, out, "proxy") 343 return *ret0, err 344 } 345 346 // Proxy is a free data retrieval call binding the contract method 0xec556889. 347 // 348 // Solidity: function proxy() constant returns(address) 349 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Proxy() (common.Address, error) { 350 return _MasternodeTokenV2.Contract.Proxy(&_MasternodeTokenV2.CallOpts) 351 } 352 353 // Proxy is a free data retrieval call binding the contract method 0xec556889. 354 // 355 // Solidity: function proxy() constant returns(address) 356 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) Proxy() (common.Address, error) { 357 return _MasternodeTokenV2.Contract.Proxy(&_MasternodeTokenV2.CallOpts) 358 } 359 360 // RegistryProxy is a free data retrieval call binding the contract method 0x30016a42. 361 // 362 // Solidity: function registry_proxy() constant returns(address) 363 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) RegistryProxy(opts *bind.CallOpts) (common.Address, error) { 364 var ( 365 ret0 = new(common.Address) 366 ) 367 out := ret0 368 err := _MasternodeTokenV2.contract.Call(opts, out, "registry_proxy") 369 return *ret0, err 370 } 371 372 // RegistryProxy is a free data retrieval call binding the contract method 0x30016a42. 373 // 374 // Solidity: function registry_proxy() constant returns(address) 375 func (_MasternodeTokenV2 *MasternodeTokenV2Session) RegistryProxy() (common.Address, error) { 376 return _MasternodeTokenV2.Contract.RegistryProxy(&_MasternodeTokenV2.CallOpts) 377 } 378 379 // RegistryProxy is a free data retrieval call binding the contract method 0x30016a42. 380 // 381 // Solidity: function registry_proxy() constant returns(address) 382 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) RegistryProxy() (common.Address, error) { 383 return _MasternodeTokenV2.Contract.RegistryProxy(&_MasternodeTokenV2.CallOpts) 384 } 385 386 // Symbol is a free data retrieval call binding the contract method 0x95d89b41. 387 // 388 // Solidity: function symbol() constant returns(string) 389 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) Symbol(opts *bind.CallOpts) (string, error) { 390 var ( 391 ret0 = new(string) 392 ) 393 out := ret0 394 err := _MasternodeTokenV2.contract.Call(opts, out, "symbol") 395 return *ret0, err 396 } 397 398 // Symbol is a free data retrieval call binding the contract method 0x95d89b41. 399 // 400 // Solidity: function symbol() constant returns(string) 401 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Symbol() (string, error) { 402 return _MasternodeTokenV2.Contract.Symbol(&_MasternodeTokenV2.CallOpts) 403 } 404 405 // Symbol is a free data retrieval call binding the contract method 0x95d89b41. 406 // 407 // Solidity: function symbol() constant returns(string) 408 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) Symbol() (string, error) { 409 return _MasternodeTokenV2.Contract.Symbol(&_MasternodeTokenV2.CallOpts) 410 } 411 412 // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. 413 // 414 // Solidity: function totalSupply() constant returns(uint256) 415 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { 416 var ( 417 ret0 = new(*big.Int) 418 ) 419 out := ret0 420 err := _MasternodeTokenV2.contract.Call(opts, out, "totalSupply") 421 return *ret0, err 422 } 423 424 // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. 425 // 426 // Solidity: function totalSupply() constant returns(uint256) 427 func (_MasternodeTokenV2 *MasternodeTokenV2Session) TotalSupply() (*big.Int, error) { 428 return _MasternodeTokenV2.Contract.TotalSupply(&_MasternodeTokenV2.CallOpts) 429 } 430 431 // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. 432 // 433 // Solidity: function totalSupply() constant returns(uint256) 434 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) TotalSupply() (*big.Int, error) { 435 return _MasternodeTokenV2.Contract.TotalSupply(&_MasternodeTokenV2.CallOpts) 436 } 437 438 // V1storage is a free data retrieval call binding the contract method 0x2d059305. 439 // 440 // Solidity: function v1storage() constant returns(address) 441 func (_MasternodeTokenV2 *MasternodeTokenV2Caller) V1storage(opts *bind.CallOpts) (common.Address, error) { 442 var ( 443 ret0 = new(common.Address) 444 ) 445 out := ret0 446 err := _MasternodeTokenV2.contract.Call(opts, out, "v1storage") 447 return *ret0, err 448 } 449 450 // V1storage is a free data retrieval call binding the contract method 0x2d059305. 451 // 452 // Solidity: function v1storage() constant returns(address) 453 func (_MasternodeTokenV2 *MasternodeTokenV2Session) V1storage() (common.Address, error) { 454 return _MasternodeTokenV2.Contract.V1storage(&_MasternodeTokenV2.CallOpts) 455 } 456 457 // V1storage is a free data retrieval call binding the contract method 0x2d059305. 458 // 459 // Solidity: function v1storage() constant returns(address) 460 func (_MasternodeTokenV2 *MasternodeTokenV2CallerSession) V1storage() (common.Address, error) { 461 return _MasternodeTokenV2.Contract.V1storage(&_MasternodeTokenV2.CallOpts) 462 } 463 464 // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. 465 // 466 // Solidity: function approve(address , uint256 ) returns(bool) 467 func (_MasternodeTokenV2 *MasternodeTokenV2Transactor) Approve(opts *bind.TransactOpts, arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { 468 return _MasternodeTokenV2.contract.Transact(opts, "approve", arg0, arg1) 469 } 470 471 // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. 472 // 473 // Solidity: function approve(address , uint256 ) returns(bool) 474 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Approve(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { 475 return _MasternodeTokenV2.Contract.Approve(&_MasternodeTokenV2.TransactOpts, arg0, arg1) 476 } 477 478 // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. 479 // 480 // Solidity: function approve(address , uint256 ) returns(bool) 481 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorSession) Approve(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { 482 return _MasternodeTokenV2.Contract.Approve(&_MasternodeTokenV2.TransactOpts, arg0, arg1) 483 } 484 485 // DepositCollateral is a paid mutator transaction binding the contract method 0x6f758140. 486 // 487 // Solidity: function depositCollateral() returns() 488 func (_MasternodeTokenV2 *MasternodeTokenV2Transactor) DepositCollateral(opts *bind.TransactOpts) (*types.Transaction, error) { 489 return _MasternodeTokenV2.contract.Transact(opts, "depositCollateral") 490 } 491 492 // DepositCollateral is a paid mutator transaction binding the contract method 0x6f758140. 493 // 494 // Solidity: function depositCollateral() returns() 495 func (_MasternodeTokenV2 *MasternodeTokenV2Session) DepositCollateral() (*types.Transaction, error) { 496 return _MasternodeTokenV2.Contract.DepositCollateral(&_MasternodeTokenV2.TransactOpts) 497 } 498 499 // DepositCollateral is a paid mutator transaction binding the contract method 0x6f758140. 500 // 501 // Solidity: function depositCollateral() returns() 502 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorSession) DepositCollateral() (*types.Transaction, error) { 503 return _MasternodeTokenV2.Contract.DepositCollateral(&_MasternodeTokenV2.TransactOpts) 504 } 505 506 // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d. 507 // 508 // Solidity: function destroy(address _newImpl) returns() 509 func (_MasternodeTokenV2 *MasternodeTokenV2Transactor) Destroy(opts *bind.TransactOpts, _newImpl common.Address) (*types.Transaction, error) { 510 return _MasternodeTokenV2.contract.Transact(opts, "destroy", _newImpl) 511 } 512 513 // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d. 514 // 515 // Solidity: function destroy(address _newImpl) returns() 516 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Destroy(_newImpl common.Address) (*types.Transaction, error) { 517 return _MasternodeTokenV2.Contract.Destroy(&_MasternodeTokenV2.TransactOpts, _newImpl) 518 } 519 520 // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d. 521 // 522 // Solidity: function destroy(address _newImpl) returns() 523 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorSession) Destroy(_newImpl common.Address) (*types.Transaction, error) { 524 return _MasternodeTokenV2.Contract.Destroy(&_MasternodeTokenV2.TransactOpts, _newImpl) 525 } 526 527 // Migrate is a paid mutator transaction binding the contract method 0xce5494bb. 528 // 529 // Solidity: function migrate(address _oldImpl) returns() 530 func (_MasternodeTokenV2 *MasternodeTokenV2Transactor) Migrate(opts *bind.TransactOpts, _oldImpl common.Address) (*types.Transaction, error) { 531 return _MasternodeTokenV2.contract.Transact(opts, "migrate", _oldImpl) 532 } 533 534 // Migrate is a paid mutator transaction binding the contract method 0xce5494bb. 535 // 536 // Solidity: function migrate(address _oldImpl) returns() 537 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Migrate(_oldImpl common.Address) (*types.Transaction, error) { 538 return _MasternodeTokenV2.Contract.Migrate(&_MasternodeTokenV2.TransactOpts, _oldImpl) 539 } 540 541 // Migrate is a paid mutator transaction binding the contract method 0xce5494bb. 542 // 543 // Solidity: function migrate(address _oldImpl) returns() 544 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorSession) Migrate(_oldImpl common.Address) (*types.Transaction, error) { 545 return _MasternodeTokenV2.Contract.Migrate(&_MasternodeTokenV2.TransactOpts, _oldImpl) 546 } 547 548 // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. 549 // 550 // Solidity: function transfer(address , uint256 ) returns(bool) 551 func (_MasternodeTokenV2 *MasternodeTokenV2Transactor) Transfer(opts *bind.TransactOpts, arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { 552 return _MasternodeTokenV2.contract.Transact(opts, "transfer", arg0, arg1) 553 } 554 555 // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. 556 // 557 // Solidity: function transfer(address , uint256 ) returns(bool) 558 func (_MasternodeTokenV2 *MasternodeTokenV2Session) Transfer(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { 559 return _MasternodeTokenV2.Contract.Transfer(&_MasternodeTokenV2.TransactOpts, arg0, arg1) 560 } 561 562 // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. 563 // 564 // Solidity: function transfer(address , uint256 ) returns(bool) 565 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorSession) Transfer(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { 566 return _MasternodeTokenV2.Contract.Transfer(&_MasternodeTokenV2.TransactOpts, arg0, arg1) 567 } 568 569 // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. 570 // 571 // Solidity: function transferFrom(address , address , uint256 ) returns(bool) 572 func (_MasternodeTokenV2 *MasternodeTokenV2Transactor) TransferFrom(opts *bind.TransactOpts, arg0 common.Address, arg1 common.Address, arg2 *big.Int) (*types.Transaction, error) { 573 return _MasternodeTokenV2.contract.Transact(opts, "transferFrom", arg0, arg1, arg2) 574 } 575 576 // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. 577 // 578 // Solidity: function transferFrom(address , address , uint256 ) returns(bool) 579 func (_MasternodeTokenV2 *MasternodeTokenV2Session) TransferFrom(arg0 common.Address, arg1 common.Address, arg2 *big.Int) (*types.Transaction, error) { 580 return _MasternodeTokenV2.Contract.TransferFrom(&_MasternodeTokenV2.TransactOpts, arg0, arg1, arg2) 581 } 582 583 // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. 584 // 585 // Solidity: function transferFrom(address , address , uint256 ) returns(bool) 586 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorSession) TransferFrom(arg0 common.Address, arg1 common.Address, arg2 *big.Int) (*types.Transaction, error) { 587 return _MasternodeTokenV2.Contract.TransferFrom(&_MasternodeTokenV2.TransactOpts, arg0, arg1, arg2) 588 } 589 590 // WithdrawCollateral is a paid mutator transaction binding the contract method 0x6112fe2e. 591 // 592 // Solidity: function withdrawCollateral(uint256 _amount) returns() 593 func (_MasternodeTokenV2 *MasternodeTokenV2Transactor) WithdrawCollateral(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { 594 return _MasternodeTokenV2.contract.Transact(opts, "withdrawCollateral", _amount) 595 } 596 597 // WithdrawCollateral is a paid mutator transaction binding the contract method 0x6112fe2e. 598 // 599 // Solidity: function withdrawCollateral(uint256 _amount) returns() 600 func (_MasternodeTokenV2 *MasternodeTokenV2Session) WithdrawCollateral(_amount *big.Int) (*types.Transaction, error) { 601 return _MasternodeTokenV2.Contract.WithdrawCollateral(&_MasternodeTokenV2.TransactOpts, _amount) 602 } 603 604 // WithdrawCollateral is a paid mutator transaction binding the contract method 0x6112fe2e. 605 // 606 // Solidity: function withdrawCollateral(uint256 _amount) returns() 607 func (_MasternodeTokenV2 *MasternodeTokenV2TransactorSession) WithdrawCollateral(_amount *big.Int) (*types.Transaction, error) { 608 return _MasternodeTokenV2.Contract.WithdrawCollateral(&_MasternodeTokenV2.TransactOpts, _amount) 609 } 610 611 // MasternodeTokenV2ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the MasternodeTokenV2 contract. 612 type MasternodeTokenV2ApprovalIterator struct { 613 Event *MasternodeTokenV2Approval // Event containing the contract specifics and raw log 614 615 contract *bind.BoundContract // Generic contract to use for unpacking event data 616 event string // Event name to use for unpacking event data 617 618 logs chan types.Log // Log channel receiving the found contract events 619 sub ethereum.Subscription // Subscription for errors, completion and termination 620 done bool // Whether the subscription completed delivering logs 621 fail error // Occurred error to stop iteration 622 } 623 624 // Next advances the iterator to the subsequent event, returning whether there 625 // are any more events found. In case of a retrieval or parsing error, false is 626 // returned and Error() can be queried for the exact failure. 627 func (it *MasternodeTokenV2ApprovalIterator) Next() bool { 628 // If the iterator failed, stop iterating 629 if it.fail != nil { 630 return false 631 } 632 // If the iterator completed, deliver directly whatever's available 633 if it.done { 634 select { 635 case log := <-it.logs: 636 it.Event = new(MasternodeTokenV2Approval) 637 if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { 638 it.fail = err 639 return false 640 } 641 it.Event.Raw = log 642 return true 643 644 default: 645 return false 646 } 647 } 648 // Iterator still in progress, wait for either a data or an error event 649 select { 650 case log := <-it.logs: 651 it.Event = new(MasternodeTokenV2Approval) 652 if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { 653 it.fail = err 654 return false 655 } 656 it.Event.Raw = log 657 return true 658 659 case err := <-it.sub.Err(): 660 it.done = true 661 it.fail = err 662 return it.Next() 663 } 664 } 665 666 // Error returns any retrieval or parsing error occurred during filtering. 667 func (it *MasternodeTokenV2ApprovalIterator) Error() error { 668 return it.fail 669 } 670 671 // Close terminates the iteration process, releasing any pending underlying 672 // resources. 673 func (it *MasternodeTokenV2ApprovalIterator) Close() error { 674 it.sub.Unsubscribe() 675 return nil 676 } 677 678 // MasternodeTokenV2Approval represents a Approval event raised by the MasternodeTokenV2 contract. 679 type MasternodeTokenV2Approval struct { 680 Owner common.Address 681 Spender common.Address 682 Value *big.Int 683 Raw types.Log // Blockchain specific contextual infos 684 } 685 686 // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. 687 // 688 // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) 689 func (_MasternodeTokenV2 *MasternodeTokenV2Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*MasternodeTokenV2ApprovalIterator, error) { 690 691 var ownerRule []interface{} 692 for _, ownerItem := range owner { 693 ownerRule = append(ownerRule, ownerItem) 694 } 695 var spenderRule []interface{} 696 for _, spenderItem := range spender { 697 spenderRule = append(spenderRule, spenderItem) 698 } 699 700 logs, sub, err := _MasternodeTokenV2.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) 701 if err != nil { 702 return nil, err 703 } 704 return &MasternodeTokenV2ApprovalIterator{contract: _MasternodeTokenV2.contract, event: "Approval", logs: logs, sub: sub}, nil 705 } 706 707 // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. 708 // 709 // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) 710 func (_MasternodeTokenV2 *MasternodeTokenV2Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *MasternodeTokenV2Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { 711 712 var ownerRule []interface{} 713 for _, ownerItem := range owner { 714 ownerRule = append(ownerRule, ownerItem) 715 } 716 var spenderRule []interface{} 717 for _, spenderItem := range spender { 718 spenderRule = append(spenderRule, spenderItem) 719 } 720 721 logs, sub, err := _MasternodeTokenV2.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) 722 if err != nil { 723 return nil, err 724 } 725 return event.NewSubscription(func(quit <-chan struct{}) error { 726 defer sub.Unsubscribe() 727 for { 728 select { 729 case log := <-logs: 730 // New log arrived, parse the event and forward to the user 731 event := new(MasternodeTokenV2Approval) 732 if err := _MasternodeTokenV2.contract.UnpackLog(event, "Approval", log); err != nil { 733 return err 734 } 735 event.Raw = log 736 737 select { 738 case sink <- event: 739 case err := <-sub.Err(): 740 return err 741 case <-quit: 742 return nil 743 } 744 case err := <-sub.Err(): 745 return err 746 case <-quit: 747 return nil 748 } 749 } 750 }), nil 751 } 752 753 // MasternodeTokenV2TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the MasternodeTokenV2 contract. 754 type MasternodeTokenV2TransferIterator struct { 755 Event *MasternodeTokenV2Transfer // Event containing the contract specifics and raw log 756 757 contract *bind.BoundContract // Generic contract to use for unpacking event data 758 event string // Event name to use for unpacking event data 759 760 logs chan types.Log // Log channel receiving the found contract events 761 sub ethereum.Subscription // Subscription for errors, completion and termination 762 done bool // Whether the subscription completed delivering logs 763 fail error // Occurred error to stop iteration 764 } 765 766 // Next advances the iterator to the subsequent event, returning whether there 767 // are any more events found. In case of a retrieval or parsing error, false is 768 // returned and Error() can be queried for the exact failure. 769 func (it *MasternodeTokenV2TransferIterator) Next() bool { 770 // If the iterator failed, stop iterating 771 if it.fail != nil { 772 return false 773 } 774 // If the iterator completed, deliver directly whatever's available 775 if it.done { 776 select { 777 case log := <-it.logs: 778 it.Event = new(MasternodeTokenV2Transfer) 779 if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { 780 it.fail = err 781 return false 782 } 783 it.Event.Raw = log 784 return true 785 786 default: 787 return false 788 } 789 } 790 // Iterator still in progress, wait for either a data or an error event 791 select { 792 case log := <-it.logs: 793 it.Event = new(MasternodeTokenV2Transfer) 794 if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { 795 it.fail = err 796 return false 797 } 798 it.Event.Raw = log 799 return true 800 801 case err := <-it.sub.Err(): 802 it.done = true 803 it.fail = err 804 return it.Next() 805 } 806 } 807 808 // Error returns any retrieval or parsing error occurred during filtering. 809 func (it *MasternodeTokenV2TransferIterator) Error() error { 810 return it.fail 811 } 812 813 // Close terminates the iteration process, releasing any pending underlying 814 // resources. 815 func (it *MasternodeTokenV2TransferIterator) Close() error { 816 it.sub.Unsubscribe() 817 return nil 818 } 819 820 // MasternodeTokenV2Transfer represents a Transfer event raised by the MasternodeTokenV2 contract. 821 type MasternodeTokenV2Transfer struct { 822 From common.Address 823 To common.Address 824 Value *big.Int 825 Raw types.Log // Blockchain specific contextual infos 826 } 827 828 // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. 829 // 830 // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) 831 func (_MasternodeTokenV2 *MasternodeTokenV2Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*MasternodeTokenV2TransferIterator, error) { 832 833 var fromRule []interface{} 834 for _, fromItem := range from { 835 fromRule = append(fromRule, fromItem) 836 } 837 var toRule []interface{} 838 for _, toItem := range to { 839 toRule = append(toRule, toItem) 840 } 841 842 logs, sub, err := _MasternodeTokenV2.contract.FilterLogs(opts, "Transfer", fromRule, toRule) 843 if err != nil { 844 return nil, err 845 } 846 return &MasternodeTokenV2TransferIterator{contract: _MasternodeTokenV2.contract, event: "Transfer", logs: logs, sub: sub}, nil 847 } 848 849 // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. 850 // 851 // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) 852 func (_MasternodeTokenV2 *MasternodeTokenV2Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *MasternodeTokenV2Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { 853 854 var fromRule []interface{} 855 for _, fromItem := range from { 856 fromRule = append(fromRule, fromItem) 857 } 858 var toRule []interface{} 859 for _, toItem := range to { 860 toRule = append(toRule, toItem) 861 } 862 863 logs, sub, err := _MasternodeTokenV2.contract.WatchLogs(opts, "Transfer", fromRule, toRule) 864 if err != nil { 865 return nil, err 866 } 867 return event.NewSubscription(func(quit <-chan struct{}) error { 868 defer sub.Unsubscribe() 869 for { 870 select { 871 case log := <-logs: 872 // New log arrived, parse the event and forward to the user 873 event := new(MasternodeTokenV2Transfer) 874 if err := _MasternodeTokenV2.contract.UnpackLog(event, "Transfer", log); err != nil { 875 return err 876 } 877 event.Raw = log 878 879 select { 880 case sink <- event: 881 case err := <-sub.Err(): 882 return err 883 case <-quit: 884 return nil 885 } 886 case err := <-sub.Err(): 887 return err 888 case <-quit: 889 return nil 890 } 891 } 892 }), nil 893 }