github.com/Onther-Tech/plasma-evm@v0.0.0-rc7.7/contracts/plasma/wton/wton.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 wton
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	"github.com/Onther-Tech/plasma-evm"
    11  	"github.com/Onther-Tech/plasma-evm/accounts/abi"
    12  	"github.com/Onther-Tech/plasma-evm/accounts/abi/bind"
    13  	"github.com/Onther-Tech/plasma-evm/common"
    14  	"github.com/Onther-Tech/plasma-evm/core/types"
    15  	"github.com/Onther-Tech/plasma-evm/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  // AddressABI is the input ABI used to generate the binding from.
    31  const AddressABI = "[]"
    32  
    33  // AddressBin is the compiled bytecode used for deploying new contracts.
    34  var AddressBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820caa83848f6f3a88a061ce398577e989d5da9a19232f9e00175de410a704b86e164736f6c634300050c0032"
    35  
    36  // DeployAddress deploys a new Ethereum contract, binding an instance of Address to it.
    37  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    38  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  
    43  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
    44  	if err != nil {
    45  		return common.Address{}, nil, nil, err
    46  	}
    47  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    48  }
    49  
    50  // Address is an auto generated Go binding around an Ethereum contract.
    51  type Address struct {
    52  	AddressCaller     // Read-only binding to the contract
    53  	AddressTransactor // Write-only binding to the contract
    54  	AddressFilterer   // Log filterer for contract events
    55  }
    56  
    57  // AddressCaller is an auto generated read-only Go binding around an Ethereum contract.
    58  type AddressCaller struct {
    59  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    60  }
    61  
    62  // AddressTransactor is an auto generated write-only Go binding around an Ethereum contract.
    63  type AddressTransactor struct {
    64  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    65  }
    66  
    67  // AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    68  type AddressFilterer struct {
    69  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    70  }
    71  
    72  // AddressSession is an auto generated Go binding around an Ethereum contract,
    73  // with pre-set call and transact options.
    74  type AddressSession struct {
    75  	Contract     *Address          // Generic contract binding to set the session for
    76  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    77  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    78  }
    79  
    80  // AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    81  // with pre-set call options.
    82  type AddressCallerSession struct {
    83  	Contract *AddressCaller // Generic contract caller binding to set the session for
    84  	CallOpts bind.CallOpts  // Call options to use throughout this session
    85  }
    86  
    87  // AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    88  // with pre-set transact options.
    89  type AddressTransactorSession struct {
    90  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
    91  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    92  }
    93  
    94  // AddressRaw is an auto generated low-level Go binding around an Ethereum contract.
    95  type AddressRaw struct {
    96  	Contract *Address // Generic contract binding to access the raw methods on
    97  }
    98  
    99  // AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   100  type AddressCallerRaw struct {
   101  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   102  }
   103  
   104  // AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   105  type AddressTransactorRaw struct {
   106  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   107  }
   108  
   109  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   110  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   111  	contract, err := bindAddress(address, backend, backend, backend)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   116  }
   117  
   118  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   119  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   120  	contract, err := bindAddress(address, caller, nil, nil)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &AddressCaller{contract: contract}, nil
   125  }
   126  
   127  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   128  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   129  	contract, err := bindAddress(address, nil, transactor, nil)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return &AddressTransactor{contract: contract}, nil
   134  }
   135  
   136  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   137  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   138  	contract, err := bindAddress(address, nil, nil, filterer)
   139  	if err != nil {
   140  		return nil, err
   141  	}
   142  	return &AddressFilterer{contract: contract}, nil
   143  }
   144  
   145  // bindAddress binds a generic wrapper to an already deployed contract.
   146  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   147  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   148  	if err != nil {
   149  		return nil, err
   150  	}
   151  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   152  }
   153  
   154  // Call invokes the (constant) contract method with params as input values and
   155  // sets the output to result. The result type might be a single field for simple
   156  // returns, a slice of interfaces for anonymous returns and a struct for named
   157  // returns.
   158  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   159  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   160  }
   161  
   162  // Transfer initiates a plain transaction to move funds to the contract, calling
   163  // its default method if one is available.
   164  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   165  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   166  }
   167  
   168  // Transact invokes the (paid) contract method with params as input values.
   169  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   170  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   171  }
   172  
   173  // Call invokes the (constant) contract method with params as input values and
   174  // sets the output to result. The result type might be a single field for simple
   175  // returns, a slice of interfaces for anonymous returns and a struct for named
   176  // returns.
   177  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   178  	return _Address.Contract.contract.Call(opts, result, method, params...)
   179  }
   180  
   181  // Transfer initiates a plain transaction to move funds to the contract, calling
   182  // its default method if one is available.
   183  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   184  	return _Address.Contract.contract.Transfer(opts)
   185  }
   186  
   187  // Transact invokes the (paid) contract method with params as input values.
   188  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   189  	return _Address.Contract.contract.Transact(opts, method, params...)
   190  }
   191  
   192  // AuthControllerABI is the input ABI used to generate the binding from.
   193  const AuthControllerABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
   194  
   195  // AuthControllerFuncSigs maps the 4-byte function signature to its string representation.
   196  var AuthControllerFuncSigs = map[string]string{
   197  	"8f32d59b": "isOwner()",
   198  	"8da5cb5b": "owner()",
   199  	"5f112c68": "renounceMinter(address)",
   200  	"715018a6": "renounceOwnership()",
   201  	"38bf3cfa": "renounceOwnership(address)",
   202  	"41eb24bb": "renouncePauser(address)",
   203  	"f2fde38b": "transferOwnership(address)",
   204  	"6d435421": "transferOwnership(address,address)",
   205  }
   206  
   207  // AuthControllerBin is the compiled bytecode used for deploying new contracts.
   208  var AuthControllerBin = "0x608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b61062f806100796000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063715018a61161005b578063715018a61461012f5780638da5cb5b146101375780638f32d59b1461015b578063f2fde38b1461017757610088565b806338bf3cfa1461008d57806341eb24bb146100b55780635f112c68146100db5780636d43542114610101575b600080fd5b6100b3600480360360208110156100a357600080fd5b50356001600160a01b031661019d565b005b6100b3600480360360208110156100cb57600080fd5b50356001600160a01b031661023a565b6100b3600480360360208110156100f157600080fd5b50356001600160a01b03166102bc565b6100b36004803603604081101561011757600080fd5b506001600160a01b038135811691602001351661033e565b6100b36103f9565b61013f61048a565b604080516001600160a01b039092168252519081900360200190f35b610163610499565b604080519115158252519081900360200190f35b6100b36004803603602081101561018d57600080fd5b50356001600160a01b03166104bd565b6101a5610499565b6101e4576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561021f57600080fd5b505af1158015610233573d6000803e3d6000fd5b5050505050565b610242610499565b610281576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b806001600160a01b0316636ef8d66d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561021f57600080fd5b6102c4610499565b610303576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561021f57600080fd5b610346610499565b610385576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156103dd57600080fd5b505af11580156103f1573d6000803e3d6000fd5b505050505050565b610401610499565b610440576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b03166104ae610510565b6001600160a01b031614905090565b6104c5610499565b610504576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b61050d81610514565b50565b3390565b6001600160a01b0381166105595760405162461bcd60e51b81526004018080602001828103825260268152602001806105b56026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a72315820f5dbf027aa9fb336aafe169eae7ece5653dd467fdb8b8d677f8775fa7b10105264736f6c634300050c0032"
   209  
   210  // DeployAuthController deploys a new Ethereum contract, binding an instance of AuthController to it.
   211  func DeployAuthController(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *AuthController, error) {
   212  	parsed, err := abi.JSON(strings.NewReader(AuthControllerABI))
   213  	if err != nil {
   214  		return common.Address{}, nil, nil, err
   215  	}
   216  
   217  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AuthControllerBin), backend)
   218  	if err != nil {
   219  		return common.Address{}, nil, nil, err
   220  	}
   221  	return address, tx, &AuthController{AuthControllerCaller: AuthControllerCaller{contract: contract}, AuthControllerTransactor: AuthControllerTransactor{contract: contract}, AuthControllerFilterer: AuthControllerFilterer{contract: contract}}, nil
   222  }
   223  
   224  // AuthController is an auto generated Go binding around an Ethereum contract.
   225  type AuthController struct {
   226  	AuthControllerCaller     // Read-only binding to the contract
   227  	AuthControllerTransactor // Write-only binding to the contract
   228  	AuthControllerFilterer   // Log filterer for contract events
   229  }
   230  
   231  // AuthControllerCaller is an auto generated read-only Go binding around an Ethereum contract.
   232  type AuthControllerCaller struct {
   233  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   234  }
   235  
   236  // AuthControllerTransactor is an auto generated write-only Go binding around an Ethereum contract.
   237  type AuthControllerTransactor struct {
   238  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   239  }
   240  
   241  // AuthControllerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   242  type AuthControllerFilterer struct {
   243  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   244  }
   245  
   246  // AuthControllerSession is an auto generated Go binding around an Ethereum contract,
   247  // with pre-set call and transact options.
   248  type AuthControllerSession struct {
   249  	Contract     *AuthController   // Generic contract binding to set the session for
   250  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   251  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   252  }
   253  
   254  // AuthControllerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   255  // with pre-set call options.
   256  type AuthControllerCallerSession struct {
   257  	Contract *AuthControllerCaller // Generic contract caller binding to set the session for
   258  	CallOpts bind.CallOpts         // Call options to use throughout this session
   259  }
   260  
   261  // AuthControllerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   262  // with pre-set transact options.
   263  type AuthControllerTransactorSession struct {
   264  	Contract     *AuthControllerTransactor // Generic contract transactor binding to set the session for
   265  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
   266  }
   267  
   268  // AuthControllerRaw is an auto generated low-level Go binding around an Ethereum contract.
   269  type AuthControllerRaw struct {
   270  	Contract *AuthController // Generic contract binding to access the raw methods on
   271  }
   272  
   273  // AuthControllerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   274  type AuthControllerCallerRaw struct {
   275  	Contract *AuthControllerCaller // Generic read-only contract binding to access the raw methods on
   276  }
   277  
   278  // AuthControllerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   279  type AuthControllerTransactorRaw struct {
   280  	Contract *AuthControllerTransactor // Generic write-only contract binding to access the raw methods on
   281  }
   282  
   283  // NewAuthController creates a new instance of AuthController, bound to a specific deployed contract.
   284  func NewAuthController(address common.Address, backend bind.ContractBackend) (*AuthController, error) {
   285  	contract, err := bindAuthController(address, backend, backend, backend)
   286  	if err != nil {
   287  		return nil, err
   288  	}
   289  	return &AuthController{AuthControllerCaller: AuthControllerCaller{contract: contract}, AuthControllerTransactor: AuthControllerTransactor{contract: contract}, AuthControllerFilterer: AuthControllerFilterer{contract: contract}}, nil
   290  }
   291  
   292  // NewAuthControllerCaller creates a new read-only instance of AuthController, bound to a specific deployed contract.
   293  func NewAuthControllerCaller(address common.Address, caller bind.ContractCaller) (*AuthControllerCaller, error) {
   294  	contract, err := bindAuthController(address, caller, nil, nil)
   295  	if err != nil {
   296  		return nil, err
   297  	}
   298  	return &AuthControllerCaller{contract: contract}, nil
   299  }
   300  
   301  // NewAuthControllerTransactor creates a new write-only instance of AuthController, bound to a specific deployed contract.
   302  func NewAuthControllerTransactor(address common.Address, transactor bind.ContractTransactor) (*AuthControllerTransactor, error) {
   303  	contract, err := bindAuthController(address, nil, transactor, nil)
   304  	if err != nil {
   305  		return nil, err
   306  	}
   307  	return &AuthControllerTransactor{contract: contract}, nil
   308  }
   309  
   310  // NewAuthControllerFilterer creates a new log filterer instance of AuthController, bound to a specific deployed contract.
   311  func NewAuthControllerFilterer(address common.Address, filterer bind.ContractFilterer) (*AuthControllerFilterer, error) {
   312  	contract, err := bindAuthController(address, nil, nil, filterer)
   313  	if err != nil {
   314  		return nil, err
   315  	}
   316  	return &AuthControllerFilterer{contract: contract}, nil
   317  }
   318  
   319  // bindAuthController binds a generic wrapper to an already deployed contract.
   320  func bindAuthController(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   321  	parsed, err := abi.JSON(strings.NewReader(AuthControllerABI))
   322  	if err != nil {
   323  		return nil, err
   324  	}
   325  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   326  }
   327  
   328  // Call invokes the (constant) contract method with params as input values and
   329  // sets the output to result. The result type might be a single field for simple
   330  // returns, a slice of interfaces for anonymous returns and a struct for named
   331  // returns.
   332  func (_AuthController *AuthControllerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   333  	return _AuthController.Contract.AuthControllerCaller.contract.Call(opts, result, method, params...)
   334  }
   335  
   336  // Transfer initiates a plain transaction to move funds to the contract, calling
   337  // its default method if one is available.
   338  func (_AuthController *AuthControllerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   339  	return _AuthController.Contract.AuthControllerTransactor.contract.Transfer(opts)
   340  }
   341  
   342  // Transact invokes the (paid) contract method with params as input values.
   343  func (_AuthController *AuthControllerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   344  	return _AuthController.Contract.AuthControllerTransactor.contract.Transact(opts, method, params...)
   345  }
   346  
   347  // Call invokes the (constant) contract method with params as input values and
   348  // sets the output to result. The result type might be a single field for simple
   349  // returns, a slice of interfaces for anonymous returns and a struct for named
   350  // returns.
   351  func (_AuthController *AuthControllerCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   352  	return _AuthController.Contract.contract.Call(opts, result, method, params...)
   353  }
   354  
   355  // Transfer initiates a plain transaction to move funds to the contract, calling
   356  // its default method if one is available.
   357  func (_AuthController *AuthControllerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   358  	return _AuthController.Contract.contract.Transfer(opts)
   359  }
   360  
   361  // Transact invokes the (paid) contract method with params as input values.
   362  func (_AuthController *AuthControllerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   363  	return _AuthController.Contract.contract.Transact(opts, method, params...)
   364  }
   365  
   366  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   367  //
   368  // Solidity: function isOwner() constant returns(bool)
   369  func (_AuthController *AuthControllerCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
   370  	var (
   371  		ret0 = new(bool)
   372  	)
   373  	out := ret0
   374  	err := _AuthController.contract.Call(opts, out, "isOwner")
   375  	return *ret0, err
   376  }
   377  
   378  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   379  //
   380  // Solidity: function isOwner() constant returns(bool)
   381  func (_AuthController *AuthControllerSession) IsOwner() (bool, error) {
   382  	return _AuthController.Contract.IsOwner(&_AuthController.CallOpts)
   383  }
   384  
   385  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   386  //
   387  // Solidity: function isOwner() constant returns(bool)
   388  func (_AuthController *AuthControllerCallerSession) IsOwner() (bool, error) {
   389  	return _AuthController.Contract.IsOwner(&_AuthController.CallOpts)
   390  }
   391  
   392  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   393  //
   394  // Solidity: function owner() constant returns(address)
   395  func (_AuthController *AuthControllerCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
   396  	var (
   397  		ret0 = new(common.Address)
   398  	)
   399  	out := ret0
   400  	err := _AuthController.contract.Call(opts, out, "owner")
   401  	return *ret0, err
   402  }
   403  
   404  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   405  //
   406  // Solidity: function owner() constant returns(address)
   407  func (_AuthController *AuthControllerSession) Owner() (common.Address, error) {
   408  	return _AuthController.Contract.Owner(&_AuthController.CallOpts)
   409  }
   410  
   411  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   412  //
   413  // Solidity: function owner() constant returns(address)
   414  func (_AuthController *AuthControllerCallerSession) Owner() (common.Address, error) {
   415  	return _AuthController.Contract.Owner(&_AuthController.CallOpts)
   416  }
   417  
   418  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
   419  //
   420  // Solidity: function renounceMinter(address target) returns()
   421  func (_AuthController *AuthControllerTransactor) RenounceMinter(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
   422  	return _AuthController.contract.Transact(opts, "renounceMinter", target)
   423  }
   424  
   425  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
   426  //
   427  // Solidity: function renounceMinter(address target) returns()
   428  func (_AuthController *AuthControllerSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
   429  	return _AuthController.Contract.RenounceMinter(&_AuthController.TransactOpts, target)
   430  }
   431  
   432  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
   433  //
   434  // Solidity: function renounceMinter(address target) returns()
   435  func (_AuthController *AuthControllerTransactorSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
   436  	return _AuthController.Contract.RenounceMinter(&_AuthController.TransactOpts, target)
   437  }
   438  
   439  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
   440  //
   441  // Solidity: function renounceOwnership(address target) returns()
   442  func (_AuthController *AuthControllerTransactor) RenounceOwnership(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
   443  	return _AuthController.contract.Transact(opts, "renounceOwnership", target)
   444  }
   445  
   446  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
   447  //
   448  // Solidity: function renounceOwnership(address target) returns()
   449  func (_AuthController *AuthControllerSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
   450  	return _AuthController.Contract.RenounceOwnership(&_AuthController.TransactOpts, target)
   451  }
   452  
   453  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
   454  //
   455  // Solidity: function renounceOwnership(address target) returns()
   456  func (_AuthController *AuthControllerTransactorSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
   457  	return _AuthController.Contract.RenounceOwnership(&_AuthController.TransactOpts, target)
   458  }
   459  
   460  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
   461  //
   462  // Solidity: function renounceOwnership() returns()
   463  func (_AuthController *AuthControllerTransactor) RenounceOwnership0(opts *bind.TransactOpts) (*types.Transaction, error) {
   464  	return _AuthController.contract.Transact(opts, "renounceOwnership0")
   465  }
   466  
   467  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
   468  //
   469  // Solidity: function renounceOwnership() returns()
   470  func (_AuthController *AuthControllerSession) RenounceOwnership0() (*types.Transaction, error) {
   471  	return _AuthController.Contract.RenounceOwnership0(&_AuthController.TransactOpts)
   472  }
   473  
   474  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
   475  //
   476  // Solidity: function renounceOwnership() returns()
   477  func (_AuthController *AuthControllerTransactorSession) RenounceOwnership0() (*types.Transaction, error) {
   478  	return _AuthController.Contract.RenounceOwnership0(&_AuthController.TransactOpts)
   479  }
   480  
   481  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
   482  //
   483  // Solidity: function renouncePauser(address target) returns()
   484  func (_AuthController *AuthControllerTransactor) RenouncePauser(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
   485  	return _AuthController.contract.Transact(opts, "renouncePauser", target)
   486  }
   487  
   488  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
   489  //
   490  // Solidity: function renouncePauser(address target) returns()
   491  func (_AuthController *AuthControllerSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
   492  	return _AuthController.Contract.RenouncePauser(&_AuthController.TransactOpts, target)
   493  }
   494  
   495  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
   496  //
   497  // Solidity: function renouncePauser(address target) returns()
   498  func (_AuthController *AuthControllerTransactorSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
   499  	return _AuthController.Contract.RenouncePauser(&_AuthController.TransactOpts, target)
   500  }
   501  
   502  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
   503  //
   504  // Solidity: function transferOwnership(address target, address newOwner) returns()
   505  func (_AuthController *AuthControllerTransactor) TransferOwnership(opts *bind.TransactOpts, target common.Address, newOwner common.Address) (*types.Transaction, error) {
   506  	return _AuthController.contract.Transact(opts, "transferOwnership", target, newOwner)
   507  }
   508  
   509  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
   510  //
   511  // Solidity: function transferOwnership(address target, address newOwner) returns()
   512  func (_AuthController *AuthControllerSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
   513  	return _AuthController.Contract.TransferOwnership(&_AuthController.TransactOpts, target, newOwner)
   514  }
   515  
   516  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
   517  //
   518  // Solidity: function transferOwnership(address target, address newOwner) returns()
   519  func (_AuthController *AuthControllerTransactorSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
   520  	return _AuthController.Contract.TransferOwnership(&_AuthController.TransactOpts, target, newOwner)
   521  }
   522  
   523  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
   524  //
   525  // Solidity: function transferOwnership(address newOwner) returns()
   526  func (_AuthController *AuthControllerTransactor) TransferOwnership0(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
   527  	return _AuthController.contract.Transact(opts, "transferOwnership0", newOwner)
   528  }
   529  
   530  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
   531  //
   532  // Solidity: function transferOwnership(address newOwner) returns()
   533  func (_AuthController *AuthControllerSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
   534  	return _AuthController.Contract.TransferOwnership0(&_AuthController.TransactOpts, newOwner)
   535  }
   536  
   537  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
   538  //
   539  // Solidity: function transferOwnership(address newOwner) returns()
   540  func (_AuthController *AuthControllerTransactorSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
   541  	return _AuthController.Contract.TransferOwnership0(&_AuthController.TransactOpts, newOwner)
   542  }
   543  
   544  // AuthControllerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the AuthController contract.
   545  type AuthControllerOwnershipTransferredIterator struct {
   546  	Event *AuthControllerOwnershipTransferred // Event containing the contract specifics and raw log
   547  
   548  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   549  	event    string              // Event name to use for unpacking event data
   550  
   551  	logs chan types.Log        // Log channel receiving the found contract events
   552  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   553  	done bool                  // Whether the subscription completed delivering logs
   554  	fail error                 // Occurred error to stop iteration
   555  }
   556  
   557  // Next advances the iterator to the subsequent event, returning whether there
   558  // are any more events found. In case of a retrieval or parsing error, false is
   559  // returned and Error() can be queried for the exact failure.
   560  func (it *AuthControllerOwnershipTransferredIterator) Next() bool {
   561  	// If the iterator failed, stop iterating
   562  	if it.fail != nil {
   563  		return false
   564  	}
   565  	// If the iterator completed, deliver directly whatever's available
   566  	if it.done {
   567  		select {
   568  		case log := <-it.logs:
   569  			it.Event = new(AuthControllerOwnershipTransferred)
   570  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   571  				it.fail = err
   572  				return false
   573  			}
   574  			it.Event.Raw = log
   575  			return true
   576  
   577  		default:
   578  			return false
   579  		}
   580  	}
   581  	// Iterator still in progress, wait for either a data or an error event
   582  	select {
   583  	case log := <-it.logs:
   584  		it.Event = new(AuthControllerOwnershipTransferred)
   585  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   586  			it.fail = err
   587  			return false
   588  		}
   589  		it.Event.Raw = log
   590  		return true
   591  
   592  	case err := <-it.sub.Err():
   593  		it.done = true
   594  		it.fail = err
   595  		return it.Next()
   596  	}
   597  }
   598  
   599  // Error returns any retrieval or parsing error occurred during filtering.
   600  func (it *AuthControllerOwnershipTransferredIterator) Error() error {
   601  	return it.fail
   602  }
   603  
   604  // Close terminates the iteration process, releasing any pending underlying
   605  // resources.
   606  func (it *AuthControllerOwnershipTransferredIterator) Close() error {
   607  	it.sub.Unsubscribe()
   608  	return nil
   609  }
   610  
   611  // AuthControllerOwnershipTransferred represents a OwnershipTransferred event raised by the AuthController contract.
   612  type AuthControllerOwnershipTransferred struct {
   613  	PreviousOwner common.Address
   614  	NewOwner      common.Address
   615  	Raw           types.Log // Blockchain specific contextual infos
   616  }
   617  
   618  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   619  //
   620  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   621  func (_AuthController *AuthControllerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*AuthControllerOwnershipTransferredIterator, error) {
   622  
   623  	var previousOwnerRule []interface{}
   624  	for _, previousOwnerItem := range previousOwner {
   625  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
   626  	}
   627  	var newOwnerRule []interface{}
   628  	for _, newOwnerItem := range newOwner {
   629  		newOwnerRule = append(newOwnerRule, newOwnerItem)
   630  	}
   631  
   632  	logs, sub, err := _AuthController.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
   633  	if err != nil {
   634  		return nil, err
   635  	}
   636  	return &AuthControllerOwnershipTransferredIterator{contract: _AuthController.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
   637  }
   638  
   639  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   640  //
   641  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   642  func (_AuthController *AuthControllerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *AuthControllerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
   643  
   644  	var previousOwnerRule []interface{}
   645  	for _, previousOwnerItem := range previousOwner {
   646  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
   647  	}
   648  	var newOwnerRule []interface{}
   649  	for _, newOwnerItem := range newOwner {
   650  		newOwnerRule = append(newOwnerRule, newOwnerItem)
   651  	}
   652  
   653  	logs, sub, err := _AuthController.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
   654  	if err != nil {
   655  		return nil, err
   656  	}
   657  	return event.NewSubscription(func(quit <-chan struct{}) error {
   658  		defer sub.Unsubscribe()
   659  		for {
   660  			select {
   661  			case log := <-logs:
   662  				// New log arrived, parse the event and forward to the user
   663  				event := new(AuthControllerOwnershipTransferred)
   664  				if err := _AuthController.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
   665  					return err
   666  				}
   667  				event.Raw = log
   668  
   669  				select {
   670  				case sink <- event:
   671  				case err := <-sub.Err():
   672  					return err
   673  				case <-quit:
   674  					return nil
   675  				}
   676  			case err := <-sub.Err():
   677  				return err
   678  			case <-quit:
   679  				return nil
   680  			}
   681  		}
   682  	}), nil
   683  }
   684  
   685  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   686  //
   687  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   688  func (_AuthController *AuthControllerFilterer) ParseOwnershipTransferred(log types.Log) (*AuthControllerOwnershipTransferred, error) {
   689  	event := new(AuthControllerOwnershipTransferred)
   690  	if err := _AuthController.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
   691  		return nil, err
   692  	}
   693  	return event, nil
   694  }
   695  
   696  // ContextABI is the input ABI used to generate the binding from.
   697  const ContextABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
   698  
   699  // Context is an auto generated Go binding around an Ethereum contract.
   700  type Context struct {
   701  	ContextCaller     // Read-only binding to the contract
   702  	ContextTransactor // Write-only binding to the contract
   703  	ContextFilterer   // Log filterer for contract events
   704  }
   705  
   706  // ContextCaller is an auto generated read-only Go binding around an Ethereum contract.
   707  type ContextCaller struct {
   708  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   709  }
   710  
   711  // ContextTransactor is an auto generated write-only Go binding around an Ethereum contract.
   712  type ContextTransactor struct {
   713  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   714  }
   715  
   716  // ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   717  type ContextFilterer struct {
   718  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   719  }
   720  
   721  // ContextSession is an auto generated Go binding around an Ethereum contract,
   722  // with pre-set call and transact options.
   723  type ContextSession struct {
   724  	Contract     *Context          // Generic contract binding to set the session for
   725  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   726  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   727  }
   728  
   729  // ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   730  // with pre-set call options.
   731  type ContextCallerSession struct {
   732  	Contract *ContextCaller // Generic contract caller binding to set the session for
   733  	CallOpts bind.CallOpts  // Call options to use throughout this session
   734  }
   735  
   736  // ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   737  // with pre-set transact options.
   738  type ContextTransactorSession struct {
   739  	Contract     *ContextTransactor // Generic contract transactor binding to set the session for
   740  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   741  }
   742  
   743  // ContextRaw is an auto generated low-level Go binding around an Ethereum contract.
   744  type ContextRaw struct {
   745  	Contract *Context // Generic contract binding to access the raw methods on
   746  }
   747  
   748  // ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   749  type ContextCallerRaw struct {
   750  	Contract *ContextCaller // Generic read-only contract binding to access the raw methods on
   751  }
   752  
   753  // ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   754  type ContextTransactorRaw struct {
   755  	Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on
   756  }
   757  
   758  // NewContext creates a new instance of Context, bound to a specific deployed contract.
   759  func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) {
   760  	contract, err := bindContext(address, backend, backend, backend)
   761  	if err != nil {
   762  		return nil, err
   763  	}
   764  	return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil
   765  }
   766  
   767  // NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract.
   768  func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) {
   769  	contract, err := bindContext(address, caller, nil, nil)
   770  	if err != nil {
   771  		return nil, err
   772  	}
   773  	return &ContextCaller{contract: contract}, nil
   774  }
   775  
   776  // NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract.
   777  func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) {
   778  	contract, err := bindContext(address, nil, transactor, nil)
   779  	if err != nil {
   780  		return nil, err
   781  	}
   782  	return &ContextTransactor{contract: contract}, nil
   783  }
   784  
   785  // NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract.
   786  func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) {
   787  	contract, err := bindContext(address, nil, nil, filterer)
   788  	if err != nil {
   789  		return nil, err
   790  	}
   791  	return &ContextFilterer{contract: contract}, nil
   792  }
   793  
   794  // bindContext binds a generic wrapper to an already deployed contract.
   795  func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   796  	parsed, err := abi.JSON(strings.NewReader(ContextABI))
   797  	if err != nil {
   798  		return nil, err
   799  	}
   800  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   801  }
   802  
   803  // Call invokes the (constant) contract method with params as input values and
   804  // sets the output to result. The result type might be a single field for simple
   805  // returns, a slice of interfaces for anonymous returns and a struct for named
   806  // returns.
   807  func (_Context *ContextRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   808  	return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...)
   809  }
   810  
   811  // Transfer initiates a plain transaction to move funds to the contract, calling
   812  // its default method if one is available.
   813  func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   814  	return _Context.Contract.ContextTransactor.contract.Transfer(opts)
   815  }
   816  
   817  // Transact invokes the (paid) contract method with params as input values.
   818  func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   819  	return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...)
   820  }
   821  
   822  // Call invokes the (constant) contract method with params as input values and
   823  // sets the output to result. The result type might be a single field for simple
   824  // returns, a slice of interfaces for anonymous returns and a struct for named
   825  // returns.
   826  func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   827  	return _Context.Contract.contract.Call(opts, result, method, params...)
   828  }
   829  
   830  // Transfer initiates a plain transaction to move funds to the contract, calling
   831  // its default method if one is available.
   832  func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   833  	return _Context.Contract.contract.Transfer(opts)
   834  }
   835  
   836  // Transact invokes the (paid) contract method with params as input values.
   837  func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   838  	return _Context.Contract.contract.Transact(opts, method, params...)
   839  }
   840  
   841  // DSMathABI is the input ABI used to generate the binding from.
   842  const DSMathABI = "[]"
   843  
   844  // DSMathBin is the compiled bytecode used for deploying new contracts.
   845  var DSMathBin = "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158201d3383a4efea7d4c911511edcc2240f991199f32cf3b3c855dd9ffb45f3f45a164736f6c634300050c0032"
   846  
   847  // DeployDSMath deploys a new Ethereum contract, binding an instance of DSMath to it.
   848  func DeployDSMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *DSMath, error) {
   849  	parsed, err := abi.JSON(strings.NewReader(DSMathABI))
   850  	if err != nil {
   851  		return common.Address{}, nil, nil, err
   852  	}
   853  
   854  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(DSMathBin), backend)
   855  	if err != nil {
   856  		return common.Address{}, nil, nil, err
   857  	}
   858  	return address, tx, &DSMath{DSMathCaller: DSMathCaller{contract: contract}, DSMathTransactor: DSMathTransactor{contract: contract}, DSMathFilterer: DSMathFilterer{contract: contract}}, nil
   859  }
   860  
   861  // DSMath is an auto generated Go binding around an Ethereum contract.
   862  type DSMath struct {
   863  	DSMathCaller     // Read-only binding to the contract
   864  	DSMathTransactor // Write-only binding to the contract
   865  	DSMathFilterer   // Log filterer for contract events
   866  }
   867  
   868  // DSMathCaller is an auto generated read-only Go binding around an Ethereum contract.
   869  type DSMathCaller struct {
   870  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   871  }
   872  
   873  // DSMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
   874  type DSMathTransactor struct {
   875  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   876  }
   877  
   878  // DSMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   879  type DSMathFilterer struct {
   880  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   881  }
   882  
   883  // DSMathSession is an auto generated Go binding around an Ethereum contract,
   884  // with pre-set call and transact options.
   885  type DSMathSession struct {
   886  	Contract     *DSMath           // Generic contract binding to set the session for
   887  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   888  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   889  }
   890  
   891  // DSMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   892  // with pre-set call options.
   893  type DSMathCallerSession struct {
   894  	Contract *DSMathCaller // Generic contract caller binding to set the session for
   895  	CallOpts bind.CallOpts // Call options to use throughout this session
   896  }
   897  
   898  // DSMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   899  // with pre-set transact options.
   900  type DSMathTransactorSession struct {
   901  	Contract     *DSMathTransactor // Generic contract transactor binding to set the session for
   902  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   903  }
   904  
   905  // DSMathRaw is an auto generated low-level Go binding around an Ethereum contract.
   906  type DSMathRaw struct {
   907  	Contract *DSMath // Generic contract binding to access the raw methods on
   908  }
   909  
   910  // DSMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   911  type DSMathCallerRaw struct {
   912  	Contract *DSMathCaller // Generic read-only contract binding to access the raw methods on
   913  }
   914  
   915  // DSMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   916  type DSMathTransactorRaw struct {
   917  	Contract *DSMathTransactor // Generic write-only contract binding to access the raw methods on
   918  }
   919  
   920  // NewDSMath creates a new instance of DSMath, bound to a specific deployed contract.
   921  func NewDSMath(address common.Address, backend bind.ContractBackend) (*DSMath, error) {
   922  	contract, err := bindDSMath(address, backend, backend, backend)
   923  	if err != nil {
   924  		return nil, err
   925  	}
   926  	return &DSMath{DSMathCaller: DSMathCaller{contract: contract}, DSMathTransactor: DSMathTransactor{contract: contract}, DSMathFilterer: DSMathFilterer{contract: contract}}, nil
   927  }
   928  
   929  // NewDSMathCaller creates a new read-only instance of DSMath, bound to a specific deployed contract.
   930  func NewDSMathCaller(address common.Address, caller bind.ContractCaller) (*DSMathCaller, error) {
   931  	contract, err := bindDSMath(address, caller, nil, nil)
   932  	if err != nil {
   933  		return nil, err
   934  	}
   935  	return &DSMathCaller{contract: contract}, nil
   936  }
   937  
   938  // NewDSMathTransactor creates a new write-only instance of DSMath, bound to a specific deployed contract.
   939  func NewDSMathTransactor(address common.Address, transactor bind.ContractTransactor) (*DSMathTransactor, error) {
   940  	contract, err := bindDSMath(address, nil, transactor, nil)
   941  	if err != nil {
   942  		return nil, err
   943  	}
   944  	return &DSMathTransactor{contract: contract}, nil
   945  }
   946  
   947  // NewDSMathFilterer creates a new log filterer instance of DSMath, bound to a specific deployed contract.
   948  func NewDSMathFilterer(address common.Address, filterer bind.ContractFilterer) (*DSMathFilterer, error) {
   949  	contract, err := bindDSMath(address, nil, nil, filterer)
   950  	if err != nil {
   951  		return nil, err
   952  	}
   953  	return &DSMathFilterer{contract: contract}, nil
   954  }
   955  
   956  // bindDSMath binds a generic wrapper to an already deployed contract.
   957  func bindDSMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   958  	parsed, err := abi.JSON(strings.NewReader(DSMathABI))
   959  	if err != nil {
   960  		return nil, err
   961  	}
   962  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   963  }
   964  
   965  // Call invokes the (constant) contract method with params as input values and
   966  // sets the output to result. The result type might be a single field for simple
   967  // returns, a slice of interfaces for anonymous returns and a struct for named
   968  // returns.
   969  func (_DSMath *DSMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   970  	return _DSMath.Contract.DSMathCaller.contract.Call(opts, result, method, params...)
   971  }
   972  
   973  // Transfer initiates a plain transaction to move funds to the contract, calling
   974  // its default method if one is available.
   975  func (_DSMath *DSMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   976  	return _DSMath.Contract.DSMathTransactor.contract.Transfer(opts)
   977  }
   978  
   979  // Transact invokes the (paid) contract method with params as input values.
   980  func (_DSMath *DSMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   981  	return _DSMath.Contract.DSMathTransactor.contract.Transact(opts, method, params...)
   982  }
   983  
   984  // Call invokes the (constant) contract method with params as input values and
   985  // sets the output to result. The result type might be a single field for simple
   986  // returns, a slice of interfaces for anonymous returns and a struct for named
   987  // returns.
   988  func (_DSMath *DSMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   989  	return _DSMath.Contract.contract.Call(opts, result, method, params...)
   990  }
   991  
   992  // Transfer initiates a plain transaction to move funds to the contract, calling
   993  // its default method if one is available.
   994  func (_DSMath *DSMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   995  	return _DSMath.Contract.contract.Transfer(opts)
   996  }
   997  
   998  // Transact invokes the (paid) contract method with params as input values.
   999  func (_DSMath *DSMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1000  	return _DSMath.Contract.contract.Transact(opts, method, params...)
  1001  }
  1002  
  1003  // ERC165ABI is the input ABI used to generate the binding from.
  1004  const ERC165ABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  1005  
  1006  // ERC165FuncSigs maps the 4-byte function signature to its string representation.
  1007  var ERC165FuncSigs = map[string]string{
  1008  	"01ffc9a7": "supportsInterface(bytes4)",
  1009  }
  1010  
  1011  // ERC165 is an auto generated Go binding around an Ethereum contract.
  1012  type ERC165 struct {
  1013  	ERC165Caller     // Read-only binding to the contract
  1014  	ERC165Transactor // Write-only binding to the contract
  1015  	ERC165Filterer   // Log filterer for contract events
  1016  }
  1017  
  1018  // ERC165Caller is an auto generated read-only Go binding around an Ethereum contract.
  1019  type ERC165Caller struct {
  1020  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1021  }
  1022  
  1023  // ERC165Transactor is an auto generated write-only Go binding around an Ethereum contract.
  1024  type ERC165Transactor struct {
  1025  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1026  }
  1027  
  1028  // ERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1029  type ERC165Filterer struct {
  1030  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1031  }
  1032  
  1033  // ERC165Session is an auto generated Go binding around an Ethereum contract,
  1034  // with pre-set call and transact options.
  1035  type ERC165Session struct {
  1036  	Contract     *ERC165           // Generic contract binding to set the session for
  1037  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1038  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1039  }
  1040  
  1041  // ERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1042  // with pre-set call options.
  1043  type ERC165CallerSession struct {
  1044  	Contract *ERC165Caller // Generic contract caller binding to set the session for
  1045  	CallOpts bind.CallOpts // Call options to use throughout this session
  1046  }
  1047  
  1048  // ERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1049  // with pre-set transact options.
  1050  type ERC165TransactorSession struct {
  1051  	Contract     *ERC165Transactor // Generic contract transactor binding to set the session for
  1052  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1053  }
  1054  
  1055  // ERC165Raw is an auto generated low-level Go binding around an Ethereum contract.
  1056  type ERC165Raw struct {
  1057  	Contract *ERC165 // Generic contract binding to access the raw methods on
  1058  }
  1059  
  1060  // ERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1061  type ERC165CallerRaw struct {
  1062  	Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on
  1063  }
  1064  
  1065  // ERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1066  type ERC165TransactorRaw struct {
  1067  	Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on
  1068  }
  1069  
  1070  // NewERC165 creates a new instance of ERC165, bound to a specific deployed contract.
  1071  func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) {
  1072  	contract, err := bindERC165(address, backend, backend, backend)
  1073  	if err != nil {
  1074  		return nil, err
  1075  	}
  1076  	return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil
  1077  }
  1078  
  1079  // NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract.
  1080  func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) {
  1081  	contract, err := bindERC165(address, caller, nil, nil)
  1082  	if err != nil {
  1083  		return nil, err
  1084  	}
  1085  	return &ERC165Caller{contract: contract}, nil
  1086  }
  1087  
  1088  // NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract.
  1089  func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) {
  1090  	contract, err := bindERC165(address, nil, transactor, nil)
  1091  	if err != nil {
  1092  		return nil, err
  1093  	}
  1094  	return &ERC165Transactor{contract: contract}, nil
  1095  }
  1096  
  1097  // NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract.
  1098  func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) {
  1099  	contract, err := bindERC165(address, nil, nil, filterer)
  1100  	if err != nil {
  1101  		return nil, err
  1102  	}
  1103  	return &ERC165Filterer{contract: contract}, nil
  1104  }
  1105  
  1106  // bindERC165 binds a generic wrapper to an already deployed contract.
  1107  func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1108  	parsed, err := abi.JSON(strings.NewReader(ERC165ABI))
  1109  	if err != nil {
  1110  		return nil, err
  1111  	}
  1112  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1113  }
  1114  
  1115  // Call invokes the (constant) contract method with params as input values and
  1116  // sets the output to result. The result type might be a single field for simple
  1117  // returns, a slice of interfaces for anonymous returns and a struct for named
  1118  // returns.
  1119  func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1120  	return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...)
  1121  }
  1122  
  1123  // Transfer initiates a plain transaction to move funds to the contract, calling
  1124  // its default method if one is available.
  1125  func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1126  	return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts)
  1127  }
  1128  
  1129  // Transact invokes the (paid) contract method with params as input values.
  1130  func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1131  	return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...)
  1132  }
  1133  
  1134  // Call invokes the (constant) contract method with params as input values and
  1135  // sets the output to result. The result type might be a single field for simple
  1136  // returns, a slice of interfaces for anonymous returns and a struct for named
  1137  // returns.
  1138  func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1139  	return _ERC165.Contract.contract.Call(opts, result, method, params...)
  1140  }
  1141  
  1142  // Transfer initiates a plain transaction to move funds to the contract, calling
  1143  // its default method if one is available.
  1144  func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1145  	return _ERC165.Contract.contract.Transfer(opts)
  1146  }
  1147  
  1148  // Transact invokes the (paid) contract method with params as input values.
  1149  func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1150  	return _ERC165.Contract.contract.Transact(opts, method, params...)
  1151  }
  1152  
  1153  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1154  //
  1155  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  1156  func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  1157  	var (
  1158  		ret0 = new(bool)
  1159  	)
  1160  	out := ret0
  1161  	err := _ERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
  1162  	return *ret0, err
  1163  }
  1164  
  1165  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1166  //
  1167  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  1168  func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1169  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
  1170  }
  1171  
  1172  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1173  //
  1174  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  1175  func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1176  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
  1177  }
  1178  
  1179  // ERC165CheckerABI is the input ABI used to generate the binding from.
  1180  const ERC165CheckerABI = "[]"
  1181  
  1182  // ERC165CheckerBin is the compiled bytecode used for deploying new contracts.
  1183  var ERC165CheckerBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ea851d268567a3ed8f55b193eb1a6f3028b7565ea2152c791833f991fbaa44e864736f6c634300050c0032"
  1184  
  1185  // DeployERC165Checker deploys a new Ethereum contract, binding an instance of ERC165Checker to it.
  1186  func DeployERC165Checker(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC165Checker, error) {
  1187  	parsed, err := abi.JSON(strings.NewReader(ERC165CheckerABI))
  1188  	if err != nil {
  1189  		return common.Address{}, nil, nil, err
  1190  	}
  1191  
  1192  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC165CheckerBin), backend)
  1193  	if err != nil {
  1194  		return common.Address{}, nil, nil, err
  1195  	}
  1196  	return address, tx, &ERC165Checker{ERC165CheckerCaller: ERC165CheckerCaller{contract: contract}, ERC165CheckerTransactor: ERC165CheckerTransactor{contract: contract}, ERC165CheckerFilterer: ERC165CheckerFilterer{contract: contract}}, nil
  1197  }
  1198  
  1199  // ERC165Checker is an auto generated Go binding around an Ethereum contract.
  1200  type ERC165Checker struct {
  1201  	ERC165CheckerCaller     // Read-only binding to the contract
  1202  	ERC165CheckerTransactor // Write-only binding to the contract
  1203  	ERC165CheckerFilterer   // Log filterer for contract events
  1204  }
  1205  
  1206  // ERC165CheckerCaller is an auto generated read-only Go binding around an Ethereum contract.
  1207  type ERC165CheckerCaller struct {
  1208  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1209  }
  1210  
  1211  // ERC165CheckerTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1212  type ERC165CheckerTransactor struct {
  1213  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1214  }
  1215  
  1216  // ERC165CheckerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1217  type ERC165CheckerFilterer struct {
  1218  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1219  }
  1220  
  1221  // ERC165CheckerSession is an auto generated Go binding around an Ethereum contract,
  1222  // with pre-set call and transact options.
  1223  type ERC165CheckerSession struct {
  1224  	Contract     *ERC165Checker    // Generic contract binding to set the session for
  1225  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1226  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1227  }
  1228  
  1229  // ERC165CheckerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1230  // with pre-set call options.
  1231  type ERC165CheckerCallerSession struct {
  1232  	Contract *ERC165CheckerCaller // Generic contract caller binding to set the session for
  1233  	CallOpts bind.CallOpts        // Call options to use throughout this session
  1234  }
  1235  
  1236  // ERC165CheckerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1237  // with pre-set transact options.
  1238  type ERC165CheckerTransactorSession struct {
  1239  	Contract     *ERC165CheckerTransactor // Generic contract transactor binding to set the session for
  1240  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  1241  }
  1242  
  1243  // ERC165CheckerRaw is an auto generated low-level Go binding around an Ethereum contract.
  1244  type ERC165CheckerRaw struct {
  1245  	Contract *ERC165Checker // Generic contract binding to access the raw methods on
  1246  }
  1247  
  1248  // ERC165CheckerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1249  type ERC165CheckerCallerRaw struct {
  1250  	Contract *ERC165CheckerCaller // Generic read-only contract binding to access the raw methods on
  1251  }
  1252  
  1253  // ERC165CheckerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1254  type ERC165CheckerTransactorRaw struct {
  1255  	Contract *ERC165CheckerTransactor // Generic write-only contract binding to access the raw methods on
  1256  }
  1257  
  1258  // NewERC165Checker creates a new instance of ERC165Checker, bound to a specific deployed contract.
  1259  func NewERC165Checker(address common.Address, backend bind.ContractBackend) (*ERC165Checker, error) {
  1260  	contract, err := bindERC165Checker(address, backend, backend, backend)
  1261  	if err != nil {
  1262  		return nil, err
  1263  	}
  1264  	return &ERC165Checker{ERC165CheckerCaller: ERC165CheckerCaller{contract: contract}, ERC165CheckerTransactor: ERC165CheckerTransactor{contract: contract}, ERC165CheckerFilterer: ERC165CheckerFilterer{contract: contract}}, nil
  1265  }
  1266  
  1267  // NewERC165CheckerCaller creates a new read-only instance of ERC165Checker, bound to a specific deployed contract.
  1268  func NewERC165CheckerCaller(address common.Address, caller bind.ContractCaller) (*ERC165CheckerCaller, error) {
  1269  	contract, err := bindERC165Checker(address, caller, nil, nil)
  1270  	if err != nil {
  1271  		return nil, err
  1272  	}
  1273  	return &ERC165CheckerCaller{contract: contract}, nil
  1274  }
  1275  
  1276  // NewERC165CheckerTransactor creates a new write-only instance of ERC165Checker, bound to a specific deployed contract.
  1277  func NewERC165CheckerTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC165CheckerTransactor, error) {
  1278  	contract, err := bindERC165Checker(address, nil, transactor, nil)
  1279  	if err != nil {
  1280  		return nil, err
  1281  	}
  1282  	return &ERC165CheckerTransactor{contract: contract}, nil
  1283  }
  1284  
  1285  // NewERC165CheckerFilterer creates a new log filterer instance of ERC165Checker, bound to a specific deployed contract.
  1286  func NewERC165CheckerFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC165CheckerFilterer, error) {
  1287  	contract, err := bindERC165Checker(address, nil, nil, filterer)
  1288  	if err != nil {
  1289  		return nil, err
  1290  	}
  1291  	return &ERC165CheckerFilterer{contract: contract}, nil
  1292  }
  1293  
  1294  // bindERC165Checker binds a generic wrapper to an already deployed contract.
  1295  func bindERC165Checker(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1296  	parsed, err := abi.JSON(strings.NewReader(ERC165CheckerABI))
  1297  	if err != nil {
  1298  		return nil, err
  1299  	}
  1300  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1301  }
  1302  
  1303  // Call invokes the (constant) contract method with params as input values and
  1304  // sets the output to result. The result type might be a single field for simple
  1305  // returns, a slice of interfaces for anonymous returns and a struct for named
  1306  // returns.
  1307  func (_ERC165Checker *ERC165CheckerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1308  	return _ERC165Checker.Contract.ERC165CheckerCaller.contract.Call(opts, result, method, params...)
  1309  }
  1310  
  1311  // Transfer initiates a plain transaction to move funds to the contract, calling
  1312  // its default method if one is available.
  1313  func (_ERC165Checker *ERC165CheckerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1314  	return _ERC165Checker.Contract.ERC165CheckerTransactor.contract.Transfer(opts)
  1315  }
  1316  
  1317  // Transact invokes the (paid) contract method with params as input values.
  1318  func (_ERC165Checker *ERC165CheckerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1319  	return _ERC165Checker.Contract.ERC165CheckerTransactor.contract.Transact(opts, method, params...)
  1320  }
  1321  
  1322  // Call invokes the (constant) contract method with params as input values and
  1323  // sets the output to result. The result type might be a single field for simple
  1324  // returns, a slice of interfaces for anonymous returns and a struct for named
  1325  // returns.
  1326  func (_ERC165Checker *ERC165CheckerCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1327  	return _ERC165Checker.Contract.contract.Call(opts, result, method, params...)
  1328  }
  1329  
  1330  // Transfer initiates a plain transaction to move funds to the contract, calling
  1331  // its default method if one is available.
  1332  func (_ERC165Checker *ERC165CheckerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1333  	return _ERC165Checker.Contract.contract.Transfer(opts)
  1334  }
  1335  
  1336  // Transact invokes the (paid) contract method with params as input values.
  1337  func (_ERC165Checker *ERC165CheckerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1338  	return _ERC165Checker.Contract.contract.Transact(opts, method, params...)
  1339  }
  1340  
  1341  // ERC20ABI is the input ABI used to generate the binding from.
  1342  const ERC20ABI = "[{\"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\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  1343  
  1344  // ERC20FuncSigs maps the 4-byte function signature to its string representation.
  1345  var ERC20FuncSigs = map[string]string{
  1346  	"dd62ed3e": "allowance(address,address)",
  1347  	"095ea7b3": "approve(address,uint256)",
  1348  	"70a08231": "balanceOf(address)",
  1349  	"a457c2d7": "decreaseAllowance(address,uint256)",
  1350  	"39509351": "increaseAllowance(address,uint256)",
  1351  	"18160ddd": "totalSupply()",
  1352  	"a9059cbb": "transfer(address,uint256)",
  1353  	"23b872dd": "transferFrom(address,address,uint256)",
  1354  }
  1355  
  1356  // ERC20Bin is the compiled bytecode used for deploying new contracts.
  1357  var ERC20Bin = "0x608060405261083b806100136000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d5610212565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610218565b6100b96004803603604081101561013357600080fd5b506001600160a01b0381351690602001356102a5565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102f9565b6100b96004803603604081101561018557600080fd5b506001600160a01b038135169060200135610314565b6100b9600480360360408110156101b157600080fd5b506001600160a01b038135169060200135610382565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610396565b60006102096102026103c1565b84846103c5565b50600192915050565b60025490565b60006102258484846104b1565b61029b846102316103c1565b61029685604051806060016040528060288152602001610771602891396001600160a01b038a1660009081526001602052604081209061026f6103c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61060d16565b6103c5565b5060019392505050565b60006102096102b26103c1565b8461029685600160006102c36103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6106a416565b6001600160a01b031660009081526020819052604090205490565b60006102096103216103c1565b84610296856040518060600160405280602581526020016107e2602591396001600061034b6103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61060d16565b600061020961038f6103c1565b84846104b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661040a5760405162461bcd60e51b81526004018080602001828103825260248152602001806107be6024913960400191505060405180910390fd5b6001600160a01b03821661044f5760405162461bcd60e51b81526004018080602001828103825260228152602001806107296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104f65760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6001600160a01b03821661053b5760405162461bcd60e51b81526004018080602001828103825260238152602001806107066023913960400191505060405180910390fd5b61057e8160405180606001604052806026815260200161074b602691396001600160a01b038616600090815260208190526040902054919063ffffffff61060d16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546105b3908263ffffffff6106a416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561069c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610661578181015183820152602001610649565b50505050905090810190601f16801561068e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156106fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582008ca9864b08faad547b35ef43549788be26de128b59e0167fefa4ac97cd6733964736f6c634300050c0032"
  1358  
  1359  // DeployERC20 deploys a new Ethereum contract, binding an instance of ERC20 to it.
  1360  func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20, error) {
  1361  	parsed, err := abi.JSON(strings.NewReader(ERC20ABI))
  1362  	if err != nil {
  1363  		return common.Address{}, nil, nil, err
  1364  	}
  1365  
  1366  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20Bin), backend)
  1367  	if err != nil {
  1368  		return common.Address{}, nil, nil, err
  1369  	}
  1370  	return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
  1371  }
  1372  
  1373  // ERC20 is an auto generated Go binding around an Ethereum contract.
  1374  type ERC20 struct {
  1375  	ERC20Caller     // Read-only binding to the contract
  1376  	ERC20Transactor // Write-only binding to the contract
  1377  	ERC20Filterer   // Log filterer for contract events
  1378  }
  1379  
  1380  // ERC20Caller is an auto generated read-only Go binding around an Ethereum contract.
  1381  type ERC20Caller struct {
  1382  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1383  }
  1384  
  1385  // ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract.
  1386  type ERC20Transactor struct {
  1387  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1388  }
  1389  
  1390  // ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1391  type ERC20Filterer struct {
  1392  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1393  }
  1394  
  1395  // ERC20Session is an auto generated Go binding around an Ethereum contract,
  1396  // with pre-set call and transact options.
  1397  type ERC20Session struct {
  1398  	Contract     *ERC20            // Generic contract binding to set the session for
  1399  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1400  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1401  }
  1402  
  1403  // ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1404  // with pre-set call options.
  1405  type ERC20CallerSession struct {
  1406  	Contract *ERC20Caller  // Generic contract caller binding to set the session for
  1407  	CallOpts bind.CallOpts // Call options to use throughout this session
  1408  }
  1409  
  1410  // ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1411  // with pre-set transact options.
  1412  type ERC20TransactorSession struct {
  1413  	Contract     *ERC20Transactor  // Generic contract transactor binding to set the session for
  1414  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1415  }
  1416  
  1417  // ERC20Raw is an auto generated low-level Go binding around an Ethereum contract.
  1418  type ERC20Raw struct {
  1419  	Contract *ERC20 // Generic contract binding to access the raw methods on
  1420  }
  1421  
  1422  // ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1423  type ERC20CallerRaw struct {
  1424  	Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on
  1425  }
  1426  
  1427  // ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1428  type ERC20TransactorRaw struct {
  1429  	Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on
  1430  }
  1431  
  1432  // NewERC20 creates a new instance of ERC20, bound to a specific deployed contract.
  1433  func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) {
  1434  	contract, err := bindERC20(address, backend, backend, backend)
  1435  	if err != nil {
  1436  		return nil, err
  1437  	}
  1438  	return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
  1439  }
  1440  
  1441  // NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract.
  1442  func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) {
  1443  	contract, err := bindERC20(address, caller, nil, nil)
  1444  	if err != nil {
  1445  		return nil, err
  1446  	}
  1447  	return &ERC20Caller{contract: contract}, nil
  1448  }
  1449  
  1450  // NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract.
  1451  func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) {
  1452  	contract, err := bindERC20(address, nil, transactor, nil)
  1453  	if err != nil {
  1454  		return nil, err
  1455  	}
  1456  	return &ERC20Transactor{contract: contract}, nil
  1457  }
  1458  
  1459  // NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract.
  1460  func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) {
  1461  	contract, err := bindERC20(address, nil, nil, filterer)
  1462  	if err != nil {
  1463  		return nil, err
  1464  	}
  1465  	return &ERC20Filterer{contract: contract}, nil
  1466  }
  1467  
  1468  // bindERC20 binds a generic wrapper to an already deployed contract.
  1469  func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1470  	parsed, err := abi.JSON(strings.NewReader(ERC20ABI))
  1471  	if err != nil {
  1472  		return nil, err
  1473  	}
  1474  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1475  }
  1476  
  1477  // Call invokes the (constant) contract method with params as input values and
  1478  // sets the output to result. The result type might be a single field for simple
  1479  // returns, a slice of interfaces for anonymous returns and a struct for named
  1480  // returns.
  1481  func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1482  	return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...)
  1483  }
  1484  
  1485  // Transfer initiates a plain transaction to move funds to the contract, calling
  1486  // its default method if one is available.
  1487  func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1488  	return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts)
  1489  }
  1490  
  1491  // Transact invokes the (paid) contract method with params as input values.
  1492  func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1493  	return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...)
  1494  }
  1495  
  1496  // Call invokes the (constant) contract method with params as input values and
  1497  // sets the output to result. The result type might be a single field for simple
  1498  // returns, a slice of interfaces for anonymous returns and a struct for named
  1499  // returns.
  1500  func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1501  	return _ERC20.Contract.contract.Call(opts, result, method, params...)
  1502  }
  1503  
  1504  // Transfer initiates a plain transaction to move funds to the contract, calling
  1505  // its default method if one is available.
  1506  func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1507  	return _ERC20.Contract.contract.Transfer(opts)
  1508  }
  1509  
  1510  // Transact invokes the (paid) contract method with params as input values.
  1511  func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1512  	return _ERC20.Contract.contract.Transact(opts, method, params...)
  1513  }
  1514  
  1515  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1516  //
  1517  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  1518  func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  1519  	var (
  1520  		ret0 = new(*big.Int)
  1521  	)
  1522  	out := ret0
  1523  	err := _ERC20.contract.Call(opts, out, "allowance", owner, spender)
  1524  	return *ret0, err
  1525  }
  1526  
  1527  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1528  //
  1529  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  1530  func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  1531  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
  1532  }
  1533  
  1534  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1535  //
  1536  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  1537  func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  1538  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
  1539  }
  1540  
  1541  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1542  //
  1543  // Solidity: function balanceOf(address account) constant returns(uint256)
  1544  func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  1545  	var (
  1546  		ret0 = new(*big.Int)
  1547  	)
  1548  	out := ret0
  1549  	err := _ERC20.contract.Call(opts, out, "balanceOf", account)
  1550  	return *ret0, err
  1551  }
  1552  
  1553  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1554  //
  1555  // Solidity: function balanceOf(address account) constant returns(uint256)
  1556  func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
  1557  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
  1558  }
  1559  
  1560  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1561  //
  1562  // Solidity: function balanceOf(address account) constant returns(uint256)
  1563  func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  1564  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
  1565  }
  1566  
  1567  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1568  //
  1569  // Solidity: function totalSupply() constant returns(uint256)
  1570  func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  1571  	var (
  1572  		ret0 = new(*big.Int)
  1573  	)
  1574  	out := ret0
  1575  	err := _ERC20.contract.Call(opts, out, "totalSupply")
  1576  	return *ret0, err
  1577  }
  1578  
  1579  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1580  //
  1581  // Solidity: function totalSupply() constant returns(uint256)
  1582  func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) {
  1583  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
  1584  }
  1585  
  1586  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1587  //
  1588  // Solidity: function totalSupply() constant returns(uint256)
  1589  func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) {
  1590  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
  1591  }
  1592  
  1593  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1594  //
  1595  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  1596  func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1597  	return _ERC20.contract.Transact(opts, "approve", spender, amount)
  1598  }
  1599  
  1600  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1601  //
  1602  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  1603  func (_ERC20 *ERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1604  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount)
  1605  }
  1606  
  1607  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1608  //
  1609  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  1610  func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1611  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount)
  1612  }
  1613  
  1614  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  1615  //
  1616  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  1617  func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  1618  	return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  1619  }
  1620  
  1621  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  1622  //
  1623  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  1624  func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  1625  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
  1626  }
  1627  
  1628  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  1629  //
  1630  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  1631  func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  1632  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
  1633  }
  1634  
  1635  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  1636  //
  1637  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  1638  func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  1639  	return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  1640  }
  1641  
  1642  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  1643  //
  1644  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  1645  func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  1646  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
  1647  }
  1648  
  1649  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  1650  //
  1651  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  1652  func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  1653  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
  1654  }
  1655  
  1656  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1657  //
  1658  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  1659  func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1660  	return _ERC20.contract.Transact(opts, "transfer", recipient, amount)
  1661  }
  1662  
  1663  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1664  //
  1665  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  1666  func (_ERC20 *ERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1667  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
  1668  }
  1669  
  1670  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1671  //
  1672  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  1673  func (_ERC20 *ERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1674  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
  1675  }
  1676  
  1677  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1678  //
  1679  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  1680  func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1681  	return _ERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  1682  }
  1683  
  1684  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1685  //
  1686  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  1687  func (_ERC20 *ERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1688  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
  1689  }
  1690  
  1691  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1692  //
  1693  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  1694  func (_ERC20 *ERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1695  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
  1696  }
  1697  
  1698  // ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract.
  1699  type ERC20ApprovalIterator struct {
  1700  	Event *ERC20Approval // Event containing the contract specifics and raw log
  1701  
  1702  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1703  	event    string              // Event name to use for unpacking event data
  1704  
  1705  	logs chan types.Log        // Log channel receiving the found contract events
  1706  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1707  	done bool                  // Whether the subscription completed delivering logs
  1708  	fail error                 // Occurred error to stop iteration
  1709  }
  1710  
  1711  // Next advances the iterator to the subsequent event, returning whether there
  1712  // are any more events found. In case of a retrieval or parsing error, false is
  1713  // returned and Error() can be queried for the exact failure.
  1714  func (it *ERC20ApprovalIterator) Next() bool {
  1715  	// If the iterator failed, stop iterating
  1716  	if it.fail != nil {
  1717  		return false
  1718  	}
  1719  	// If the iterator completed, deliver directly whatever's available
  1720  	if it.done {
  1721  		select {
  1722  		case log := <-it.logs:
  1723  			it.Event = new(ERC20Approval)
  1724  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1725  				it.fail = err
  1726  				return false
  1727  			}
  1728  			it.Event.Raw = log
  1729  			return true
  1730  
  1731  		default:
  1732  			return false
  1733  		}
  1734  	}
  1735  	// Iterator still in progress, wait for either a data or an error event
  1736  	select {
  1737  	case log := <-it.logs:
  1738  		it.Event = new(ERC20Approval)
  1739  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1740  			it.fail = err
  1741  			return false
  1742  		}
  1743  		it.Event.Raw = log
  1744  		return true
  1745  
  1746  	case err := <-it.sub.Err():
  1747  		it.done = true
  1748  		it.fail = err
  1749  		return it.Next()
  1750  	}
  1751  }
  1752  
  1753  // Error returns any retrieval or parsing error occurred during filtering.
  1754  func (it *ERC20ApprovalIterator) Error() error {
  1755  	return it.fail
  1756  }
  1757  
  1758  // Close terminates the iteration process, releasing any pending underlying
  1759  // resources.
  1760  func (it *ERC20ApprovalIterator) Close() error {
  1761  	it.sub.Unsubscribe()
  1762  	return nil
  1763  }
  1764  
  1765  // ERC20Approval represents a Approval event raised by the ERC20 contract.
  1766  type ERC20Approval struct {
  1767  	Owner   common.Address
  1768  	Spender common.Address
  1769  	Value   *big.Int
  1770  	Raw     types.Log // Blockchain specific contextual infos
  1771  }
  1772  
  1773  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1774  //
  1775  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1776  func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) {
  1777  
  1778  	var ownerRule []interface{}
  1779  	for _, ownerItem := range owner {
  1780  		ownerRule = append(ownerRule, ownerItem)
  1781  	}
  1782  	var spenderRule []interface{}
  1783  	for _, spenderItem := range spender {
  1784  		spenderRule = append(spenderRule, spenderItem)
  1785  	}
  1786  
  1787  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  1788  	if err != nil {
  1789  		return nil, err
  1790  	}
  1791  	return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
  1792  }
  1793  
  1794  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1795  //
  1796  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1797  func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  1798  
  1799  	var ownerRule []interface{}
  1800  	for _, ownerItem := range owner {
  1801  		ownerRule = append(ownerRule, ownerItem)
  1802  	}
  1803  	var spenderRule []interface{}
  1804  	for _, spenderItem := range spender {
  1805  		spenderRule = append(spenderRule, spenderItem)
  1806  	}
  1807  
  1808  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  1809  	if err != nil {
  1810  		return nil, err
  1811  	}
  1812  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1813  		defer sub.Unsubscribe()
  1814  		for {
  1815  			select {
  1816  			case log := <-logs:
  1817  				// New log arrived, parse the event and forward to the user
  1818  				event := new(ERC20Approval)
  1819  				if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  1820  					return err
  1821  				}
  1822  				event.Raw = log
  1823  
  1824  				select {
  1825  				case sink <- event:
  1826  				case err := <-sub.Err():
  1827  					return err
  1828  				case <-quit:
  1829  					return nil
  1830  				}
  1831  			case err := <-sub.Err():
  1832  				return err
  1833  			case <-quit:
  1834  				return nil
  1835  			}
  1836  		}
  1837  	}), nil
  1838  }
  1839  
  1840  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1841  //
  1842  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1843  func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) {
  1844  	event := new(ERC20Approval)
  1845  	if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  1846  		return nil, err
  1847  	}
  1848  	return event, nil
  1849  }
  1850  
  1851  // ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract.
  1852  type ERC20TransferIterator struct {
  1853  	Event *ERC20Transfer // Event containing the contract specifics and raw log
  1854  
  1855  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1856  	event    string              // Event name to use for unpacking event data
  1857  
  1858  	logs chan types.Log        // Log channel receiving the found contract events
  1859  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1860  	done bool                  // Whether the subscription completed delivering logs
  1861  	fail error                 // Occurred error to stop iteration
  1862  }
  1863  
  1864  // Next advances the iterator to the subsequent event, returning whether there
  1865  // are any more events found. In case of a retrieval or parsing error, false is
  1866  // returned and Error() can be queried for the exact failure.
  1867  func (it *ERC20TransferIterator) Next() bool {
  1868  	// If the iterator failed, stop iterating
  1869  	if it.fail != nil {
  1870  		return false
  1871  	}
  1872  	// If the iterator completed, deliver directly whatever's available
  1873  	if it.done {
  1874  		select {
  1875  		case log := <-it.logs:
  1876  			it.Event = new(ERC20Transfer)
  1877  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1878  				it.fail = err
  1879  				return false
  1880  			}
  1881  			it.Event.Raw = log
  1882  			return true
  1883  
  1884  		default:
  1885  			return false
  1886  		}
  1887  	}
  1888  	// Iterator still in progress, wait for either a data or an error event
  1889  	select {
  1890  	case log := <-it.logs:
  1891  		it.Event = new(ERC20Transfer)
  1892  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1893  			it.fail = err
  1894  			return false
  1895  		}
  1896  		it.Event.Raw = log
  1897  		return true
  1898  
  1899  	case err := <-it.sub.Err():
  1900  		it.done = true
  1901  		it.fail = err
  1902  		return it.Next()
  1903  	}
  1904  }
  1905  
  1906  // Error returns any retrieval or parsing error occurred during filtering.
  1907  func (it *ERC20TransferIterator) Error() error {
  1908  	return it.fail
  1909  }
  1910  
  1911  // Close terminates the iteration process, releasing any pending underlying
  1912  // resources.
  1913  func (it *ERC20TransferIterator) Close() error {
  1914  	it.sub.Unsubscribe()
  1915  	return nil
  1916  }
  1917  
  1918  // ERC20Transfer represents a Transfer event raised by the ERC20 contract.
  1919  type ERC20Transfer struct {
  1920  	From  common.Address
  1921  	To    common.Address
  1922  	Value *big.Int
  1923  	Raw   types.Log // Blockchain specific contextual infos
  1924  }
  1925  
  1926  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1927  //
  1928  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  1929  func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) {
  1930  
  1931  	var fromRule []interface{}
  1932  	for _, fromItem := range from {
  1933  		fromRule = append(fromRule, fromItem)
  1934  	}
  1935  	var toRule []interface{}
  1936  	for _, toItem := range to {
  1937  		toRule = append(toRule, toItem)
  1938  	}
  1939  
  1940  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  1941  	if err != nil {
  1942  		return nil, err
  1943  	}
  1944  	return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
  1945  }
  1946  
  1947  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1948  //
  1949  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  1950  func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  1951  
  1952  	var fromRule []interface{}
  1953  	for _, fromItem := range from {
  1954  		fromRule = append(fromRule, fromItem)
  1955  	}
  1956  	var toRule []interface{}
  1957  	for _, toItem := range to {
  1958  		toRule = append(toRule, toItem)
  1959  	}
  1960  
  1961  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  1962  	if err != nil {
  1963  		return nil, err
  1964  	}
  1965  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1966  		defer sub.Unsubscribe()
  1967  		for {
  1968  			select {
  1969  			case log := <-logs:
  1970  				// New log arrived, parse the event and forward to the user
  1971  				event := new(ERC20Transfer)
  1972  				if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  1973  					return err
  1974  				}
  1975  				event.Raw = log
  1976  
  1977  				select {
  1978  				case sink <- event:
  1979  				case err := <-sub.Err():
  1980  					return err
  1981  				case <-quit:
  1982  					return nil
  1983  				}
  1984  			case err := <-sub.Err():
  1985  				return err
  1986  			case <-quit:
  1987  				return nil
  1988  			}
  1989  		}
  1990  	}), nil
  1991  }
  1992  
  1993  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1994  //
  1995  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  1996  func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) {
  1997  	event := new(ERC20Transfer)
  1998  	if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  1999  		return nil, err
  2000  	}
  2001  	return event, nil
  2002  }
  2003  
  2004  // ERC20BurnableABI is the input ABI used to generate the binding from.
  2005  const ERC20BurnableABI = "[{\"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\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  2006  
  2007  // ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation.
  2008  var ERC20BurnableFuncSigs = map[string]string{
  2009  	"dd62ed3e": "allowance(address,address)",
  2010  	"095ea7b3": "approve(address,uint256)",
  2011  	"70a08231": "balanceOf(address)",
  2012  	"42966c68": "burn(uint256)",
  2013  	"79cc6790": "burnFrom(address,uint256)",
  2014  	"a457c2d7": "decreaseAllowance(address,uint256)",
  2015  	"39509351": "increaseAllowance(address,uint256)",
  2016  	"18160ddd": "totalSupply()",
  2017  	"a9059cbb": "transfer(address,uint256)",
  2018  	"23b872dd": "transferFrom(address,address,uint256)",
  2019  }
  2020  
  2021  // ERC20BurnableBin is the compiled bytecode used for deploying new contracts.
  2022  var ERC20BurnableBin = "0x6080604052610ab7806100136000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb610273565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610279565b6100cf6004803603604081101561014957600080fd5b506001600160a01b038135169060200135610306565b61017c6004803603602081101561017557600080fd5b503561035a565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b031661036e565b61017c600480360360408110156101ba57600080fd5b506001600160a01b038135169060200135610389565b6100cf600480360360408110156101e657600080fd5b506001600160a01b038135169060200135610397565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610405565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610419565b600061026a610263610444565b8484610448565b50600192915050565b60025490565b6000610286848484610534565b6102fc84610292610444565b6102f7856040518060600160405280602881526020016109a8602891396001600160a01b038a166000908152600160205260408120906102d0610444565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61069016565b610448565b5060019392505050565b600061026a610313610444565b846102f78560016000610324610444565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61072716565b61036b610365610444565b82610788565b50565b6001600160a01b031660009081526020819052604090205490565b6103938282610884565b5050565b600061026a6103a4610444565b846102f785604051806060016040528060258152602001610a5e60259139600160006103ce610444565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61069016565b600061026a610412610444565b8484610534565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661048d5760405162461bcd60e51b8152600401808060200182810382526024815260200180610a3a6024913960400191505060405180910390fd5b6001600160a01b0382166104d25760405162461bcd60e51b81526004018080602001828103825260228152602001806109606022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105795760405162461bcd60e51b8152600401808060200182810382526025815260200180610a156025913960400191505060405180910390fd5b6001600160a01b0382166105be5760405162461bcd60e51b815260040180806020018281038252602381526020018061091b6023913960400191505060405180910390fd5b61060181604051806060016040528060268152602001610982602691396001600160a01b038616600090815260208190526040902054919063ffffffff61069016565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610636908263ffffffff61072716565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561071f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106e45781810151838201526020016106cc565b50505050905090810190601f1680156107115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610781576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166107cd5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b6108108160405180606001604052806022815260200161093e602291396001600160a01b038516600090815260208190526040902054919063ffffffff61069016565b6001600160a01b03831660009081526020819052604090205560025461083c908263ffffffff6108d816565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b61088e8282610788565b6103938261089a610444565b6102f7846040518060600160405280602481526020016109d0602491396001600160a01b0388166000908152600160205260408120906102d0610444565b600061078183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061069056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820f1d69ab24aa4e03a9c57d269487eac94ddd30d01e9f8e7fb8561cbef87d6535a64736f6c634300050c0032"
  2023  
  2024  // DeployERC20Burnable deploys a new Ethereum contract, binding an instance of ERC20Burnable to it.
  2025  func DeployERC20Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Burnable, error) {
  2026  	parsed, err := abi.JSON(strings.NewReader(ERC20BurnableABI))
  2027  	if err != nil {
  2028  		return common.Address{}, nil, nil, err
  2029  	}
  2030  
  2031  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20BurnableBin), backend)
  2032  	if err != nil {
  2033  		return common.Address{}, nil, nil, err
  2034  	}
  2035  	return address, tx, &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
  2036  }
  2037  
  2038  // ERC20Burnable is an auto generated Go binding around an Ethereum contract.
  2039  type ERC20Burnable struct {
  2040  	ERC20BurnableCaller     // Read-only binding to the contract
  2041  	ERC20BurnableTransactor // Write-only binding to the contract
  2042  	ERC20BurnableFilterer   // Log filterer for contract events
  2043  }
  2044  
  2045  // ERC20BurnableCaller is an auto generated read-only Go binding around an Ethereum contract.
  2046  type ERC20BurnableCaller struct {
  2047  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2048  }
  2049  
  2050  // ERC20BurnableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2051  type ERC20BurnableTransactor struct {
  2052  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2053  }
  2054  
  2055  // ERC20BurnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2056  type ERC20BurnableFilterer struct {
  2057  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2058  }
  2059  
  2060  // ERC20BurnableSession is an auto generated Go binding around an Ethereum contract,
  2061  // with pre-set call and transact options.
  2062  type ERC20BurnableSession struct {
  2063  	Contract     *ERC20Burnable    // Generic contract binding to set the session for
  2064  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2065  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2066  }
  2067  
  2068  // ERC20BurnableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2069  // with pre-set call options.
  2070  type ERC20BurnableCallerSession struct {
  2071  	Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for
  2072  	CallOpts bind.CallOpts        // Call options to use throughout this session
  2073  }
  2074  
  2075  // ERC20BurnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2076  // with pre-set transact options.
  2077  type ERC20BurnableTransactorSession struct {
  2078  	Contract     *ERC20BurnableTransactor // Generic contract transactor binding to set the session for
  2079  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  2080  }
  2081  
  2082  // ERC20BurnableRaw is an auto generated low-level Go binding around an Ethereum contract.
  2083  type ERC20BurnableRaw struct {
  2084  	Contract *ERC20Burnable // Generic contract binding to access the raw methods on
  2085  }
  2086  
  2087  // ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2088  type ERC20BurnableCallerRaw struct {
  2089  	Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on
  2090  }
  2091  
  2092  // ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2093  type ERC20BurnableTransactorRaw struct {
  2094  	Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on
  2095  }
  2096  
  2097  // NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract.
  2098  func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) {
  2099  	contract, err := bindERC20Burnable(address, backend, backend, backend)
  2100  	if err != nil {
  2101  		return nil, err
  2102  	}
  2103  	return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
  2104  }
  2105  
  2106  // NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract.
  2107  func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) {
  2108  	contract, err := bindERC20Burnable(address, caller, nil, nil)
  2109  	if err != nil {
  2110  		return nil, err
  2111  	}
  2112  	return &ERC20BurnableCaller{contract: contract}, nil
  2113  }
  2114  
  2115  // NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract.
  2116  func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) {
  2117  	contract, err := bindERC20Burnable(address, nil, transactor, nil)
  2118  	if err != nil {
  2119  		return nil, err
  2120  	}
  2121  	return &ERC20BurnableTransactor{contract: contract}, nil
  2122  }
  2123  
  2124  // NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract.
  2125  func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) {
  2126  	contract, err := bindERC20Burnable(address, nil, nil, filterer)
  2127  	if err != nil {
  2128  		return nil, err
  2129  	}
  2130  	return &ERC20BurnableFilterer{contract: contract}, nil
  2131  }
  2132  
  2133  // bindERC20Burnable binds a generic wrapper to an already deployed contract.
  2134  func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2135  	parsed, err := abi.JSON(strings.NewReader(ERC20BurnableABI))
  2136  	if err != nil {
  2137  		return nil, err
  2138  	}
  2139  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2140  }
  2141  
  2142  // Call invokes the (constant) contract method with params as input values and
  2143  // sets the output to result. The result type might be a single field for simple
  2144  // returns, a slice of interfaces for anonymous returns and a struct for named
  2145  // returns.
  2146  func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2147  	return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...)
  2148  }
  2149  
  2150  // Transfer initiates a plain transaction to move funds to the contract, calling
  2151  // its default method if one is available.
  2152  func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2153  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts)
  2154  }
  2155  
  2156  // Transact invokes the (paid) contract method with params as input values.
  2157  func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2158  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...)
  2159  }
  2160  
  2161  // Call invokes the (constant) contract method with params as input values and
  2162  // sets the output to result. The result type might be a single field for simple
  2163  // returns, a slice of interfaces for anonymous returns and a struct for named
  2164  // returns.
  2165  func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2166  	return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...)
  2167  }
  2168  
  2169  // Transfer initiates a plain transaction to move funds to the contract, calling
  2170  // its default method if one is available.
  2171  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2172  	return _ERC20Burnable.Contract.contract.Transfer(opts)
  2173  }
  2174  
  2175  // Transact invokes the (paid) contract method with params as input values.
  2176  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2177  	return _ERC20Burnable.Contract.contract.Transact(opts, method, params...)
  2178  }
  2179  
  2180  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2181  //
  2182  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2183  func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  2184  	var (
  2185  		ret0 = new(*big.Int)
  2186  	)
  2187  	out := ret0
  2188  	err := _ERC20Burnable.contract.Call(opts, out, "allowance", owner, spender)
  2189  	return *ret0, err
  2190  }
  2191  
  2192  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2193  //
  2194  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2195  func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2196  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
  2197  }
  2198  
  2199  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2200  //
  2201  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2202  func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2203  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
  2204  }
  2205  
  2206  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2207  //
  2208  // Solidity: function balanceOf(address account) constant returns(uint256)
  2209  func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  2210  	var (
  2211  		ret0 = new(*big.Int)
  2212  	)
  2213  	out := ret0
  2214  	err := _ERC20Burnable.contract.Call(opts, out, "balanceOf", account)
  2215  	return *ret0, err
  2216  }
  2217  
  2218  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2219  //
  2220  // Solidity: function balanceOf(address account) constant returns(uint256)
  2221  func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) {
  2222  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
  2223  }
  2224  
  2225  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2226  //
  2227  // Solidity: function balanceOf(address account) constant returns(uint256)
  2228  func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  2229  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
  2230  }
  2231  
  2232  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2233  //
  2234  // Solidity: function totalSupply() constant returns(uint256)
  2235  func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  2236  	var (
  2237  		ret0 = new(*big.Int)
  2238  	)
  2239  	out := ret0
  2240  	err := _ERC20Burnable.contract.Call(opts, out, "totalSupply")
  2241  	return *ret0, err
  2242  }
  2243  
  2244  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2245  //
  2246  // Solidity: function totalSupply() constant returns(uint256)
  2247  func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) {
  2248  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
  2249  }
  2250  
  2251  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2252  //
  2253  // Solidity: function totalSupply() constant returns(uint256)
  2254  func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) {
  2255  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
  2256  }
  2257  
  2258  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2259  //
  2260  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  2261  func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  2262  	return _ERC20Burnable.contract.Transact(opts, "approve", spender, amount)
  2263  }
  2264  
  2265  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2266  //
  2267  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  2268  func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  2269  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, amount)
  2270  }
  2271  
  2272  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2273  //
  2274  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  2275  func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  2276  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, amount)
  2277  }
  2278  
  2279  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  2280  //
  2281  // Solidity: function burn(uint256 amount) returns()
  2282  func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
  2283  	return _ERC20Burnable.contract.Transact(opts, "burn", amount)
  2284  }
  2285  
  2286  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  2287  //
  2288  // Solidity: function burn(uint256 amount) returns()
  2289  func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) {
  2290  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
  2291  }
  2292  
  2293  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  2294  //
  2295  // Solidity: function burn(uint256 amount) returns()
  2296  func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
  2297  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
  2298  }
  2299  
  2300  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  2301  //
  2302  // Solidity: function burnFrom(address account, uint256 amount) returns()
  2303  func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
  2304  	return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount)
  2305  }
  2306  
  2307  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  2308  //
  2309  // Solidity: function burnFrom(address account, uint256 amount) returns()
  2310  func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
  2311  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
  2312  }
  2313  
  2314  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  2315  //
  2316  // Solidity: function burnFrom(address account, uint256 amount) returns()
  2317  func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
  2318  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
  2319  }
  2320  
  2321  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2322  //
  2323  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2324  func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2325  	return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  2326  }
  2327  
  2328  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2329  //
  2330  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2331  func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2332  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
  2333  }
  2334  
  2335  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2336  //
  2337  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2338  func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2339  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
  2340  }
  2341  
  2342  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2343  //
  2344  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2345  func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2346  	return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  2347  }
  2348  
  2349  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2350  //
  2351  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2352  func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2353  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
  2354  }
  2355  
  2356  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2357  //
  2358  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2359  func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2360  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
  2361  }
  2362  
  2363  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2364  //
  2365  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2366  func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2367  	return _ERC20Burnable.contract.Transact(opts, "transfer", recipient, amount)
  2368  }
  2369  
  2370  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2371  //
  2372  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2373  func (_ERC20Burnable *ERC20BurnableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2374  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
  2375  }
  2376  
  2377  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2378  //
  2379  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2380  func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2381  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
  2382  }
  2383  
  2384  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2385  //
  2386  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2387  func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2388  	return _ERC20Burnable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  2389  }
  2390  
  2391  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2392  //
  2393  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2394  func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2395  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
  2396  }
  2397  
  2398  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2399  //
  2400  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2401  func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2402  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
  2403  }
  2404  
  2405  // ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract.
  2406  type ERC20BurnableApprovalIterator struct {
  2407  	Event *ERC20BurnableApproval // Event containing the contract specifics and raw log
  2408  
  2409  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2410  	event    string              // Event name to use for unpacking event data
  2411  
  2412  	logs chan types.Log        // Log channel receiving the found contract events
  2413  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2414  	done bool                  // Whether the subscription completed delivering logs
  2415  	fail error                 // Occurred error to stop iteration
  2416  }
  2417  
  2418  // Next advances the iterator to the subsequent event, returning whether there
  2419  // are any more events found. In case of a retrieval or parsing error, false is
  2420  // returned and Error() can be queried for the exact failure.
  2421  func (it *ERC20BurnableApprovalIterator) Next() bool {
  2422  	// If the iterator failed, stop iterating
  2423  	if it.fail != nil {
  2424  		return false
  2425  	}
  2426  	// If the iterator completed, deliver directly whatever's available
  2427  	if it.done {
  2428  		select {
  2429  		case log := <-it.logs:
  2430  			it.Event = new(ERC20BurnableApproval)
  2431  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2432  				it.fail = err
  2433  				return false
  2434  			}
  2435  			it.Event.Raw = log
  2436  			return true
  2437  
  2438  		default:
  2439  			return false
  2440  		}
  2441  	}
  2442  	// Iterator still in progress, wait for either a data or an error event
  2443  	select {
  2444  	case log := <-it.logs:
  2445  		it.Event = new(ERC20BurnableApproval)
  2446  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2447  			it.fail = err
  2448  			return false
  2449  		}
  2450  		it.Event.Raw = log
  2451  		return true
  2452  
  2453  	case err := <-it.sub.Err():
  2454  		it.done = true
  2455  		it.fail = err
  2456  		return it.Next()
  2457  	}
  2458  }
  2459  
  2460  // Error returns any retrieval or parsing error occurred during filtering.
  2461  func (it *ERC20BurnableApprovalIterator) Error() error {
  2462  	return it.fail
  2463  }
  2464  
  2465  // Close terminates the iteration process, releasing any pending underlying
  2466  // resources.
  2467  func (it *ERC20BurnableApprovalIterator) Close() error {
  2468  	it.sub.Unsubscribe()
  2469  	return nil
  2470  }
  2471  
  2472  // ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract.
  2473  type ERC20BurnableApproval struct {
  2474  	Owner   common.Address
  2475  	Spender common.Address
  2476  	Value   *big.Int
  2477  	Raw     types.Log // Blockchain specific contextual infos
  2478  }
  2479  
  2480  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2481  //
  2482  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2483  func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) {
  2484  
  2485  	var ownerRule []interface{}
  2486  	for _, ownerItem := range owner {
  2487  		ownerRule = append(ownerRule, ownerItem)
  2488  	}
  2489  	var spenderRule []interface{}
  2490  	for _, spenderItem := range spender {
  2491  		spenderRule = append(spenderRule, spenderItem)
  2492  	}
  2493  
  2494  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  2495  	if err != nil {
  2496  		return nil, err
  2497  	}
  2498  	return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
  2499  }
  2500  
  2501  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2502  //
  2503  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2504  func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  2505  
  2506  	var ownerRule []interface{}
  2507  	for _, ownerItem := range owner {
  2508  		ownerRule = append(ownerRule, ownerItem)
  2509  	}
  2510  	var spenderRule []interface{}
  2511  	for _, spenderItem := range spender {
  2512  		spenderRule = append(spenderRule, spenderItem)
  2513  	}
  2514  
  2515  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  2516  	if err != nil {
  2517  		return nil, err
  2518  	}
  2519  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2520  		defer sub.Unsubscribe()
  2521  		for {
  2522  			select {
  2523  			case log := <-logs:
  2524  				// New log arrived, parse the event and forward to the user
  2525  				event := new(ERC20BurnableApproval)
  2526  				if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  2527  					return err
  2528  				}
  2529  				event.Raw = log
  2530  
  2531  				select {
  2532  				case sink <- event:
  2533  				case err := <-sub.Err():
  2534  					return err
  2535  				case <-quit:
  2536  					return nil
  2537  				}
  2538  			case err := <-sub.Err():
  2539  				return err
  2540  			case <-quit:
  2541  				return nil
  2542  			}
  2543  		}
  2544  	}), nil
  2545  }
  2546  
  2547  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2548  //
  2549  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2550  func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) {
  2551  	event := new(ERC20BurnableApproval)
  2552  	if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  2553  		return nil, err
  2554  	}
  2555  	return event, nil
  2556  }
  2557  
  2558  // ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract.
  2559  type ERC20BurnableTransferIterator struct {
  2560  	Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log
  2561  
  2562  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2563  	event    string              // Event name to use for unpacking event data
  2564  
  2565  	logs chan types.Log        // Log channel receiving the found contract events
  2566  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2567  	done bool                  // Whether the subscription completed delivering logs
  2568  	fail error                 // Occurred error to stop iteration
  2569  }
  2570  
  2571  // Next advances the iterator to the subsequent event, returning whether there
  2572  // are any more events found. In case of a retrieval or parsing error, false is
  2573  // returned and Error() can be queried for the exact failure.
  2574  func (it *ERC20BurnableTransferIterator) Next() bool {
  2575  	// If the iterator failed, stop iterating
  2576  	if it.fail != nil {
  2577  		return false
  2578  	}
  2579  	// If the iterator completed, deliver directly whatever's available
  2580  	if it.done {
  2581  		select {
  2582  		case log := <-it.logs:
  2583  			it.Event = new(ERC20BurnableTransfer)
  2584  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2585  				it.fail = err
  2586  				return false
  2587  			}
  2588  			it.Event.Raw = log
  2589  			return true
  2590  
  2591  		default:
  2592  			return false
  2593  		}
  2594  	}
  2595  	// Iterator still in progress, wait for either a data or an error event
  2596  	select {
  2597  	case log := <-it.logs:
  2598  		it.Event = new(ERC20BurnableTransfer)
  2599  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2600  			it.fail = err
  2601  			return false
  2602  		}
  2603  		it.Event.Raw = log
  2604  		return true
  2605  
  2606  	case err := <-it.sub.Err():
  2607  		it.done = true
  2608  		it.fail = err
  2609  		return it.Next()
  2610  	}
  2611  }
  2612  
  2613  // Error returns any retrieval or parsing error occurred during filtering.
  2614  func (it *ERC20BurnableTransferIterator) Error() error {
  2615  	return it.fail
  2616  }
  2617  
  2618  // Close terminates the iteration process, releasing any pending underlying
  2619  // resources.
  2620  func (it *ERC20BurnableTransferIterator) Close() error {
  2621  	it.sub.Unsubscribe()
  2622  	return nil
  2623  }
  2624  
  2625  // ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract.
  2626  type ERC20BurnableTransfer struct {
  2627  	From  common.Address
  2628  	To    common.Address
  2629  	Value *big.Int
  2630  	Raw   types.Log // Blockchain specific contextual infos
  2631  }
  2632  
  2633  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2634  //
  2635  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2636  func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) {
  2637  
  2638  	var fromRule []interface{}
  2639  	for _, fromItem := range from {
  2640  		fromRule = append(fromRule, fromItem)
  2641  	}
  2642  	var toRule []interface{}
  2643  	for _, toItem := range to {
  2644  		toRule = append(toRule, toItem)
  2645  	}
  2646  
  2647  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  2648  	if err != nil {
  2649  		return nil, err
  2650  	}
  2651  	return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2652  }
  2653  
  2654  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2655  //
  2656  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2657  func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  2658  
  2659  	var fromRule []interface{}
  2660  	for _, fromItem := range from {
  2661  		fromRule = append(fromRule, fromItem)
  2662  	}
  2663  	var toRule []interface{}
  2664  	for _, toItem := range to {
  2665  		toRule = append(toRule, toItem)
  2666  	}
  2667  
  2668  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  2669  	if err != nil {
  2670  		return nil, err
  2671  	}
  2672  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2673  		defer sub.Unsubscribe()
  2674  		for {
  2675  			select {
  2676  			case log := <-logs:
  2677  				// New log arrived, parse the event and forward to the user
  2678  				event := new(ERC20BurnableTransfer)
  2679  				if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2680  					return err
  2681  				}
  2682  				event.Raw = log
  2683  
  2684  				select {
  2685  				case sink <- event:
  2686  				case err := <-sub.Err():
  2687  					return err
  2688  				case <-quit:
  2689  					return nil
  2690  				}
  2691  			case err := <-sub.Err():
  2692  				return err
  2693  			case <-quit:
  2694  				return nil
  2695  			}
  2696  		}
  2697  	}), nil
  2698  }
  2699  
  2700  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2701  //
  2702  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2703  func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) {
  2704  	event := new(ERC20BurnableTransfer)
  2705  	if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2706  		return nil, err
  2707  	}
  2708  	return event, nil
  2709  }
  2710  
  2711  // ERC20DetailedABI is the input ABI used to generate the binding from.
  2712  const ERC20DetailedABI = "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"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\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"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\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  2713  
  2714  // ERC20DetailedFuncSigs maps the 4-byte function signature to its string representation.
  2715  var ERC20DetailedFuncSigs = map[string]string{
  2716  	"dd62ed3e": "allowance(address,address)",
  2717  	"095ea7b3": "approve(address,uint256)",
  2718  	"70a08231": "balanceOf(address)",
  2719  	"313ce567": "decimals()",
  2720  	"06fdde03": "name()",
  2721  	"95d89b41": "symbol()",
  2722  	"18160ddd": "totalSupply()",
  2723  	"a9059cbb": "transfer(address,uint256)",
  2724  	"23b872dd": "transferFrom(address,address,uint256)",
  2725  }
  2726  
  2727  // ERC20Detailed is an auto generated Go binding around an Ethereum contract.
  2728  type ERC20Detailed struct {
  2729  	ERC20DetailedCaller     // Read-only binding to the contract
  2730  	ERC20DetailedTransactor // Write-only binding to the contract
  2731  	ERC20DetailedFilterer   // Log filterer for contract events
  2732  }
  2733  
  2734  // ERC20DetailedCaller is an auto generated read-only Go binding around an Ethereum contract.
  2735  type ERC20DetailedCaller struct {
  2736  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2737  }
  2738  
  2739  // ERC20DetailedTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2740  type ERC20DetailedTransactor struct {
  2741  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2742  }
  2743  
  2744  // ERC20DetailedFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2745  type ERC20DetailedFilterer struct {
  2746  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2747  }
  2748  
  2749  // ERC20DetailedSession is an auto generated Go binding around an Ethereum contract,
  2750  // with pre-set call and transact options.
  2751  type ERC20DetailedSession struct {
  2752  	Contract     *ERC20Detailed    // Generic contract binding to set the session for
  2753  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2754  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2755  }
  2756  
  2757  // ERC20DetailedCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2758  // with pre-set call options.
  2759  type ERC20DetailedCallerSession struct {
  2760  	Contract *ERC20DetailedCaller // Generic contract caller binding to set the session for
  2761  	CallOpts bind.CallOpts        // Call options to use throughout this session
  2762  }
  2763  
  2764  // ERC20DetailedTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2765  // with pre-set transact options.
  2766  type ERC20DetailedTransactorSession struct {
  2767  	Contract     *ERC20DetailedTransactor // Generic contract transactor binding to set the session for
  2768  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  2769  }
  2770  
  2771  // ERC20DetailedRaw is an auto generated low-level Go binding around an Ethereum contract.
  2772  type ERC20DetailedRaw struct {
  2773  	Contract *ERC20Detailed // Generic contract binding to access the raw methods on
  2774  }
  2775  
  2776  // ERC20DetailedCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2777  type ERC20DetailedCallerRaw struct {
  2778  	Contract *ERC20DetailedCaller // Generic read-only contract binding to access the raw methods on
  2779  }
  2780  
  2781  // ERC20DetailedTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2782  type ERC20DetailedTransactorRaw struct {
  2783  	Contract *ERC20DetailedTransactor // Generic write-only contract binding to access the raw methods on
  2784  }
  2785  
  2786  // NewERC20Detailed creates a new instance of ERC20Detailed, bound to a specific deployed contract.
  2787  func NewERC20Detailed(address common.Address, backend bind.ContractBackend) (*ERC20Detailed, error) {
  2788  	contract, err := bindERC20Detailed(address, backend, backend, backend)
  2789  	if err != nil {
  2790  		return nil, err
  2791  	}
  2792  	return &ERC20Detailed{ERC20DetailedCaller: ERC20DetailedCaller{contract: contract}, ERC20DetailedTransactor: ERC20DetailedTransactor{contract: contract}, ERC20DetailedFilterer: ERC20DetailedFilterer{contract: contract}}, nil
  2793  }
  2794  
  2795  // NewERC20DetailedCaller creates a new read-only instance of ERC20Detailed, bound to a specific deployed contract.
  2796  func NewERC20DetailedCaller(address common.Address, caller bind.ContractCaller) (*ERC20DetailedCaller, error) {
  2797  	contract, err := bindERC20Detailed(address, caller, nil, nil)
  2798  	if err != nil {
  2799  		return nil, err
  2800  	}
  2801  	return &ERC20DetailedCaller{contract: contract}, nil
  2802  }
  2803  
  2804  // NewERC20DetailedTransactor creates a new write-only instance of ERC20Detailed, bound to a specific deployed contract.
  2805  func NewERC20DetailedTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20DetailedTransactor, error) {
  2806  	contract, err := bindERC20Detailed(address, nil, transactor, nil)
  2807  	if err != nil {
  2808  		return nil, err
  2809  	}
  2810  	return &ERC20DetailedTransactor{contract: contract}, nil
  2811  }
  2812  
  2813  // NewERC20DetailedFilterer creates a new log filterer instance of ERC20Detailed, bound to a specific deployed contract.
  2814  func NewERC20DetailedFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20DetailedFilterer, error) {
  2815  	contract, err := bindERC20Detailed(address, nil, nil, filterer)
  2816  	if err != nil {
  2817  		return nil, err
  2818  	}
  2819  	return &ERC20DetailedFilterer{contract: contract}, nil
  2820  }
  2821  
  2822  // bindERC20Detailed binds a generic wrapper to an already deployed contract.
  2823  func bindERC20Detailed(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2824  	parsed, err := abi.JSON(strings.NewReader(ERC20DetailedABI))
  2825  	if err != nil {
  2826  		return nil, err
  2827  	}
  2828  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2829  }
  2830  
  2831  // Call invokes the (constant) contract method with params as input values and
  2832  // sets the output to result. The result type might be a single field for simple
  2833  // returns, a slice of interfaces for anonymous returns and a struct for named
  2834  // returns.
  2835  func (_ERC20Detailed *ERC20DetailedRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2836  	return _ERC20Detailed.Contract.ERC20DetailedCaller.contract.Call(opts, result, method, params...)
  2837  }
  2838  
  2839  // Transfer initiates a plain transaction to move funds to the contract, calling
  2840  // its default method if one is available.
  2841  func (_ERC20Detailed *ERC20DetailedRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2842  	return _ERC20Detailed.Contract.ERC20DetailedTransactor.contract.Transfer(opts)
  2843  }
  2844  
  2845  // Transact invokes the (paid) contract method with params as input values.
  2846  func (_ERC20Detailed *ERC20DetailedRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2847  	return _ERC20Detailed.Contract.ERC20DetailedTransactor.contract.Transact(opts, method, params...)
  2848  }
  2849  
  2850  // Call invokes the (constant) contract method with params as input values and
  2851  // sets the output to result. The result type might be a single field for simple
  2852  // returns, a slice of interfaces for anonymous returns and a struct for named
  2853  // returns.
  2854  func (_ERC20Detailed *ERC20DetailedCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2855  	return _ERC20Detailed.Contract.contract.Call(opts, result, method, params...)
  2856  }
  2857  
  2858  // Transfer initiates a plain transaction to move funds to the contract, calling
  2859  // its default method if one is available.
  2860  func (_ERC20Detailed *ERC20DetailedTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2861  	return _ERC20Detailed.Contract.contract.Transfer(opts)
  2862  }
  2863  
  2864  // Transact invokes the (paid) contract method with params as input values.
  2865  func (_ERC20Detailed *ERC20DetailedTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2866  	return _ERC20Detailed.Contract.contract.Transact(opts, method, params...)
  2867  }
  2868  
  2869  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2870  //
  2871  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2872  func (_ERC20Detailed *ERC20DetailedCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  2873  	var (
  2874  		ret0 = new(*big.Int)
  2875  	)
  2876  	out := ret0
  2877  	err := _ERC20Detailed.contract.Call(opts, out, "allowance", owner, spender)
  2878  	return *ret0, err
  2879  }
  2880  
  2881  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2882  //
  2883  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2884  func (_ERC20Detailed *ERC20DetailedSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2885  	return _ERC20Detailed.Contract.Allowance(&_ERC20Detailed.CallOpts, owner, spender)
  2886  }
  2887  
  2888  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2889  //
  2890  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2891  func (_ERC20Detailed *ERC20DetailedCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2892  	return _ERC20Detailed.Contract.Allowance(&_ERC20Detailed.CallOpts, owner, spender)
  2893  }
  2894  
  2895  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2896  //
  2897  // Solidity: function balanceOf(address account) constant returns(uint256)
  2898  func (_ERC20Detailed *ERC20DetailedCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  2899  	var (
  2900  		ret0 = new(*big.Int)
  2901  	)
  2902  	out := ret0
  2903  	err := _ERC20Detailed.contract.Call(opts, out, "balanceOf", account)
  2904  	return *ret0, err
  2905  }
  2906  
  2907  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2908  //
  2909  // Solidity: function balanceOf(address account) constant returns(uint256)
  2910  func (_ERC20Detailed *ERC20DetailedSession) BalanceOf(account common.Address) (*big.Int, error) {
  2911  	return _ERC20Detailed.Contract.BalanceOf(&_ERC20Detailed.CallOpts, account)
  2912  }
  2913  
  2914  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2915  //
  2916  // Solidity: function balanceOf(address account) constant returns(uint256)
  2917  func (_ERC20Detailed *ERC20DetailedCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  2918  	return _ERC20Detailed.Contract.BalanceOf(&_ERC20Detailed.CallOpts, account)
  2919  }
  2920  
  2921  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  2922  //
  2923  // Solidity: function decimals() constant returns(uint8)
  2924  func (_ERC20Detailed *ERC20DetailedCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
  2925  	var (
  2926  		ret0 = new(uint8)
  2927  	)
  2928  	out := ret0
  2929  	err := _ERC20Detailed.contract.Call(opts, out, "decimals")
  2930  	return *ret0, err
  2931  }
  2932  
  2933  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  2934  //
  2935  // Solidity: function decimals() constant returns(uint8)
  2936  func (_ERC20Detailed *ERC20DetailedSession) Decimals() (uint8, error) {
  2937  	return _ERC20Detailed.Contract.Decimals(&_ERC20Detailed.CallOpts)
  2938  }
  2939  
  2940  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  2941  //
  2942  // Solidity: function decimals() constant returns(uint8)
  2943  func (_ERC20Detailed *ERC20DetailedCallerSession) Decimals() (uint8, error) {
  2944  	return _ERC20Detailed.Contract.Decimals(&_ERC20Detailed.CallOpts)
  2945  }
  2946  
  2947  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  2948  //
  2949  // Solidity: function name() constant returns(string)
  2950  func (_ERC20Detailed *ERC20DetailedCaller) Name(opts *bind.CallOpts) (string, error) {
  2951  	var (
  2952  		ret0 = new(string)
  2953  	)
  2954  	out := ret0
  2955  	err := _ERC20Detailed.contract.Call(opts, out, "name")
  2956  	return *ret0, err
  2957  }
  2958  
  2959  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  2960  //
  2961  // Solidity: function name() constant returns(string)
  2962  func (_ERC20Detailed *ERC20DetailedSession) Name() (string, error) {
  2963  	return _ERC20Detailed.Contract.Name(&_ERC20Detailed.CallOpts)
  2964  }
  2965  
  2966  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  2967  //
  2968  // Solidity: function name() constant returns(string)
  2969  func (_ERC20Detailed *ERC20DetailedCallerSession) Name() (string, error) {
  2970  	return _ERC20Detailed.Contract.Name(&_ERC20Detailed.CallOpts)
  2971  }
  2972  
  2973  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  2974  //
  2975  // Solidity: function symbol() constant returns(string)
  2976  func (_ERC20Detailed *ERC20DetailedCaller) Symbol(opts *bind.CallOpts) (string, error) {
  2977  	var (
  2978  		ret0 = new(string)
  2979  	)
  2980  	out := ret0
  2981  	err := _ERC20Detailed.contract.Call(opts, out, "symbol")
  2982  	return *ret0, err
  2983  }
  2984  
  2985  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  2986  //
  2987  // Solidity: function symbol() constant returns(string)
  2988  func (_ERC20Detailed *ERC20DetailedSession) Symbol() (string, error) {
  2989  	return _ERC20Detailed.Contract.Symbol(&_ERC20Detailed.CallOpts)
  2990  }
  2991  
  2992  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  2993  //
  2994  // Solidity: function symbol() constant returns(string)
  2995  func (_ERC20Detailed *ERC20DetailedCallerSession) Symbol() (string, error) {
  2996  	return _ERC20Detailed.Contract.Symbol(&_ERC20Detailed.CallOpts)
  2997  }
  2998  
  2999  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3000  //
  3001  // Solidity: function totalSupply() constant returns(uint256)
  3002  func (_ERC20Detailed *ERC20DetailedCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3003  	var (
  3004  		ret0 = new(*big.Int)
  3005  	)
  3006  	out := ret0
  3007  	err := _ERC20Detailed.contract.Call(opts, out, "totalSupply")
  3008  	return *ret0, err
  3009  }
  3010  
  3011  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3012  //
  3013  // Solidity: function totalSupply() constant returns(uint256)
  3014  func (_ERC20Detailed *ERC20DetailedSession) TotalSupply() (*big.Int, error) {
  3015  	return _ERC20Detailed.Contract.TotalSupply(&_ERC20Detailed.CallOpts)
  3016  }
  3017  
  3018  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3019  //
  3020  // Solidity: function totalSupply() constant returns(uint256)
  3021  func (_ERC20Detailed *ERC20DetailedCallerSession) TotalSupply() (*big.Int, error) {
  3022  	return _ERC20Detailed.Contract.TotalSupply(&_ERC20Detailed.CallOpts)
  3023  }
  3024  
  3025  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3026  //
  3027  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3028  func (_ERC20Detailed *ERC20DetailedTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3029  	return _ERC20Detailed.contract.Transact(opts, "approve", spender, amount)
  3030  }
  3031  
  3032  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3033  //
  3034  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3035  func (_ERC20Detailed *ERC20DetailedSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3036  	return _ERC20Detailed.Contract.Approve(&_ERC20Detailed.TransactOpts, spender, amount)
  3037  }
  3038  
  3039  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3040  //
  3041  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3042  func (_ERC20Detailed *ERC20DetailedTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3043  	return _ERC20Detailed.Contract.Approve(&_ERC20Detailed.TransactOpts, spender, amount)
  3044  }
  3045  
  3046  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3047  //
  3048  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3049  func (_ERC20Detailed *ERC20DetailedTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3050  	return _ERC20Detailed.contract.Transact(opts, "transfer", recipient, amount)
  3051  }
  3052  
  3053  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3054  //
  3055  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3056  func (_ERC20Detailed *ERC20DetailedSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3057  	return _ERC20Detailed.Contract.Transfer(&_ERC20Detailed.TransactOpts, recipient, amount)
  3058  }
  3059  
  3060  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3061  //
  3062  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3063  func (_ERC20Detailed *ERC20DetailedTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3064  	return _ERC20Detailed.Contract.Transfer(&_ERC20Detailed.TransactOpts, recipient, amount)
  3065  }
  3066  
  3067  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3068  //
  3069  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3070  func (_ERC20Detailed *ERC20DetailedTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3071  	return _ERC20Detailed.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  3072  }
  3073  
  3074  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3075  //
  3076  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3077  func (_ERC20Detailed *ERC20DetailedSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3078  	return _ERC20Detailed.Contract.TransferFrom(&_ERC20Detailed.TransactOpts, sender, recipient, amount)
  3079  }
  3080  
  3081  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3082  //
  3083  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3084  func (_ERC20Detailed *ERC20DetailedTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3085  	return _ERC20Detailed.Contract.TransferFrom(&_ERC20Detailed.TransactOpts, sender, recipient, amount)
  3086  }
  3087  
  3088  // ERC20DetailedApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Detailed contract.
  3089  type ERC20DetailedApprovalIterator struct {
  3090  	Event *ERC20DetailedApproval // Event containing the contract specifics and raw log
  3091  
  3092  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3093  	event    string              // Event name to use for unpacking event data
  3094  
  3095  	logs chan types.Log        // Log channel receiving the found contract events
  3096  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3097  	done bool                  // Whether the subscription completed delivering logs
  3098  	fail error                 // Occurred error to stop iteration
  3099  }
  3100  
  3101  // Next advances the iterator to the subsequent event, returning whether there
  3102  // are any more events found. In case of a retrieval or parsing error, false is
  3103  // returned and Error() can be queried for the exact failure.
  3104  func (it *ERC20DetailedApprovalIterator) Next() bool {
  3105  	// If the iterator failed, stop iterating
  3106  	if it.fail != nil {
  3107  		return false
  3108  	}
  3109  	// If the iterator completed, deliver directly whatever's available
  3110  	if it.done {
  3111  		select {
  3112  		case log := <-it.logs:
  3113  			it.Event = new(ERC20DetailedApproval)
  3114  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3115  				it.fail = err
  3116  				return false
  3117  			}
  3118  			it.Event.Raw = log
  3119  			return true
  3120  
  3121  		default:
  3122  			return false
  3123  		}
  3124  	}
  3125  	// Iterator still in progress, wait for either a data or an error event
  3126  	select {
  3127  	case log := <-it.logs:
  3128  		it.Event = new(ERC20DetailedApproval)
  3129  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3130  			it.fail = err
  3131  			return false
  3132  		}
  3133  		it.Event.Raw = log
  3134  		return true
  3135  
  3136  	case err := <-it.sub.Err():
  3137  		it.done = true
  3138  		it.fail = err
  3139  		return it.Next()
  3140  	}
  3141  }
  3142  
  3143  // Error returns any retrieval or parsing error occurred during filtering.
  3144  func (it *ERC20DetailedApprovalIterator) Error() error {
  3145  	return it.fail
  3146  }
  3147  
  3148  // Close terminates the iteration process, releasing any pending underlying
  3149  // resources.
  3150  func (it *ERC20DetailedApprovalIterator) Close() error {
  3151  	it.sub.Unsubscribe()
  3152  	return nil
  3153  }
  3154  
  3155  // ERC20DetailedApproval represents a Approval event raised by the ERC20Detailed contract.
  3156  type ERC20DetailedApproval struct {
  3157  	Owner   common.Address
  3158  	Spender common.Address
  3159  	Value   *big.Int
  3160  	Raw     types.Log // Blockchain specific contextual infos
  3161  }
  3162  
  3163  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3164  //
  3165  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3166  func (_ERC20Detailed *ERC20DetailedFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20DetailedApprovalIterator, error) {
  3167  
  3168  	var ownerRule []interface{}
  3169  	for _, ownerItem := range owner {
  3170  		ownerRule = append(ownerRule, ownerItem)
  3171  	}
  3172  	var spenderRule []interface{}
  3173  	for _, spenderItem := range spender {
  3174  		spenderRule = append(spenderRule, spenderItem)
  3175  	}
  3176  
  3177  	logs, sub, err := _ERC20Detailed.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  3178  	if err != nil {
  3179  		return nil, err
  3180  	}
  3181  	return &ERC20DetailedApprovalIterator{contract: _ERC20Detailed.contract, event: "Approval", logs: logs, sub: sub}, nil
  3182  }
  3183  
  3184  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3185  //
  3186  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3187  func (_ERC20Detailed *ERC20DetailedFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20DetailedApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  3188  
  3189  	var ownerRule []interface{}
  3190  	for _, ownerItem := range owner {
  3191  		ownerRule = append(ownerRule, ownerItem)
  3192  	}
  3193  	var spenderRule []interface{}
  3194  	for _, spenderItem := range spender {
  3195  		spenderRule = append(spenderRule, spenderItem)
  3196  	}
  3197  
  3198  	logs, sub, err := _ERC20Detailed.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  3199  	if err != nil {
  3200  		return nil, err
  3201  	}
  3202  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3203  		defer sub.Unsubscribe()
  3204  		for {
  3205  			select {
  3206  			case log := <-logs:
  3207  				// New log arrived, parse the event and forward to the user
  3208  				event := new(ERC20DetailedApproval)
  3209  				if err := _ERC20Detailed.contract.UnpackLog(event, "Approval", log); err != nil {
  3210  					return err
  3211  				}
  3212  				event.Raw = log
  3213  
  3214  				select {
  3215  				case sink <- event:
  3216  				case err := <-sub.Err():
  3217  					return err
  3218  				case <-quit:
  3219  					return nil
  3220  				}
  3221  			case err := <-sub.Err():
  3222  				return err
  3223  			case <-quit:
  3224  				return nil
  3225  			}
  3226  		}
  3227  	}), nil
  3228  }
  3229  
  3230  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3231  //
  3232  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3233  func (_ERC20Detailed *ERC20DetailedFilterer) ParseApproval(log types.Log) (*ERC20DetailedApproval, error) {
  3234  	event := new(ERC20DetailedApproval)
  3235  	if err := _ERC20Detailed.contract.UnpackLog(event, "Approval", log); err != nil {
  3236  		return nil, err
  3237  	}
  3238  	return event, nil
  3239  }
  3240  
  3241  // ERC20DetailedTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Detailed contract.
  3242  type ERC20DetailedTransferIterator struct {
  3243  	Event *ERC20DetailedTransfer // Event containing the contract specifics and raw log
  3244  
  3245  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3246  	event    string              // Event name to use for unpacking event data
  3247  
  3248  	logs chan types.Log        // Log channel receiving the found contract events
  3249  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3250  	done bool                  // Whether the subscription completed delivering logs
  3251  	fail error                 // Occurred error to stop iteration
  3252  }
  3253  
  3254  // Next advances the iterator to the subsequent event, returning whether there
  3255  // are any more events found. In case of a retrieval or parsing error, false is
  3256  // returned and Error() can be queried for the exact failure.
  3257  func (it *ERC20DetailedTransferIterator) Next() bool {
  3258  	// If the iterator failed, stop iterating
  3259  	if it.fail != nil {
  3260  		return false
  3261  	}
  3262  	// If the iterator completed, deliver directly whatever's available
  3263  	if it.done {
  3264  		select {
  3265  		case log := <-it.logs:
  3266  			it.Event = new(ERC20DetailedTransfer)
  3267  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3268  				it.fail = err
  3269  				return false
  3270  			}
  3271  			it.Event.Raw = log
  3272  			return true
  3273  
  3274  		default:
  3275  			return false
  3276  		}
  3277  	}
  3278  	// Iterator still in progress, wait for either a data or an error event
  3279  	select {
  3280  	case log := <-it.logs:
  3281  		it.Event = new(ERC20DetailedTransfer)
  3282  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3283  			it.fail = err
  3284  			return false
  3285  		}
  3286  		it.Event.Raw = log
  3287  		return true
  3288  
  3289  	case err := <-it.sub.Err():
  3290  		it.done = true
  3291  		it.fail = err
  3292  		return it.Next()
  3293  	}
  3294  }
  3295  
  3296  // Error returns any retrieval or parsing error occurred during filtering.
  3297  func (it *ERC20DetailedTransferIterator) Error() error {
  3298  	return it.fail
  3299  }
  3300  
  3301  // Close terminates the iteration process, releasing any pending underlying
  3302  // resources.
  3303  func (it *ERC20DetailedTransferIterator) Close() error {
  3304  	it.sub.Unsubscribe()
  3305  	return nil
  3306  }
  3307  
  3308  // ERC20DetailedTransfer represents a Transfer event raised by the ERC20Detailed contract.
  3309  type ERC20DetailedTransfer struct {
  3310  	From  common.Address
  3311  	To    common.Address
  3312  	Value *big.Int
  3313  	Raw   types.Log // Blockchain specific contextual infos
  3314  }
  3315  
  3316  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3317  //
  3318  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3319  func (_ERC20Detailed *ERC20DetailedFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20DetailedTransferIterator, error) {
  3320  
  3321  	var fromRule []interface{}
  3322  	for _, fromItem := range from {
  3323  		fromRule = append(fromRule, fromItem)
  3324  	}
  3325  	var toRule []interface{}
  3326  	for _, toItem := range to {
  3327  		toRule = append(toRule, toItem)
  3328  	}
  3329  
  3330  	logs, sub, err := _ERC20Detailed.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  3331  	if err != nil {
  3332  		return nil, err
  3333  	}
  3334  	return &ERC20DetailedTransferIterator{contract: _ERC20Detailed.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3335  }
  3336  
  3337  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3338  //
  3339  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3340  func (_ERC20Detailed *ERC20DetailedFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20DetailedTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  3341  
  3342  	var fromRule []interface{}
  3343  	for _, fromItem := range from {
  3344  		fromRule = append(fromRule, fromItem)
  3345  	}
  3346  	var toRule []interface{}
  3347  	for _, toItem := range to {
  3348  		toRule = append(toRule, toItem)
  3349  	}
  3350  
  3351  	logs, sub, err := _ERC20Detailed.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  3352  	if err != nil {
  3353  		return nil, err
  3354  	}
  3355  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3356  		defer sub.Unsubscribe()
  3357  		for {
  3358  			select {
  3359  			case log := <-logs:
  3360  				// New log arrived, parse the event and forward to the user
  3361  				event := new(ERC20DetailedTransfer)
  3362  				if err := _ERC20Detailed.contract.UnpackLog(event, "Transfer", log); err != nil {
  3363  					return err
  3364  				}
  3365  				event.Raw = log
  3366  
  3367  				select {
  3368  				case sink <- event:
  3369  				case err := <-sub.Err():
  3370  					return err
  3371  				case <-quit:
  3372  					return nil
  3373  				}
  3374  			case err := <-sub.Err():
  3375  				return err
  3376  			case <-quit:
  3377  				return nil
  3378  			}
  3379  		}
  3380  	}), nil
  3381  }
  3382  
  3383  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3384  //
  3385  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3386  func (_ERC20Detailed *ERC20DetailedFilterer) ParseTransfer(log types.Log) (*ERC20DetailedTransfer, error) {
  3387  	event := new(ERC20DetailedTransfer)
  3388  	if err := _ERC20Detailed.contract.UnpackLog(event, "Transfer", log); err != nil {
  3389  		return nil, err
  3390  	}
  3391  	return event, nil
  3392  }
  3393  
  3394  // ERC20MintableABI is the input ABI used to generate the binding from.
  3395  const ERC20MintableABI = "[{\"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\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"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\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  3396  
  3397  // ERC20MintableFuncSigs maps the 4-byte function signature to its string representation.
  3398  var ERC20MintableFuncSigs = map[string]string{
  3399  	"983b2d56": "addMinter(address)",
  3400  	"dd62ed3e": "allowance(address,address)",
  3401  	"095ea7b3": "approve(address,uint256)",
  3402  	"70a08231": "balanceOf(address)",
  3403  	"a457c2d7": "decreaseAllowance(address,uint256)",
  3404  	"39509351": "increaseAllowance(address,uint256)",
  3405  	"aa271e1a": "isMinter(address)",
  3406  	"40c10f19": "mint(address,uint256)",
  3407  	"98650275": "renounceMinter()",
  3408  	"18160ddd": "totalSupply()",
  3409  	"a9059cbb": "transfer(address,uint256)",
  3410  	"23b872dd": "transferFrom(address,address,uint256)",
  3411  }
  3412  
  3413  // ERC20MintableBin is the compiled bytecode used for deploying new contracts.
  3414  var ERC20MintableBin = "0x60806040526100266100186001600160e01b0361002b16565b6001600160e01b0361002f16565b6101a3565b3390565b61004781600361007e60201b610a6e1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61009182826001600160e01b0361012216565b156100fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610183576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eb16022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610cff806101b26000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102c0565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102c6565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610353565b6100e56004803603604081101561018b57600080fd5b506001600160a01b0381351690602001356103a7565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103fe565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b0316610419565b005b6101ed61046b565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561047d565b6100e56004803603604081101561023957600080fd5b506001600160a01b0381351690602001356104eb565b6100e56004803603602081101561026557600080fd5b50356001600160a01b03166104ff565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610518565b60006102b76102b0610543565b8484610547565b50600192915050565b60025490565b60006102d3848484610633565b610349846102df610543565b61034485604051806060016040528060288152602001610c13602891396001600160a01b038a1660009081526001602052604081209061031d610543565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61078f16565b610547565b5060019392505050565b60006102b7610360610543565b846103448560016000610371610543565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61082616565b60006103b96103b4610543565b6104ff565b6103f45760405162461bcd60e51b8152600401808060200182810382526030815260200180610bc26030913960400191505060405180910390fd5b6102b78383610887565b6001600160a01b031660009081526020819052604090205490565b6104246103b4610543565b61045f5760405162461bcd60e51b8152600401808060200182810382526030815260200180610bc26030913960400191505060405180910390fd5b61046881610977565b50565b61047b610476610543565b6109bf565b565b60006102b761048a610543565b8461034485604051806060016040528060258152602001610ca660259139600160006104b4610543565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61078f16565b60006102b76104f8610543565b8484610633565b600061051260038363ffffffff610a0716565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661058c5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c826024913960400191505060405180910390fd5b6001600160a01b0382166105d15760405162461bcd60e51b8152600401808060200182810382526022815260200180610b7a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106785760405162461bcd60e51b8152600401808060200182810382526025815260200180610c5d6025913960400191505060405180910390fd5b6001600160a01b0382166106bd5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b576023913960400191505060405180910390fd5b61070081604051806060016040528060268152602001610b9c602691396001600160a01b038616600090815260208190526040902054919063ffffffff61078f16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610735908263ffffffff61082616565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561081e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107e35781810151838201526020016107cb565b50505050905090810190601f1680156108105780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610880576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108e2576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546108f5908263ffffffff61082616565b6002556001600160a01b038216600090815260208190526040902054610921908263ffffffff61082616565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61098860038263ffffffff610a6e16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6109d060038263ffffffff610aef16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610a4e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c3b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610a788282610a07565b15610aca576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610af98282610a07565b610b345760405162461bcd60e51b8152600401808060200182810382526021815260200180610bf26021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158209bffbae26a8473ab446e60484fc8f37931f262c4c630ff4ea7ef2fd99a2a4ba364736f6c634300050c0032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
  3415  
  3416  // DeployERC20Mintable deploys a new Ethereum contract, binding an instance of ERC20Mintable to it.
  3417  func DeployERC20Mintable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Mintable, error) {
  3418  	parsed, err := abi.JSON(strings.NewReader(ERC20MintableABI))
  3419  	if err != nil {
  3420  		return common.Address{}, nil, nil, err
  3421  	}
  3422  
  3423  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20MintableBin), backend)
  3424  	if err != nil {
  3425  		return common.Address{}, nil, nil, err
  3426  	}
  3427  	return address, tx, &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
  3428  }
  3429  
  3430  // ERC20Mintable is an auto generated Go binding around an Ethereum contract.
  3431  type ERC20Mintable struct {
  3432  	ERC20MintableCaller     // Read-only binding to the contract
  3433  	ERC20MintableTransactor // Write-only binding to the contract
  3434  	ERC20MintableFilterer   // Log filterer for contract events
  3435  }
  3436  
  3437  // ERC20MintableCaller is an auto generated read-only Go binding around an Ethereum contract.
  3438  type ERC20MintableCaller struct {
  3439  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3440  }
  3441  
  3442  // ERC20MintableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  3443  type ERC20MintableTransactor struct {
  3444  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3445  }
  3446  
  3447  // ERC20MintableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  3448  type ERC20MintableFilterer struct {
  3449  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3450  }
  3451  
  3452  // ERC20MintableSession is an auto generated Go binding around an Ethereum contract,
  3453  // with pre-set call and transact options.
  3454  type ERC20MintableSession struct {
  3455  	Contract     *ERC20Mintable    // Generic contract binding to set the session for
  3456  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  3457  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  3458  }
  3459  
  3460  // ERC20MintableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  3461  // with pre-set call options.
  3462  type ERC20MintableCallerSession struct {
  3463  	Contract *ERC20MintableCaller // Generic contract caller binding to set the session for
  3464  	CallOpts bind.CallOpts        // Call options to use throughout this session
  3465  }
  3466  
  3467  // ERC20MintableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  3468  // with pre-set transact options.
  3469  type ERC20MintableTransactorSession struct {
  3470  	Contract     *ERC20MintableTransactor // Generic contract transactor binding to set the session for
  3471  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  3472  }
  3473  
  3474  // ERC20MintableRaw is an auto generated low-level Go binding around an Ethereum contract.
  3475  type ERC20MintableRaw struct {
  3476  	Contract *ERC20Mintable // Generic contract binding to access the raw methods on
  3477  }
  3478  
  3479  // ERC20MintableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  3480  type ERC20MintableCallerRaw struct {
  3481  	Contract *ERC20MintableCaller // Generic read-only contract binding to access the raw methods on
  3482  }
  3483  
  3484  // ERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  3485  type ERC20MintableTransactorRaw struct {
  3486  	Contract *ERC20MintableTransactor // Generic write-only contract binding to access the raw methods on
  3487  }
  3488  
  3489  // NewERC20Mintable creates a new instance of ERC20Mintable, bound to a specific deployed contract.
  3490  func NewERC20Mintable(address common.Address, backend bind.ContractBackend) (*ERC20Mintable, error) {
  3491  	contract, err := bindERC20Mintable(address, backend, backend, backend)
  3492  	if err != nil {
  3493  		return nil, err
  3494  	}
  3495  	return &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
  3496  }
  3497  
  3498  // NewERC20MintableCaller creates a new read-only instance of ERC20Mintable, bound to a specific deployed contract.
  3499  func NewERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*ERC20MintableCaller, error) {
  3500  	contract, err := bindERC20Mintable(address, caller, nil, nil)
  3501  	if err != nil {
  3502  		return nil, err
  3503  	}
  3504  	return &ERC20MintableCaller{contract: contract}, nil
  3505  }
  3506  
  3507  // NewERC20MintableTransactor creates a new write-only instance of ERC20Mintable, bound to a specific deployed contract.
  3508  func NewERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MintableTransactor, error) {
  3509  	contract, err := bindERC20Mintable(address, nil, transactor, nil)
  3510  	if err != nil {
  3511  		return nil, err
  3512  	}
  3513  	return &ERC20MintableTransactor{contract: contract}, nil
  3514  }
  3515  
  3516  // NewERC20MintableFilterer creates a new log filterer instance of ERC20Mintable, bound to a specific deployed contract.
  3517  func NewERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MintableFilterer, error) {
  3518  	contract, err := bindERC20Mintable(address, nil, nil, filterer)
  3519  	if err != nil {
  3520  		return nil, err
  3521  	}
  3522  	return &ERC20MintableFilterer{contract: contract}, nil
  3523  }
  3524  
  3525  // bindERC20Mintable binds a generic wrapper to an already deployed contract.
  3526  func bindERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3527  	parsed, err := abi.JSON(strings.NewReader(ERC20MintableABI))
  3528  	if err != nil {
  3529  		return nil, err
  3530  	}
  3531  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  3532  }
  3533  
  3534  // Call invokes the (constant) contract method with params as input values and
  3535  // sets the output to result. The result type might be a single field for simple
  3536  // returns, a slice of interfaces for anonymous returns and a struct for named
  3537  // returns.
  3538  func (_ERC20Mintable *ERC20MintableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3539  	return _ERC20Mintable.Contract.ERC20MintableCaller.contract.Call(opts, result, method, params...)
  3540  }
  3541  
  3542  // Transfer initiates a plain transaction to move funds to the contract, calling
  3543  // its default method if one is available.
  3544  func (_ERC20Mintable *ERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3545  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transfer(opts)
  3546  }
  3547  
  3548  // Transact invokes the (paid) contract method with params as input values.
  3549  func (_ERC20Mintable *ERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3550  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transact(opts, method, params...)
  3551  }
  3552  
  3553  // Call invokes the (constant) contract method with params as input values and
  3554  // sets the output to result. The result type might be a single field for simple
  3555  // returns, a slice of interfaces for anonymous returns and a struct for named
  3556  // returns.
  3557  func (_ERC20Mintable *ERC20MintableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3558  	return _ERC20Mintable.Contract.contract.Call(opts, result, method, params...)
  3559  }
  3560  
  3561  // Transfer initiates a plain transaction to move funds to the contract, calling
  3562  // its default method if one is available.
  3563  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3564  	return _ERC20Mintable.Contract.contract.Transfer(opts)
  3565  }
  3566  
  3567  // Transact invokes the (paid) contract method with params as input values.
  3568  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3569  	return _ERC20Mintable.Contract.contract.Transact(opts, method, params...)
  3570  }
  3571  
  3572  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3573  //
  3574  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  3575  func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  3576  	var (
  3577  		ret0 = new(*big.Int)
  3578  	)
  3579  	out := ret0
  3580  	err := _ERC20Mintable.contract.Call(opts, out, "allowance", owner, spender)
  3581  	return *ret0, err
  3582  }
  3583  
  3584  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3585  //
  3586  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  3587  func (_ERC20Mintable *ERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  3588  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
  3589  }
  3590  
  3591  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3592  //
  3593  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  3594  func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  3595  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
  3596  }
  3597  
  3598  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3599  //
  3600  // Solidity: function balanceOf(address account) constant returns(uint256)
  3601  func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  3602  	var (
  3603  		ret0 = new(*big.Int)
  3604  	)
  3605  	out := ret0
  3606  	err := _ERC20Mintable.contract.Call(opts, out, "balanceOf", account)
  3607  	return *ret0, err
  3608  }
  3609  
  3610  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3611  //
  3612  // Solidity: function balanceOf(address account) constant returns(uint256)
  3613  func (_ERC20Mintable *ERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) {
  3614  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
  3615  }
  3616  
  3617  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3618  //
  3619  // Solidity: function balanceOf(address account) constant returns(uint256)
  3620  func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  3621  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
  3622  }
  3623  
  3624  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  3625  //
  3626  // Solidity: function isMinter(address account) constant returns(bool)
  3627  func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  3628  	var (
  3629  		ret0 = new(bool)
  3630  	)
  3631  	out := ret0
  3632  	err := _ERC20Mintable.contract.Call(opts, out, "isMinter", account)
  3633  	return *ret0, err
  3634  }
  3635  
  3636  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  3637  //
  3638  // Solidity: function isMinter(address account) constant returns(bool)
  3639  func (_ERC20Mintable *ERC20MintableSession) IsMinter(account common.Address) (bool, error) {
  3640  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
  3641  }
  3642  
  3643  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  3644  //
  3645  // Solidity: function isMinter(address account) constant returns(bool)
  3646  func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Address) (bool, error) {
  3647  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
  3648  }
  3649  
  3650  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3651  //
  3652  // Solidity: function totalSupply() constant returns(uint256)
  3653  func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3654  	var (
  3655  		ret0 = new(*big.Int)
  3656  	)
  3657  	out := ret0
  3658  	err := _ERC20Mintable.contract.Call(opts, out, "totalSupply")
  3659  	return *ret0, err
  3660  }
  3661  
  3662  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3663  //
  3664  // Solidity: function totalSupply() constant returns(uint256)
  3665  func (_ERC20Mintable *ERC20MintableSession) TotalSupply() (*big.Int, error) {
  3666  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
  3667  }
  3668  
  3669  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3670  //
  3671  // Solidity: function totalSupply() constant returns(uint256)
  3672  func (_ERC20Mintable *ERC20MintableCallerSession) TotalSupply() (*big.Int, error) {
  3673  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
  3674  }
  3675  
  3676  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  3677  //
  3678  // Solidity: function addMinter(address account) returns()
  3679  func (_ERC20Mintable *ERC20MintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  3680  	return _ERC20Mintable.contract.Transact(opts, "addMinter", account)
  3681  }
  3682  
  3683  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  3684  //
  3685  // Solidity: function addMinter(address account) returns()
  3686  func (_ERC20Mintable *ERC20MintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
  3687  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
  3688  }
  3689  
  3690  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  3691  //
  3692  // Solidity: function addMinter(address account) returns()
  3693  func (_ERC20Mintable *ERC20MintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  3694  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
  3695  }
  3696  
  3697  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3698  //
  3699  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3700  func (_ERC20Mintable *ERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3701  	return _ERC20Mintable.contract.Transact(opts, "approve", spender, amount)
  3702  }
  3703  
  3704  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3705  //
  3706  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3707  func (_ERC20Mintable *ERC20MintableSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3708  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, amount)
  3709  }
  3710  
  3711  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3712  //
  3713  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3714  func (_ERC20Mintable *ERC20MintableTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3715  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, amount)
  3716  }
  3717  
  3718  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3719  //
  3720  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3721  func (_ERC20Mintable *ERC20MintableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3722  	return _ERC20Mintable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  3723  }
  3724  
  3725  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3726  //
  3727  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3728  func (_ERC20Mintable *ERC20MintableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3729  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
  3730  }
  3731  
  3732  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3733  //
  3734  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3735  func (_ERC20Mintable *ERC20MintableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3736  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
  3737  }
  3738  
  3739  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3740  //
  3741  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3742  func (_ERC20Mintable *ERC20MintableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3743  	return _ERC20Mintable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  3744  }
  3745  
  3746  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3747  //
  3748  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3749  func (_ERC20Mintable *ERC20MintableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3750  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
  3751  }
  3752  
  3753  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3754  //
  3755  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3756  func (_ERC20Mintable *ERC20MintableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3757  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
  3758  }
  3759  
  3760  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  3761  //
  3762  // Solidity: function mint(address account, uint256 amount) returns(bool)
  3763  func (_ERC20Mintable *ERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
  3764  	return _ERC20Mintable.contract.Transact(opts, "mint", account, amount)
  3765  }
  3766  
  3767  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  3768  //
  3769  // Solidity: function mint(address account, uint256 amount) returns(bool)
  3770  func (_ERC20Mintable *ERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
  3771  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
  3772  }
  3773  
  3774  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  3775  //
  3776  // Solidity: function mint(address account, uint256 amount) returns(bool)
  3777  func (_ERC20Mintable *ERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
  3778  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
  3779  }
  3780  
  3781  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  3782  //
  3783  // Solidity: function renounceMinter() returns()
  3784  func (_ERC20Mintable *ERC20MintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  3785  	return _ERC20Mintable.contract.Transact(opts, "renounceMinter")
  3786  }
  3787  
  3788  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  3789  //
  3790  // Solidity: function renounceMinter() returns()
  3791  func (_ERC20Mintable *ERC20MintableSession) RenounceMinter() (*types.Transaction, error) {
  3792  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
  3793  }
  3794  
  3795  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  3796  //
  3797  // Solidity: function renounceMinter() returns()
  3798  func (_ERC20Mintable *ERC20MintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
  3799  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
  3800  }
  3801  
  3802  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3803  //
  3804  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3805  func (_ERC20Mintable *ERC20MintableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3806  	return _ERC20Mintable.contract.Transact(opts, "transfer", recipient, amount)
  3807  }
  3808  
  3809  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3810  //
  3811  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3812  func (_ERC20Mintable *ERC20MintableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3813  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
  3814  }
  3815  
  3816  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3817  //
  3818  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3819  func (_ERC20Mintable *ERC20MintableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3820  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
  3821  }
  3822  
  3823  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3824  //
  3825  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3826  func (_ERC20Mintable *ERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3827  	return _ERC20Mintable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  3828  }
  3829  
  3830  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3831  //
  3832  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3833  func (_ERC20Mintable *ERC20MintableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3834  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
  3835  }
  3836  
  3837  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3838  //
  3839  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3840  func (_ERC20Mintable *ERC20MintableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3841  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
  3842  }
  3843  
  3844  // ERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Mintable contract.
  3845  type ERC20MintableApprovalIterator struct {
  3846  	Event *ERC20MintableApproval // Event containing the contract specifics and raw log
  3847  
  3848  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3849  	event    string              // Event name to use for unpacking event data
  3850  
  3851  	logs chan types.Log        // Log channel receiving the found contract events
  3852  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3853  	done bool                  // Whether the subscription completed delivering logs
  3854  	fail error                 // Occurred error to stop iteration
  3855  }
  3856  
  3857  // Next advances the iterator to the subsequent event, returning whether there
  3858  // are any more events found. In case of a retrieval or parsing error, false is
  3859  // returned and Error() can be queried for the exact failure.
  3860  func (it *ERC20MintableApprovalIterator) Next() bool {
  3861  	// If the iterator failed, stop iterating
  3862  	if it.fail != nil {
  3863  		return false
  3864  	}
  3865  	// If the iterator completed, deliver directly whatever's available
  3866  	if it.done {
  3867  		select {
  3868  		case log := <-it.logs:
  3869  			it.Event = new(ERC20MintableApproval)
  3870  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3871  				it.fail = err
  3872  				return false
  3873  			}
  3874  			it.Event.Raw = log
  3875  			return true
  3876  
  3877  		default:
  3878  			return false
  3879  		}
  3880  	}
  3881  	// Iterator still in progress, wait for either a data or an error event
  3882  	select {
  3883  	case log := <-it.logs:
  3884  		it.Event = new(ERC20MintableApproval)
  3885  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3886  			it.fail = err
  3887  			return false
  3888  		}
  3889  		it.Event.Raw = log
  3890  		return true
  3891  
  3892  	case err := <-it.sub.Err():
  3893  		it.done = true
  3894  		it.fail = err
  3895  		return it.Next()
  3896  	}
  3897  }
  3898  
  3899  // Error returns any retrieval or parsing error occurred during filtering.
  3900  func (it *ERC20MintableApprovalIterator) Error() error {
  3901  	return it.fail
  3902  }
  3903  
  3904  // Close terminates the iteration process, releasing any pending underlying
  3905  // resources.
  3906  func (it *ERC20MintableApprovalIterator) Close() error {
  3907  	it.sub.Unsubscribe()
  3908  	return nil
  3909  }
  3910  
  3911  // ERC20MintableApproval represents a Approval event raised by the ERC20Mintable contract.
  3912  type ERC20MintableApproval struct {
  3913  	Owner   common.Address
  3914  	Spender common.Address
  3915  	Value   *big.Int
  3916  	Raw     types.Log // Blockchain specific contextual infos
  3917  }
  3918  
  3919  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3920  //
  3921  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3922  func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) {
  3923  
  3924  	var ownerRule []interface{}
  3925  	for _, ownerItem := range owner {
  3926  		ownerRule = append(ownerRule, ownerItem)
  3927  	}
  3928  	var spenderRule []interface{}
  3929  	for _, spenderItem := range spender {
  3930  		spenderRule = append(spenderRule, spenderItem)
  3931  	}
  3932  
  3933  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  3934  	if err != nil {
  3935  		return nil, err
  3936  	}
  3937  	return &ERC20MintableApprovalIterator{contract: _ERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil
  3938  }
  3939  
  3940  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3941  //
  3942  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3943  func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  3944  
  3945  	var ownerRule []interface{}
  3946  	for _, ownerItem := range owner {
  3947  		ownerRule = append(ownerRule, ownerItem)
  3948  	}
  3949  	var spenderRule []interface{}
  3950  	for _, spenderItem := range spender {
  3951  		spenderRule = append(spenderRule, spenderItem)
  3952  	}
  3953  
  3954  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  3955  	if err != nil {
  3956  		return nil, err
  3957  	}
  3958  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3959  		defer sub.Unsubscribe()
  3960  		for {
  3961  			select {
  3962  			case log := <-logs:
  3963  				// New log arrived, parse the event and forward to the user
  3964  				event := new(ERC20MintableApproval)
  3965  				if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
  3966  					return err
  3967  				}
  3968  				event.Raw = log
  3969  
  3970  				select {
  3971  				case sink <- event:
  3972  				case err := <-sub.Err():
  3973  					return err
  3974  				case <-quit:
  3975  					return nil
  3976  				}
  3977  			case err := <-sub.Err():
  3978  				return err
  3979  			case <-quit:
  3980  				return nil
  3981  			}
  3982  		}
  3983  	}), nil
  3984  }
  3985  
  3986  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3987  //
  3988  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3989  func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC20MintableApproval, error) {
  3990  	event := new(ERC20MintableApproval)
  3991  	if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
  3992  		return nil, err
  3993  	}
  3994  	return event, nil
  3995  }
  3996  
  3997  // ERC20MintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC20Mintable contract.
  3998  type ERC20MintableMinterAddedIterator struct {
  3999  	Event *ERC20MintableMinterAdded // Event containing the contract specifics and raw log
  4000  
  4001  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4002  	event    string              // Event name to use for unpacking event data
  4003  
  4004  	logs chan types.Log        // Log channel receiving the found contract events
  4005  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4006  	done bool                  // Whether the subscription completed delivering logs
  4007  	fail error                 // Occurred error to stop iteration
  4008  }
  4009  
  4010  // Next advances the iterator to the subsequent event, returning whether there
  4011  // are any more events found. In case of a retrieval or parsing error, false is
  4012  // returned and Error() can be queried for the exact failure.
  4013  func (it *ERC20MintableMinterAddedIterator) Next() bool {
  4014  	// If the iterator failed, stop iterating
  4015  	if it.fail != nil {
  4016  		return false
  4017  	}
  4018  	// If the iterator completed, deliver directly whatever's available
  4019  	if it.done {
  4020  		select {
  4021  		case log := <-it.logs:
  4022  			it.Event = new(ERC20MintableMinterAdded)
  4023  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4024  				it.fail = err
  4025  				return false
  4026  			}
  4027  			it.Event.Raw = log
  4028  			return true
  4029  
  4030  		default:
  4031  			return false
  4032  		}
  4033  	}
  4034  	// Iterator still in progress, wait for either a data or an error event
  4035  	select {
  4036  	case log := <-it.logs:
  4037  		it.Event = new(ERC20MintableMinterAdded)
  4038  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4039  			it.fail = err
  4040  			return false
  4041  		}
  4042  		it.Event.Raw = log
  4043  		return true
  4044  
  4045  	case err := <-it.sub.Err():
  4046  		it.done = true
  4047  		it.fail = err
  4048  		return it.Next()
  4049  	}
  4050  }
  4051  
  4052  // Error returns any retrieval or parsing error occurred during filtering.
  4053  func (it *ERC20MintableMinterAddedIterator) Error() error {
  4054  	return it.fail
  4055  }
  4056  
  4057  // Close terminates the iteration process, releasing any pending underlying
  4058  // resources.
  4059  func (it *ERC20MintableMinterAddedIterator) Close() error {
  4060  	it.sub.Unsubscribe()
  4061  	return nil
  4062  }
  4063  
  4064  // ERC20MintableMinterAdded represents a MinterAdded event raised by the ERC20Mintable contract.
  4065  type ERC20MintableMinterAdded struct {
  4066  	Account common.Address
  4067  	Raw     types.Log // Blockchain specific contextual infos
  4068  }
  4069  
  4070  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4071  //
  4072  // Solidity: event MinterAdded(address indexed account)
  4073  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) {
  4074  
  4075  	var accountRule []interface{}
  4076  	for _, accountItem := range account {
  4077  		accountRule = append(accountRule, accountItem)
  4078  	}
  4079  
  4080  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
  4081  	if err != nil {
  4082  		return nil, err
  4083  	}
  4084  	return &ERC20MintableMinterAddedIterator{contract: _ERC20Mintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  4085  }
  4086  
  4087  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4088  //
  4089  // Solidity: event MinterAdded(address indexed account)
  4090  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) {
  4091  
  4092  	var accountRule []interface{}
  4093  	for _, accountItem := range account {
  4094  		accountRule = append(accountRule, accountItem)
  4095  	}
  4096  
  4097  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
  4098  	if err != nil {
  4099  		return nil, err
  4100  	}
  4101  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4102  		defer sub.Unsubscribe()
  4103  		for {
  4104  			select {
  4105  			case log := <-logs:
  4106  				// New log arrived, parse the event and forward to the user
  4107  				event := new(ERC20MintableMinterAdded)
  4108  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  4109  					return err
  4110  				}
  4111  				event.Raw = log
  4112  
  4113  				select {
  4114  				case sink <- event:
  4115  				case err := <-sub.Err():
  4116  					return err
  4117  				case <-quit:
  4118  					return nil
  4119  				}
  4120  			case err := <-sub.Err():
  4121  				return err
  4122  			case <-quit:
  4123  				return nil
  4124  			}
  4125  		}
  4126  	}), nil
  4127  }
  4128  
  4129  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4130  //
  4131  // Solidity: event MinterAdded(address indexed account)
  4132  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*ERC20MintableMinterAdded, error) {
  4133  	event := new(ERC20MintableMinterAdded)
  4134  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  4135  		return nil, err
  4136  	}
  4137  	return event, nil
  4138  }
  4139  
  4140  // ERC20MintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC20Mintable contract.
  4141  type ERC20MintableMinterRemovedIterator struct {
  4142  	Event *ERC20MintableMinterRemoved // Event containing the contract specifics and raw log
  4143  
  4144  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4145  	event    string              // Event name to use for unpacking event data
  4146  
  4147  	logs chan types.Log        // Log channel receiving the found contract events
  4148  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4149  	done bool                  // Whether the subscription completed delivering logs
  4150  	fail error                 // Occurred error to stop iteration
  4151  }
  4152  
  4153  // Next advances the iterator to the subsequent event, returning whether there
  4154  // are any more events found. In case of a retrieval or parsing error, false is
  4155  // returned and Error() can be queried for the exact failure.
  4156  func (it *ERC20MintableMinterRemovedIterator) Next() bool {
  4157  	// If the iterator failed, stop iterating
  4158  	if it.fail != nil {
  4159  		return false
  4160  	}
  4161  	// If the iterator completed, deliver directly whatever's available
  4162  	if it.done {
  4163  		select {
  4164  		case log := <-it.logs:
  4165  			it.Event = new(ERC20MintableMinterRemoved)
  4166  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4167  				it.fail = err
  4168  				return false
  4169  			}
  4170  			it.Event.Raw = log
  4171  			return true
  4172  
  4173  		default:
  4174  			return false
  4175  		}
  4176  	}
  4177  	// Iterator still in progress, wait for either a data or an error event
  4178  	select {
  4179  	case log := <-it.logs:
  4180  		it.Event = new(ERC20MintableMinterRemoved)
  4181  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4182  			it.fail = err
  4183  			return false
  4184  		}
  4185  		it.Event.Raw = log
  4186  		return true
  4187  
  4188  	case err := <-it.sub.Err():
  4189  		it.done = true
  4190  		it.fail = err
  4191  		return it.Next()
  4192  	}
  4193  }
  4194  
  4195  // Error returns any retrieval or parsing error occurred during filtering.
  4196  func (it *ERC20MintableMinterRemovedIterator) Error() error {
  4197  	return it.fail
  4198  }
  4199  
  4200  // Close terminates the iteration process, releasing any pending underlying
  4201  // resources.
  4202  func (it *ERC20MintableMinterRemovedIterator) Close() error {
  4203  	it.sub.Unsubscribe()
  4204  	return nil
  4205  }
  4206  
  4207  // ERC20MintableMinterRemoved represents a MinterRemoved event raised by the ERC20Mintable contract.
  4208  type ERC20MintableMinterRemoved struct {
  4209  	Account common.Address
  4210  	Raw     types.Log // Blockchain specific contextual infos
  4211  }
  4212  
  4213  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  4214  //
  4215  // Solidity: event MinterRemoved(address indexed account)
  4216  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) {
  4217  
  4218  	var accountRule []interface{}
  4219  	for _, accountItem := range account {
  4220  		accountRule = append(accountRule, accountItem)
  4221  	}
  4222  
  4223  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  4224  	if err != nil {
  4225  		return nil, err
  4226  	}
  4227  	return &ERC20MintableMinterRemovedIterator{contract: _ERC20Mintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  4228  }
  4229  
  4230  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  4231  //
  4232  // Solidity: event MinterRemoved(address indexed account)
  4233  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) {
  4234  
  4235  	var accountRule []interface{}
  4236  	for _, accountItem := range account {
  4237  		accountRule = append(accountRule, accountItem)
  4238  	}
  4239  
  4240  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  4241  	if err != nil {
  4242  		return nil, err
  4243  	}
  4244  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4245  		defer sub.Unsubscribe()
  4246  		for {
  4247  			select {
  4248  			case log := <-logs:
  4249  				// New log arrived, parse the event and forward to the user
  4250  				event := new(ERC20MintableMinterRemoved)
  4251  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  4252  					return err
  4253  				}
  4254  				event.Raw = log
  4255  
  4256  				select {
  4257  				case sink <- event:
  4258  				case err := <-sub.Err():
  4259  					return err
  4260  				case <-quit:
  4261  					return nil
  4262  				}
  4263  			case err := <-sub.Err():
  4264  				return err
  4265  			case <-quit:
  4266  				return nil
  4267  			}
  4268  		}
  4269  	}), nil
  4270  }
  4271  
  4272  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  4273  //
  4274  // Solidity: event MinterRemoved(address indexed account)
  4275  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) (*ERC20MintableMinterRemoved, error) {
  4276  	event := new(ERC20MintableMinterRemoved)
  4277  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  4278  		return nil, err
  4279  	}
  4280  	return event, nil
  4281  }
  4282  
  4283  // ERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Mintable contract.
  4284  type ERC20MintableTransferIterator struct {
  4285  	Event *ERC20MintableTransfer // Event containing the contract specifics and raw log
  4286  
  4287  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4288  	event    string              // Event name to use for unpacking event data
  4289  
  4290  	logs chan types.Log        // Log channel receiving the found contract events
  4291  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4292  	done bool                  // Whether the subscription completed delivering logs
  4293  	fail error                 // Occurred error to stop iteration
  4294  }
  4295  
  4296  // Next advances the iterator to the subsequent event, returning whether there
  4297  // are any more events found. In case of a retrieval or parsing error, false is
  4298  // returned and Error() can be queried for the exact failure.
  4299  func (it *ERC20MintableTransferIterator) Next() bool {
  4300  	// If the iterator failed, stop iterating
  4301  	if it.fail != nil {
  4302  		return false
  4303  	}
  4304  	// If the iterator completed, deliver directly whatever's available
  4305  	if it.done {
  4306  		select {
  4307  		case log := <-it.logs:
  4308  			it.Event = new(ERC20MintableTransfer)
  4309  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4310  				it.fail = err
  4311  				return false
  4312  			}
  4313  			it.Event.Raw = log
  4314  			return true
  4315  
  4316  		default:
  4317  			return false
  4318  		}
  4319  	}
  4320  	// Iterator still in progress, wait for either a data or an error event
  4321  	select {
  4322  	case log := <-it.logs:
  4323  		it.Event = new(ERC20MintableTransfer)
  4324  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4325  			it.fail = err
  4326  			return false
  4327  		}
  4328  		it.Event.Raw = log
  4329  		return true
  4330  
  4331  	case err := <-it.sub.Err():
  4332  		it.done = true
  4333  		it.fail = err
  4334  		return it.Next()
  4335  	}
  4336  }
  4337  
  4338  // Error returns any retrieval or parsing error occurred during filtering.
  4339  func (it *ERC20MintableTransferIterator) Error() error {
  4340  	return it.fail
  4341  }
  4342  
  4343  // Close terminates the iteration process, releasing any pending underlying
  4344  // resources.
  4345  func (it *ERC20MintableTransferIterator) Close() error {
  4346  	it.sub.Unsubscribe()
  4347  	return nil
  4348  }
  4349  
  4350  // ERC20MintableTransfer represents a Transfer event raised by the ERC20Mintable contract.
  4351  type ERC20MintableTransfer struct {
  4352  	From  common.Address
  4353  	To    common.Address
  4354  	Value *big.Int
  4355  	Raw   types.Log // Blockchain specific contextual infos
  4356  }
  4357  
  4358  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4359  //
  4360  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4361  func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) {
  4362  
  4363  	var fromRule []interface{}
  4364  	for _, fromItem := range from {
  4365  		fromRule = append(fromRule, fromItem)
  4366  	}
  4367  	var toRule []interface{}
  4368  	for _, toItem := range to {
  4369  		toRule = append(toRule, toItem)
  4370  	}
  4371  
  4372  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  4373  	if err != nil {
  4374  		return nil, err
  4375  	}
  4376  	return &ERC20MintableTransferIterator{contract: _ERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4377  }
  4378  
  4379  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4380  //
  4381  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4382  func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  4383  
  4384  	var fromRule []interface{}
  4385  	for _, fromItem := range from {
  4386  		fromRule = append(fromRule, fromItem)
  4387  	}
  4388  	var toRule []interface{}
  4389  	for _, toItem := range to {
  4390  		toRule = append(toRule, toItem)
  4391  	}
  4392  
  4393  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  4394  	if err != nil {
  4395  		return nil, err
  4396  	}
  4397  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4398  		defer sub.Unsubscribe()
  4399  		for {
  4400  			select {
  4401  			case log := <-logs:
  4402  				// New log arrived, parse the event and forward to the user
  4403  				event := new(ERC20MintableTransfer)
  4404  				if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  4405  					return err
  4406  				}
  4407  				event.Raw = log
  4408  
  4409  				select {
  4410  				case sink <- event:
  4411  				case err := <-sub.Err():
  4412  					return err
  4413  				case <-quit:
  4414  					return nil
  4415  				}
  4416  			case err := <-sub.Err():
  4417  				return err
  4418  			case <-quit:
  4419  				return nil
  4420  			}
  4421  		}
  4422  	}), nil
  4423  }
  4424  
  4425  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4426  //
  4427  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4428  func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC20MintableTransfer, error) {
  4429  	event := new(ERC20MintableTransfer)
  4430  	if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  4431  		return nil, err
  4432  	}
  4433  	return event, nil
  4434  }
  4435  
  4436  // ERC20OnApproveABI is the input ABI used to generate the binding from.
  4437  const ERC20OnApproveABI = "[{\"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\"},{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  4438  
  4439  // ERC20OnApproveFuncSigs maps the 4-byte function signature to its string representation.
  4440  var ERC20OnApproveFuncSigs = map[string]string{
  4441  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
  4442  	"dd62ed3e": "allowance(address,address)",
  4443  	"095ea7b3": "approve(address,uint256)",
  4444  	"cae9ca51": "approveAndCall(address,uint256,bytes)",
  4445  	"70a08231": "balanceOf(address)",
  4446  	"a457c2d7": "decreaseAllowance(address,uint256)",
  4447  	"39509351": "increaseAllowance(address,uint256)",
  4448  	"18160ddd": "totalSupply()",
  4449  	"a9059cbb": "transfer(address,uint256)",
  4450  	"23b872dd": "transferFrom(address,address,uint256)",
  4451  }
  4452  
  4453  // ERC20OnApproveBin is the compiled bytecode used for deploying new contracts.
  4454  var ERC20OnApproveBin = "0x6080604052610dc0806100136000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a0823114610184578063a457c2d7146101aa578063a9059cbb146101d6578063cae9ca5114610202578063dd62ed3e146102bd5761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd57806339509351146101335780636cd28f9a1461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b0381351690602001356102eb565b604080519115158252519081900360200190f35b6100eb610308565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b0381358116916020810135909116906040013561030e565b6100cf6004803603604081101561014957600080fd5b506001600160a01b03813516906020013561039c565b6101676103f0565b604080516001600160e01b03199092168252519081900360200190f35b6100eb6004803603602081101561019a57600080fd5b50356001600160a01b031661040b565b6100cf600480360360408110156101c057600080fd5b506001600160a01b038135169060200135610426565b6100cf600480360360408110156101ec57600080fd5b506001600160a01b038135169060200135610494565b6100cf6004803603606081101561021857600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561024857600080fd5b82018360208201111561025a57600080fd5b8035906020019184600183028401116401000000008311171561027c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104a8945050505050565b6100eb600480360360408110156102d357600080fd5b506001600160a01b03813581169160200135166104c9565b60006102ff6102f86104f4565b84846104f8565b50600192915050565b60025490565b600061031b8484846105e4565b610391846103276104f4565b61038c85604051806060016040528060288152602001610cf6602891396001600160a01b038a166000908152600160205260408120906103656104f4565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61074016565b6104f8565b5060015b9392505050565b60006102ff6103a96104f4565b8461038c85600160006103ba6104f4565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6107d716565b604051806028610cce82396028019050604051809103902081565b6001600160a01b031660009081526020819052604090205490565b60006102ff6104336104f4565b8461038c85604051806060016040528060258152602001610d67602591396001600061045d6104f4565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61074016565b60006102ff6104a16104f4565b84846105e4565b60006104b484846102eb565b6104bd57600080fd5b61039533858585610831565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661053d5760405162461bcd60e51b8152600401808060200182810382526024815260200180610d436024913960400191505060405180910390fd5b6001600160a01b0382166105825760405162461bcd60e51b8152600401808060200182810382526022815260200180610c556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106295760405162461bcd60e51b8152600401808060200182810382526025815260200180610d1e6025913960400191505060405180910390fd5b6001600160a01b03821661066e5760405162461bcd60e51b8152600401808060200182810382526023815260200180610c326023913960400191505060405180910390fd5b6106b181604051806060016040528060268152602001610ca8602691396001600160a01b038616600090815260208190526040902054919063ffffffff61074016565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546106e6908263ffffffff6107d716565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156107cf5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561079457818101518382015260200161077c565b50505050905090810190601f1680156107c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610395576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b610853836040518080610cce6028913960280190506040518091039020610a87565b61088e5760405162461bcd60e51b8152600401808060200182810382526031815260200180610c776031913960400191505060405180910390fd5b60006060846001600160a01b03166040518080610cce60289139602801905060405180910390208787878760405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561092f578181015183820152602001610917565b50505050905090810190601f16801561095c5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b602083106109c45780518252601f1990920191602091820191016109a5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610a26576040519150601f19603f3d011682016040523d82523d6000602084013e610a2b565b606091505b5091509150818190610a7e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561079457818101518382015260200161077c565b50505050505050565b6000610a9283610aa3565b801561039557506103958383610ad7565b6000610ab6826301ffc9a760e01b610ad7565b8015610ad15750610acf826001600160e01b0319610ad7565b155b92915050565b6000806000610ae68585610afd565b91509150818015610af45750805b95945050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b60208310610b855780518252601f199092019160209182019101610b66565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d8060008114610be6576040519150601f19603f3d011682016040523d82523d6000602084013e610beb565b606091505b5091509150602081511015610c095760008094509450505050610c2a565b81818060200190516020811015610c1f57600080fd5b505190955093505050505b925092905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332304f6e417070726f76653a207370656e64657220646f65736e277420737570706f7274206f6e417070726f766545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f6e417070726f766528616464726573732c616464726573732c75696e743235362c62797465732945524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158205f38639f33e199b2a44d46fed86192ba1daf836a08c11f82aa877b89bb0dc9fc64736f6c634300050c0032"
  4455  
  4456  // DeployERC20OnApprove deploys a new Ethereum contract, binding an instance of ERC20OnApprove to it.
  4457  func DeployERC20OnApprove(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20OnApprove, error) {
  4458  	parsed, err := abi.JSON(strings.NewReader(ERC20OnApproveABI))
  4459  	if err != nil {
  4460  		return common.Address{}, nil, nil, err
  4461  	}
  4462  
  4463  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20OnApproveBin), backend)
  4464  	if err != nil {
  4465  		return common.Address{}, nil, nil, err
  4466  	}
  4467  	return address, tx, &ERC20OnApprove{ERC20OnApproveCaller: ERC20OnApproveCaller{contract: contract}, ERC20OnApproveTransactor: ERC20OnApproveTransactor{contract: contract}, ERC20OnApproveFilterer: ERC20OnApproveFilterer{contract: contract}}, nil
  4468  }
  4469  
  4470  // ERC20OnApprove is an auto generated Go binding around an Ethereum contract.
  4471  type ERC20OnApprove struct {
  4472  	ERC20OnApproveCaller     // Read-only binding to the contract
  4473  	ERC20OnApproveTransactor // Write-only binding to the contract
  4474  	ERC20OnApproveFilterer   // Log filterer for contract events
  4475  }
  4476  
  4477  // ERC20OnApproveCaller is an auto generated read-only Go binding around an Ethereum contract.
  4478  type ERC20OnApproveCaller struct {
  4479  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4480  }
  4481  
  4482  // ERC20OnApproveTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4483  type ERC20OnApproveTransactor struct {
  4484  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4485  }
  4486  
  4487  // ERC20OnApproveFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4488  type ERC20OnApproveFilterer struct {
  4489  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4490  }
  4491  
  4492  // ERC20OnApproveSession is an auto generated Go binding around an Ethereum contract,
  4493  // with pre-set call and transact options.
  4494  type ERC20OnApproveSession struct {
  4495  	Contract     *ERC20OnApprove   // Generic contract binding to set the session for
  4496  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4497  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4498  }
  4499  
  4500  // ERC20OnApproveCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4501  // with pre-set call options.
  4502  type ERC20OnApproveCallerSession struct {
  4503  	Contract *ERC20OnApproveCaller // Generic contract caller binding to set the session for
  4504  	CallOpts bind.CallOpts         // Call options to use throughout this session
  4505  }
  4506  
  4507  // ERC20OnApproveTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4508  // with pre-set transact options.
  4509  type ERC20OnApproveTransactorSession struct {
  4510  	Contract     *ERC20OnApproveTransactor // Generic contract transactor binding to set the session for
  4511  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  4512  }
  4513  
  4514  // ERC20OnApproveRaw is an auto generated low-level Go binding around an Ethereum contract.
  4515  type ERC20OnApproveRaw struct {
  4516  	Contract *ERC20OnApprove // Generic contract binding to access the raw methods on
  4517  }
  4518  
  4519  // ERC20OnApproveCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4520  type ERC20OnApproveCallerRaw struct {
  4521  	Contract *ERC20OnApproveCaller // Generic read-only contract binding to access the raw methods on
  4522  }
  4523  
  4524  // ERC20OnApproveTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4525  type ERC20OnApproveTransactorRaw struct {
  4526  	Contract *ERC20OnApproveTransactor // Generic write-only contract binding to access the raw methods on
  4527  }
  4528  
  4529  // NewERC20OnApprove creates a new instance of ERC20OnApprove, bound to a specific deployed contract.
  4530  func NewERC20OnApprove(address common.Address, backend bind.ContractBackend) (*ERC20OnApprove, error) {
  4531  	contract, err := bindERC20OnApprove(address, backend, backend, backend)
  4532  	if err != nil {
  4533  		return nil, err
  4534  	}
  4535  	return &ERC20OnApprove{ERC20OnApproveCaller: ERC20OnApproveCaller{contract: contract}, ERC20OnApproveTransactor: ERC20OnApproveTransactor{contract: contract}, ERC20OnApproveFilterer: ERC20OnApproveFilterer{contract: contract}}, nil
  4536  }
  4537  
  4538  // NewERC20OnApproveCaller creates a new read-only instance of ERC20OnApprove, bound to a specific deployed contract.
  4539  func NewERC20OnApproveCaller(address common.Address, caller bind.ContractCaller) (*ERC20OnApproveCaller, error) {
  4540  	contract, err := bindERC20OnApprove(address, caller, nil, nil)
  4541  	if err != nil {
  4542  		return nil, err
  4543  	}
  4544  	return &ERC20OnApproveCaller{contract: contract}, nil
  4545  }
  4546  
  4547  // NewERC20OnApproveTransactor creates a new write-only instance of ERC20OnApprove, bound to a specific deployed contract.
  4548  func NewERC20OnApproveTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20OnApproveTransactor, error) {
  4549  	contract, err := bindERC20OnApprove(address, nil, transactor, nil)
  4550  	if err != nil {
  4551  		return nil, err
  4552  	}
  4553  	return &ERC20OnApproveTransactor{contract: contract}, nil
  4554  }
  4555  
  4556  // NewERC20OnApproveFilterer creates a new log filterer instance of ERC20OnApprove, bound to a specific deployed contract.
  4557  func NewERC20OnApproveFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20OnApproveFilterer, error) {
  4558  	contract, err := bindERC20OnApprove(address, nil, nil, filterer)
  4559  	if err != nil {
  4560  		return nil, err
  4561  	}
  4562  	return &ERC20OnApproveFilterer{contract: contract}, nil
  4563  }
  4564  
  4565  // bindERC20OnApprove binds a generic wrapper to an already deployed contract.
  4566  func bindERC20OnApprove(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4567  	parsed, err := abi.JSON(strings.NewReader(ERC20OnApproveABI))
  4568  	if err != nil {
  4569  		return nil, err
  4570  	}
  4571  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4572  }
  4573  
  4574  // Call invokes the (constant) contract method with params as input values and
  4575  // sets the output to result. The result type might be a single field for simple
  4576  // returns, a slice of interfaces for anonymous returns and a struct for named
  4577  // returns.
  4578  func (_ERC20OnApprove *ERC20OnApproveRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4579  	return _ERC20OnApprove.Contract.ERC20OnApproveCaller.contract.Call(opts, result, method, params...)
  4580  }
  4581  
  4582  // Transfer initiates a plain transaction to move funds to the contract, calling
  4583  // its default method if one is available.
  4584  func (_ERC20OnApprove *ERC20OnApproveRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4585  	return _ERC20OnApprove.Contract.ERC20OnApproveTransactor.contract.Transfer(opts)
  4586  }
  4587  
  4588  // Transact invokes the (paid) contract method with params as input values.
  4589  func (_ERC20OnApprove *ERC20OnApproveRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4590  	return _ERC20OnApprove.Contract.ERC20OnApproveTransactor.contract.Transact(opts, method, params...)
  4591  }
  4592  
  4593  // Call invokes the (constant) contract method with params as input values and
  4594  // sets the output to result. The result type might be a single field for simple
  4595  // returns, a slice of interfaces for anonymous returns and a struct for named
  4596  // returns.
  4597  func (_ERC20OnApprove *ERC20OnApproveCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4598  	return _ERC20OnApprove.Contract.contract.Call(opts, result, method, params...)
  4599  }
  4600  
  4601  // Transfer initiates a plain transaction to move funds to the contract, calling
  4602  // its default method if one is available.
  4603  func (_ERC20OnApprove *ERC20OnApproveTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4604  	return _ERC20OnApprove.Contract.contract.Transfer(opts)
  4605  }
  4606  
  4607  // Transact invokes the (paid) contract method with params as input values.
  4608  func (_ERC20OnApprove *ERC20OnApproveTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4609  	return _ERC20OnApprove.Contract.contract.Transact(opts, method, params...)
  4610  }
  4611  
  4612  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  4613  //
  4614  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  4615  func (_ERC20OnApprove *ERC20OnApproveCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
  4616  	var (
  4617  		ret0 = new([4]byte)
  4618  	)
  4619  	out := ret0
  4620  	err := _ERC20OnApprove.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
  4621  	return *ret0, err
  4622  }
  4623  
  4624  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  4625  //
  4626  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  4627  func (_ERC20OnApprove *ERC20OnApproveSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  4628  	return _ERC20OnApprove.Contract.INTERFACEIDONAPPROVE(&_ERC20OnApprove.CallOpts)
  4629  }
  4630  
  4631  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  4632  //
  4633  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  4634  func (_ERC20OnApprove *ERC20OnApproveCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  4635  	return _ERC20OnApprove.Contract.INTERFACEIDONAPPROVE(&_ERC20OnApprove.CallOpts)
  4636  }
  4637  
  4638  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  4639  //
  4640  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  4641  func (_ERC20OnApprove *ERC20OnApproveCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  4642  	var (
  4643  		ret0 = new(*big.Int)
  4644  	)
  4645  	out := ret0
  4646  	err := _ERC20OnApprove.contract.Call(opts, out, "allowance", owner, spender)
  4647  	return *ret0, err
  4648  }
  4649  
  4650  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  4651  //
  4652  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  4653  func (_ERC20OnApprove *ERC20OnApproveSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  4654  	return _ERC20OnApprove.Contract.Allowance(&_ERC20OnApprove.CallOpts, owner, spender)
  4655  }
  4656  
  4657  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  4658  //
  4659  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  4660  func (_ERC20OnApprove *ERC20OnApproveCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  4661  	return _ERC20OnApprove.Contract.Allowance(&_ERC20OnApprove.CallOpts, owner, spender)
  4662  }
  4663  
  4664  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4665  //
  4666  // Solidity: function balanceOf(address account) constant returns(uint256)
  4667  func (_ERC20OnApprove *ERC20OnApproveCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  4668  	var (
  4669  		ret0 = new(*big.Int)
  4670  	)
  4671  	out := ret0
  4672  	err := _ERC20OnApprove.contract.Call(opts, out, "balanceOf", account)
  4673  	return *ret0, err
  4674  }
  4675  
  4676  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4677  //
  4678  // Solidity: function balanceOf(address account) constant returns(uint256)
  4679  func (_ERC20OnApprove *ERC20OnApproveSession) BalanceOf(account common.Address) (*big.Int, error) {
  4680  	return _ERC20OnApprove.Contract.BalanceOf(&_ERC20OnApprove.CallOpts, account)
  4681  }
  4682  
  4683  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4684  //
  4685  // Solidity: function balanceOf(address account) constant returns(uint256)
  4686  func (_ERC20OnApprove *ERC20OnApproveCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  4687  	return _ERC20OnApprove.Contract.BalanceOf(&_ERC20OnApprove.CallOpts, account)
  4688  }
  4689  
  4690  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4691  //
  4692  // Solidity: function totalSupply() constant returns(uint256)
  4693  func (_ERC20OnApprove *ERC20OnApproveCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  4694  	var (
  4695  		ret0 = new(*big.Int)
  4696  	)
  4697  	out := ret0
  4698  	err := _ERC20OnApprove.contract.Call(opts, out, "totalSupply")
  4699  	return *ret0, err
  4700  }
  4701  
  4702  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4703  //
  4704  // Solidity: function totalSupply() constant returns(uint256)
  4705  func (_ERC20OnApprove *ERC20OnApproveSession) TotalSupply() (*big.Int, error) {
  4706  	return _ERC20OnApprove.Contract.TotalSupply(&_ERC20OnApprove.CallOpts)
  4707  }
  4708  
  4709  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4710  //
  4711  // Solidity: function totalSupply() constant returns(uint256)
  4712  func (_ERC20OnApprove *ERC20OnApproveCallerSession) TotalSupply() (*big.Int, error) {
  4713  	return _ERC20OnApprove.Contract.TotalSupply(&_ERC20OnApprove.CallOpts)
  4714  }
  4715  
  4716  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4717  //
  4718  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  4719  func (_ERC20OnApprove *ERC20OnApproveTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  4720  	return _ERC20OnApprove.contract.Transact(opts, "approve", spender, amount)
  4721  }
  4722  
  4723  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4724  //
  4725  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  4726  func (_ERC20OnApprove *ERC20OnApproveSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  4727  	return _ERC20OnApprove.Contract.Approve(&_ERC20OnApprove.TransactOpts, spender, amount)
  4728  }
  4729  
  4730  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4731  //
  4732  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  4733  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  4734  	return _ERC20OnApprove.Contract.Approve(&_ERC20OnApprove.TransactOpts, spender, amount)
  4735  }
  4736  
  4737  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  4738  //
  4739  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  4740  func (_ERC20OnApprove *ERC20OnApproveTransactor) ApproveAndCall(opts *bind.TransactOpts, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  4741  	return _ERC20OnApprove.contract.Transact(opts, "approveAndCall", spender, amount, data)
  4742  }
  4743  
  4744  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  4745  //
  4746  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  4747  func (_ERC20OnApprove *ERC20OnApproveSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  4748  	return _ERC20OnApprove.Contract.ApproveAndCall(&_ERC20OnApprove.TransactOpts, spender, amount, data)
  4749  }
  4750  
  4751  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  4752  //
  4753  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  4754  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  4755  	return _ERC20OnApprove.Contract.ApproveAndCall(&_ERC20OnApprove.TransactOpts, spender, amount, data)
  4756  }
  4757  
  4758  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  4759  //
  4760  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  4761  func (_ERC20OnApprove *ERC20OnApproveTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  4762  	return _ERC20OnApprove.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  4763  }
  4764  
  4765  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  4766  //
  4767  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  4768  func (_ERC20OnApprove *ERC20OnApproveSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  4769  	return _ERC20OnApprove.Contract.DecreaseAllowance(&_ERC20OnApprove.TransactOpts, spender, subtractedValue)
  4770  }
  4771  
  4772  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  4773  //
  4774  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  4775  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  4776  	return _ERC20OnApprove.Contract.DecreaseAllowance(&_ERC20OnApprove.TransactOpts, spender, subtractedValue)
  4777  }
  4778  
  4779  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  4780  //
  4781  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  4782  func (_ERC20OnApprove *ERC20OnApproveTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  4783  	return _ERC20OnApprove.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  4784  }
  4785  
  4786  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  4787  //
  4788  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  4789  func (_ERC20OnApprove *ERC20OnApproveSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  4790  	return _ERC20OnApprove.Contract.IncreaseAllowance(&_ERC20OnApprove.TransactOpts, spender, addedValue)
  4791  }
  4792  
  4793  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  4794  //
  4795  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  4796  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  4797  	return _ERC20OnApprove.Contract.IncreaseAllowance(&_ERC20OnApprove.TransactOpts, spender, addedValue)
  4798  }
  4799  
  4800  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4801  //
  4802  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4803  func (_ERC20OnApprove *ERC20OnApproveTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4804  	return _ERC20OnApprove.contract.Transact(opts, "transfer", recipient, amount)
  4805  }
  4806  
  4807  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4808  //
  4809  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4810  func (_ERC20OnApprove *ERC20OnApproveSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4811  	return _ERC20OnApprove.Contract.Transfer(&_ERC20OnApprove.TransactOpts, recipient, amount)
  4812  }
  4813  
  4814  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4815  //
  4816  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4817  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4818  	return _ERC20OnApprove.Contract.Transfer(&_ERC20OnApprove.TransactOpts, recipient, amount)
  4819  }
  4820  
  4821  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4822  //
  4823  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4824  func (_ERC20OnApprove *ERC20OnApproveTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4825  	return _ERC20OnApprove.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  4826  }
  4827  
  4828  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4829  //
  4830  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4831  func (_ERC20OnApprove *ERC20OnApproveSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4832  	return _ERC20OnApprove.Contract.TransferFrom(&_ERC20OnApprove.TransactOpts, sender, recipient, amount)
  4833  }
  4834  
  4835  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4836  //
  4837  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4838  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4839  	return _ERC20OnApprove.Contract.TransferFrom(&_ERC20OnApprove.TransactOpts, sender, recipient, amount)
  4840  }
  4841  
  4842  // ERC20OnApproveApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20OnApprove contract.
  4843  type ERC20OnApproveApprovalIterator struct {
  4844  	Event *ERC20OnApproveApproval // Event containing the contract specifics and raw log
  4845  
  4846  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4847  	event    string              // Event name to use for unpacking event data
  4848  
  4849  	logs chan types.Log        // Log channel receiving the found contract events
  4850  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4851  	done bool                  // Whether the subscription completed delivering logs
  4852  	fail error                 // Occurred error to stop iteration
  4853  }
  4854  
  4855  // Next advances the iterator to the subsequent event, returning whether there
  4856  // are any more events found. In case of a retrieval or parsing error, false is
  4857  // returned and Error() can be queried for the exact failure.
  4858  func (it *ERC20OnApproveApprovalIterator) Next() bool {
  4859  	// If the iterator failed, stop iterating
  4860  	if it.fail != nil {
  4861  		return false
  4862  	}
  4863  	// If the iterator completed, deliver directly whatever's available
  4864  	if it.done {
  4865  		select {
  4866  		case log := <-it.logs:
  4867  			it.Event = new(ERC20OnApproveApproval)
  4868  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4869  				it.fail = err
  4870  				return false
  4871  			}
  4872  			it.Event.Raw = log
  4873  			return true
  4874  
  4875  		default:
  4876  			return false
  4877  		}
  4878  	}
  4879  	// Iterator still in progress, wait for either a data or an error event
  4880  	select {
  4881  	case log := <-it.logs:
  4882  		it.Event = new(ERC20OnApproveApproval)
  4883  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4884  			it.fail = err
  4885  			return false
  4886  		}
  4887  		it.Event.Raw = log
  4888  		return true
  4889  
  4890  	case err := <-it.sub.Err():
  4891  		it.done = true
  4892  		it.fail = err
  4893  		return it.Next()
  4894  	}
  4895  }
  4896  
  4897  // Error returns any retrieval or parsing error occurred during filtering.
  4898  func (it *ERC20OnApproveApprovalIterator) Error() error {
  4899  	return it.fail
  4900  }
  4901  
  4902  // Close terminates the iteration process, releasing any pending underlying
  4903  // resources.
  4904  func (it *ERC20OnApproveApprovalIterator) Close() error {
  4905  	it.sub.Unsubscribe()
  4906  	return nil
  4907  }
  4908  
  4909  // ERC20OnApproveApproval represents a Approval event raised by the ERC20OnApprove contract.
  4910  type ERC20OnApproveApproval struct {
  4911  	Owner   common.Address
  4912  	Spender common.Address
  4913  	Value   *big.Int
  4914  	Raw     types.Log // Blockchain specific contextual infos
  4915  }
  4916  
  4917  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4918  //
  4919  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4920  func (_ERC20OnApprove *ERC20OnApproveFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20OnApproveApprovalIterator, error) {
  4921  
  4922  	var ownerRule []interface{}
  4923  	for _, ownerItem := range owner {
  4924  		ownerRule = append(ownerRule, ownerItem)
  4925  	}
  4926  	var spenderRule []interface{}
  4927  	for _, spenderItem := range spender {
  4928  		spenderRule = append(spenderRule, spenderItem)
  4929  	}
  4930  
  4931  	logs, sub, err := _ERC20OnApprove.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  4932  	if err != nil {
  4933  		return nil, err
  4934  	}
  4935  	return &ERC20OnApproveApprovalIterator{contract: _ERC20OnApprove.contract, event: "Approval", logs: logs, sub: sub}, nil
  4936  }
  4937  
  4938  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4939  //
  4940  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4941  func (_ERC20OnApprove *ERC20OnApproveFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20OnApproveApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  4942  
  4943  	var ownerRule []interface{}
  4944  	for _, ownerItem := range owner {
  4945  		ownerRule = append(ownerRule, ownerItem)
  4946  	}
  4947  	var spenderRule []interface{}
  4948  	for _, spenderItem := range spender {
  4949  		spenderRule = append(spenderRule, spenderItem)
  4950  	}
  4951  
  4952  	logs, sub, err := _ERC20OnApprove.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  4953  	if err != nil {
  4954  		return nil, err
  4955  	}
  4956  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4957  		defer sub.Unsubscribe()
  4958  		for {
  4959  			select {
  4960  			case log := <-logs:
  4961  				// New log arrived, parse the event and forward to the user
  4962  				event := new(ERC20OnApproveApproval)
  4963  				if err := _ERC20OnApprove.contract.UnpackLog(event, "Approval", log); err != nil {
  4964  					return err
  4965  				}
  4966  				event.Raw = log
  4967  
  4968  				select {
  4969  				case sink <- event:
  4970  				case err := <-sub.Err():
  4971  					return err
  4972  				case <-quit:
  4973  					return nil
  4974  				}
  4975  			case err := <-sub.Err():
  4976  				return err
  4977  			case <-quit:
  4978  				return nil
  4979  			}
  4980  		}
  4981  	}), nil
  4982  }
  4983  
  4984  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4985  //
  4986  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4987  func (_ERC20OnApprove *ERC20OnApproveFilterer) ParseApproval(log types.Log) (*ERC20OnApproveApproval, error) {
  4988  	event := new(ERC20OnApproveApproval)
  4989  	if err := _ERC20OnApprove.contract.UnpackLog(event, "Approval", log); err != nil {
  4990  		return nil, err
  4991  	}
  4992  	return event, nil
  4993  }
  4994  
  4995  // ERC20OnApproveTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20OnApprove contract.
  4996  type ERC20OnApproveTransferIterator struct {
  4997  	Event *ERC20OnApproveTransfer // Event containing the contract specifics and raw log
  4998  
  4999  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5000  	event    string              // Event name to use for unpacking event data
  5001  
  5002  	logs chan types.Log        // Log channel receiving the found contract events
  5003  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5004  	done bool                  // Whether the subscription completed delivering logs
  5005  	fail error                 // Occurred error to stop iteration
  5006  }
  5007  
  5008  // Next advances the iterator to the subsequent event, returning whether there
  5009  // are any more events found. In case of a retrieval or parsing error, false is
  5010  // returned and Error() can be queried for the exact failure.
  5011  func (it *ERC20OnApproveTransferIterator) Next() bool {
  5012  	// If the iterator failed, stop iterating
  5013  	if it.fail != nil {
  5014  		return false
  5015  	}
  5016  	// If the iterator completed, deliver directly whatever's available
  5017  	if it.done {
  5018  		select {
  5019  		case log := <-it.logs:
  5020  			it.Event = new(ERC20OnApproveTransfer)
  5021  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5022  				it.fail = err
  5023  				return false
  5024  			}
  5025  			it.Event.Raw = log
  5026  			return true
  5027  
  5028  		default:
  5029  			return false
  5030  		}
  5031  	}
  5032  	// Iterator still in progress, wait for either a data or an error event
  5033  	select {
  5034  	case log := <-it.logs:
  5035  		it.Event = new(ERC20OnApproveTransfer)
  5036  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5037  			it.fail = err
  5038  			return false
  5039  		}
  5040  		it.Event.Raw = log
  5041  		return true
  5042  
  5043  	case err := <-it.sub.Err():
  5044  		it.done = true
  5045  		it.fail = err
  5046  		return it.Next()
  5047  	}
  5048  }
  5049  
  5050  // Error returns any retrieval or parsing error occurred during filtering.
  5051  func (it *ERC20OnApproveTransferIterator) Error() error {
  5052  	return it.fail
  5053  }
  5054  
  5055  // Close terminates the iteration process, releasing any pending underlying
  5056  // resources.
  5057  func (it *ERC20OnApproveTransferIterator) Close() error {
  5058  	it.sub.Unsubscribe()
  5059  	return nil
  5060  }
  5061  
  5062  // ERC20OnApproveTransfer represents a Transfer event raised by the ERC20OnApprove contract.
  5063  type ERC20OnApproveTransfer struct {
  5064  	From  common.Address
  5065  	To    common.Address
  5066  	Value *big.Int
  5067  	Raw   types.Log // Blockchain specific contextual infos
  5068  }
  5069  
  5070  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5071  //
  5072  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5073  func (_ERC20OnApprove *ERC20OnApproveFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20OnApproveTransferIterator, error) {
  5074  
  5075  	var fromRule []interface{}
  5076  	for _, fromItem := range from {
  5077  		fromRule = append(fromRule, fromItem)
  5078  	}
  5079  	var toRule []interface{}
  5080  	for _, toItem := range to {
  5081  		toRule = append(toRule, toItem)
  5082  	}
  5083  
  5084  	logs, sub, err := _ERC20OnApprove.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  5085  	if err != nil {
  5086  		return nil, err
  5087  	}
  5088  	return &ERC20OnApproveTransferIterator{contract: _ERC20OnApprove.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5089  }
  5090  
  5091  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5092  //
  5093  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5094  func (_ERC20OnApprove *ERC20OnApproveFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20OnApproveTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  5095  
  5096  	var fromRule []interface{}
  5097  	for _, fromItem := range from {
  5098  		fromRule = append(fromRule, fromItem)
  5099  	}
  5100  	var toRule []interface{}
  5101  	for _, toItem := range to {
  5102  		toRule = append(toRule, toItem)
  5103  	}
  5104  
  5105  	logs, sub, err := _ERC20OnApprove.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  5106  	if err != nil {
  5107  		return nil, err
  5108  	}
  5109  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5110  		defer sub.Unsubscribe()
  5111  		for {
  5112  			select {
  5113  			case log := <-logs:
  5114  				// New log arrived, parse the event and forward to the user
  5115  				event := new(ERC20OnApproveTransfer)
  5116  				if err := _ERC20OnApprove.contract.UnpackLog(event, "Transfer", log); err != nil {
  5117  					return err
  5118  				}
  5119  				event.Raw = log
  5120  
  5121  				select {
  5122  				case sink <- event:
  5123  				case err := <-sub.Err():
  5124  					return err
  5125  				case <-quit:
  5126  					return nil
  5127  				}
  5128  			case err := <-sub.Err():
  5129  				return err
  5130  			case <-quit:
  5131  				return nil
  5132  			}
  5133  		}
  5134  	}), nil
  5135  }
  5136  
  5137  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5138  //
  5139  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5140  func (_ERC20OnApprove *ERC20OnApproveFilterer) ParseTransfer(log types.Log) (*ERC20OnApproveTransfer, error) {
  5141  	event := new(ERC20OnApproveTransfer)
  5142  	if err := _ERC20OnApprove.contract.UnpackLog(event, "Transfer", log); err != nil {
  5143  		return nil, err
  5144  	}
  5145  	return event, nil
  5146  }
  5147  
  5148  // IERC165ABI is the input ABI used to generate the binding from.
  5149  const IERC165ABI = "[{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  5150  
  5151  // IERC165FuncSigs maps the 4-byte function signature to its string representation.
  5152  var IERC165FuncSigs = map[string]string{
  5153  	"01ffc9a7": "supportsInterface(bytes4)",
  5154  }
  5155  
  5156  // IERC165 is an auto generated Go binding around an Ethereum contract.
  5157  type IERC165 struct {
  5158  	IERC165Caller     // Read-only binding to the contract
  5159  	IERC165Transactor // Write-only binding to the contract
  5160  	IERC165Filterer   // Log filterer for contract events
  5161  }
  5162  
  5163  // IERC165Caller is an auto generated read-only Go binding around an Ethereum contract.
  5164  type IERC165Caller struct {
  5165  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5166  }
  5167  
  5168  // IERC165Transactor is an auto generated write-only Go binding around an Ethereum contract.
  5169  type IERC165Transactor struct {
  5170  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5171  }
  5172  
  5173  // IERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5174  type IERC165Filterer struct {
  5175  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5176  }
  5177  
  5178  // IERC165Session is an auto generated Go binding around an Ethereum contract,
  5179  // with pre-set call and transact options.
  5180  type IERC165Session struct {
  5181  	Contract     *IERC165          // Generic contract binding to set the session for
  5182  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5183  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5184  }
  5185  
  5186  // IERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5187  // with pre-set call options.
  5188  type IERC165CallerSession struct {
  5189  	Contract *IERC165Caller // Generic contract caller binding to set the session for
  5190  	CallOpts bind.CallOpts  // Call options to use throughout this session
  5191  }
  5192  
  5193  // IERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5194  // with pre-set transact options.
  5195  type IERC165TransactorSession struct {
  5196  	Contract     *IERC165Transactor // Generic contract transactor binding to set the session for
  5197  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  5198  }
  5199  
  5200  // IERC165Raw is an auto generated low-level Go binding around an Ethereum contract.
  5201  type IERC165Raw struct {
  5202  	Contract *IERC165 // Generic contract binding to access the raw methods on
  5203  }
  5204  
  5205  // IERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5206  type IERC165CallerRaw struct {
  5207  	Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on
  5208  }
  5209  
  5210  // IERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5211  type IERC165TransactorRaw struct {
  5212  	Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on
  5213  }
  5214  
  5215  // NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract.
  5216  func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) {
  5217  	contract, err := bindIERC165(address, backend, backend, backend)
  5218  	if err != nil {
  5219  		return nil, err
  5220  	}
  5221  	return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil
  5222  }
  5223  
  5224  // NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract.
  5225  func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) {
  5226  	contract, err := bindIERC165(address, caller, nil, nil)
  5227  	if err != nil {
  5228  		return nil, err
  5229  	}
  5230  	return &IERC165Caller{contract: contract}, nil
  5231  }
  5232  
  5233  // NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract.
  5234  func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) {
  5235  	contract, err := bindIERC165(address, nil, transactor, nil)
  5236  	if err != nil {
  5237  		return nil, err
  5238  	}
  5239  	return &IERC165Transactor{contract: contract}, nil
  5240  }
  5241  
  5242  // NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract.
  5243  func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) {
  5244  	contract, err := bindIERC165(address, nil, nil, filterer)
  5245  	if err != nil {
  5246  		return nil, err
  5247  	}
  5248  	return &IERC165Filterer{contract: contract}, nil
  5249  }
  5250  
  5251  // bindIERC165 binds a generic wrapper to an already deployed contract.
  5252  func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5253  	parsed, err := abi.JSON(strings.NewReader(IERC165ABI))
  5254  	if err != nil {
  5255  		return nil, err
  5256  	}
  5257  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5258  }
  5259  
  5260  // Call invokes the (constant) contract method with params as input values and
  5261  // sets the output to result. The result type might be a single field for simple
  5262  // returns, a slice of interfaces for anonymous returns and a struct for named
  5263  // returns.
  5264  func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5265  	return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...)
  5266  }
  5267  
  5268  // Transfer initiates a plain transaction to move funds to the contract, calling
  5269  // its default method if one is available.
  5270  func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5271  	return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts)
  5272  }
  5273  
  5274  // Transact invokes the (paid) contract method with params as input values.
  5275  func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5276  	return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...)
  5277  }
  5278  
  5279  // Call invokes the (constant) contract method with params as input values and
  5280  // sets the output to result. The result type might be a single field for simple
  5281  // returns, a slice of interfaces for anonymous returns and a struct for named
  5282  // returns.
  5283  func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5284  	return _IERC165.Contract.contract.Call(opts, result, method, params...)
  5285  }
  5286  
  5287  // Transfer initiates a plain transaction to move funds to the contract, calling
  5288  // its default method if one is available.
  5289  func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5290  	return _IERC165.Contract.contract.Transfer(opts)
  5291  }
  5292  
  5293  // Transact invokes the (paid) contract method with params as input values.
  5294  func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5295  	return _IERC165.Contract.contract.Transact(opts, method, params...)
  5296  }
  5297  
  5298  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5299  //
  5300  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  5301  func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  5302  	var (
  5303  		ret0 = new(bool)
  5304  	)
  5305  	out := ret0
  5306  	err := _IERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
  5307  	return *ret0, err
  5308  }
  5309  
  5310  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5311  //
  5312  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  5313  func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  5314  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  5315  }
  5316  
  5317  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5318  //
  5319  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  5320  func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  5321  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  5322  }
  5323  
  5324  // IERC20ABI is the input ABI used to generate the binding from.
  5325  const IERC20ABI = "[{\"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\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5326  
  5327  // IERC20FuncSigs maps the 4-byte function signature to its string representation.
  5328  var IERC20FuncSigs = map[string]string{
  5329  	"dd62ed3e": "allowance(address,address)",
  5330  	"095ea7b3": "approve(address,uint256)",
  5331  	"70a08231": "balanceOf(address)",
  5332  	"18160ddd": "totalSupply()",
  5333  	"a9059cbb": "transfer(address,uint256)",
  5334  	"23b872dd": "transferFrom(address,address,uint256)",
  5335  }
  5336  
  5337  // IERC20 is an auto generated Go binding around an Ethereum contract.
  5338  type IERC20 struct {
  5339  	IERC20Caller     // Read-only binding to the contract
  5340  	IERC20Transactor // Write-only binding to the contract
  5341  	IERC20Filterer   // Log filterer for contract events
  5342  }
  5343  
  5344  // IERC20Caller is an auto generated read-only Go binding around an Ethereum contract.
  5345  type IERC20Caller struct {
  5346  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5347  }
  5348  
  5349  // IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract.
  5350  type IERC20Transactor struct {
  5351  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5352  }
  5353  
  5354  // IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5355  type IERC20Filterer struct {
  5356  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5357  }
  5358  
  5359  // IERC20Session is an auto generated Go binding around an Ethereum contract,
  5360  // with pre-set call and transact options.
  5361  type IERC20Session struct {
  5362  	Contract     *IERC20           // Generic contract binding to set the session for
  5363  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5364  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5365  }
  5366  
  5367  // IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5368  // with pre-set call options.
  5369  type IERC20CallerSession struct {
  5370  	Contract *IERC20Caller // Generic contract caller binding to set the session for
  5371  	CallOpts bind.CallOpts // Call options to use throughout this session
  5372  }
  5373  
  5374  // IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5375  // with pre-set transact options.
  5376  type IERC20TransactorSession struct {
  5377  	Contract     *IERC20Transactor // Generic contract transactor binding to set the session for
  5378  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5379  }
  5380  
  5381  // IERC20Raw is an auto generated low-level Go binding around an Ethereum contract.
  5382  type IERC20Raw struct {
  5383  	Contract *IERC20 // Generic contract binding to access the raw methods on
  5384  }
  5385  
  5386  // IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5387  type IERC20CallerRaw struct {
  5388  	Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on
  5389  }
  5390  
  5391  // IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5392  type IERC20TransactorRaw struct {
  5393  	Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on
  5394  }
  5395  
  5396  // NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract.
  5397  func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) {
  5398  	contract, err := bindIERC20(address, backend, backend, backend)
  5399  	if err != nil {
  5400  		return nil, err
  5401  	}
  5402  	return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil
  5403  }
  5404  
  5405  // NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract.
  5406  func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) {
  5407  	contract, err := bindIERC20(address, caller, nil, nil)
  5408  	if err != nil {
  5409  		return nil, err
  5410  	}
  5411  	return &IERC20Caller{contract: contract}, nil
  5412  }
  5413  
  5414  // NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract.
  5415  func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) {
  5416  	contract, err := bindIERC20(address, nil, transactor, nil)
  5417  	if err != nil {
  5418  		return nil, err
  5419  	}
  5420  	return &IERC20Transactor{contract: contract}, nil
  5421  }
  5422  
  5423  // NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract.
  5424  func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) {
  5425  	contract, err := bindIERC20(address, nil, nil, filterer)
  5426  	if err != nil {
  5427  		return nil, err
  5428  	}
  5429  	return &IERC20Filterer{contract: contract}, nil
  5430  }
  5431  
  5432  // bindIERC20 binds a generic wrapper to an already deployed contract.
  5433  func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5434  	parsed, err := abi.JSON(strings.NewReader(IERC20ABI))
  5435  	if err != nil {
  5436  		return nil, err
  5437  	}
  5438  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5439  }
  5440  
  5441  // Call invokes the (constant) contract method with params as input values and
  5442  // sets the output to result. The result type might be a single field for simple
  5443  // returns, a slice of interfaces for anonymous returns and a struct for named
  5444  // returns.
  5445  func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5446  	return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...)
  5447  }
  5448  
  5449  // Transfer initiates a plain transaction to move funds to the contract, calling
  5450  // its default method if one is available.
  5451  func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5452  	return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts)
  5453  }
  5454  
  5455  // Transact invokes the (paid) contract method with params as input values.
  5456  func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5457  	return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...)
  5458  }
  5459  
  5460  // Call invokes the (constant) contract method with params as input values and
  5461  // sets the output to result. The result type might be a single field for simple
  5462  // returns, a slice of interfaces for anonymous returns and a struct for named
  5463  // returns.
  5464  func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5465  	return _IERC20.Contract.contract.Call(opts, result, method, params...)
  5466  }
  5467  
  5468  // Transfer initiates a plain transaction to move funds to the contract, calling
  5469  // its default method if one is available.
  5470  func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5471  	return _IERC20.Contract.contract.Transfer(opts)
  5472  }
  5473  
  5474  // Transact invokes the (paid) contract method with params as input values.
  5475  func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5476  	return _IERC20.Contract.contract.Transact(opts, method, params...)
  5477  }
  5478  
  5479  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  5480  //
  5481  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  5482  func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  5483  	var (
  5484  		ret0 = new(*big.Int)
  5485  	)
  5486  	out := ret0
  5487  	err := _IERC20.contract.Call(opts, out, "allowance", owner, spender)
  5488  	return *ret0, err
  5489  }
  5490  
  5491  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  5492  //
  5493  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  5494  func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  5495  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
  5496  }
  5497  
  5498  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  5499  //
  5500  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  5501  func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  5502  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
  5503  }
  5504  
  5505  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5506  //
  5507  // Solidity: function balanceOf(address account) constant returns(uint256)
  5508  func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  5509  	var (
  5510  		ret0 = new(*big.Int)
  5511  	)
  5512  	out := ret0
  5513  	err := _IERC20.contract.Call(opts, out, "balanceOf", account)
  5514  	return *ret0, err
  5515  }
  5516  
  5517  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5518  //
  5519  // Solidity: function balanceOf(address account) constant returns(uint256)
  5520  func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
  5521  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
  5522  }
  5523  
  5524  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5525  //
  5526  // Solidity: function balanceOf(address account) constant returns(uint256)
  5527  func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  5528  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
  5529  }
  5530  
  5531  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  5532  //
  5533  // Solidity: function totalSupply() constant returns(uint256)
  5534  func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  5535  	var (
  5536  		ret0 = new(*big.Int)
  5537  	)
  5538  	out := ret0
  5539  	err := _IERC20.contract.Call(opts, out, "totalSupply")
  5540  	return *ret0, err
  5541  }
  5542  
  5543  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  5544  //
  5545  // Solidity: function totalSupply() constant returns(uint256)
  5546  func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) {
  5547  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
  5548  }
  5549  
  5550  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  5551  //
  5552  // Solidity: function totalSupply() constant returns(uint256)
  5553  func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) {
  5554  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
  5555  }
  5556  
  5557  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5558  //
  5559  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  5560  func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  5561  	return _IERC20.contract.Transact(opts, "approve", spender, amount)
  5562  }
  5563  
  5564  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5565  //
  5566  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  5567  func (_IERC20 *IERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  5568  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
  5569  }
  5570  
  5571  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5572  //
  5573  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  5574  func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  5575  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
  5576  }
  5577  
  5578  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  5579  //
  5580  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  5581  func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5582  	return _IERC20.contract.Transact(opts, "transfer", recipient, amount)
  5583  }
  5584  
  5585  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  5586  //
  5587  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  5588  func (_IERC20 *IERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5589  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
  5590  }
  5591  
  5592  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  5593  //
  5594  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  5595  func (_IERC20 *IERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5596  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
  5597  }
  5598  
  5599  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5600  //
  5601  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  5602  func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5603  	return _IERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  5604  }
  5605  
  5606  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5607  //
  5608  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  5609  func (_IERC20 *IERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5610  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
  5611  }
  5612  
  5613  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5614  //
  5615  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  5616  func (_IERC20 *IERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5617  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
  5618  }
  5619  
  5620  // IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract.
  5621  type IERC20ApprovalIterator struct {
  5622  	Event *IERC20Approval // Event containing the contract specifics and raw log
  5623  
  5624  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5625  	event    string              // Event name to use for unpacking event data
  5626  
  5627  	logs chan types.Log        // Log channel receiving the found contract events
  5628  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5629  	done bool                  // Whether the subscription completed delivering logs
  5630  	fail error                 // Occurred error to stop iteration
  5631  }
  5632  
  5633  // Next advances the iterator to the subsequent event, returning whether there
  5634  // are any more events found. In case of a retrieval or parsing error, false is
  5635  // returned and Error() can be queried for the exact failure.
  5636  func (it *IERC20ApprovalIterator) Next() bool {
  5637  	// If the iterator failed, stop iterating
  5638  	if it.fail != nil {
  5639  		return false
  5640  	}
  5641  	// If the iterator completed, deliver directly whatever's available
  5642  	if it.done {
  5643  		select {
  5644  		case log := <-it.logs:
  5645  			it.Event = new(IERC20Approval)
  5646  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5647  				it.fail = err
  5648  				return false
  5649  			}
  5650  			it.Event.Raw = log
  5651  			return true
  5652  
  5653  		default:
  5654  			return false
  5655  		}
  5656  	}
  5657  	// Iterator still in progress, wait for either a data or an error event
  5658  	select {
  5659  	case log := <-it.logs:
  5660  		it.Event = new(IERC20Approval)
  5661  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5662  			it.fail = err
  5663  			return false
  5664  		}
  5665  		it.Event.Raw = log
  5666  		return true
  5667  
  5668  	case err := <-it.sub.Err():
  5669  		it.done = true
  5670  		it.fail = err
  5671  		return it.Next()
  5672  	}
  5673  }
  5674  
  5675  // Error returns any retrieval or parsing error occurred during filtering.
  5676  func (it *IERC20ApprovalIterator) Error() error {
  5677  	return it.fail
  5678  }
  5679  
  5680  // Close terminates the iteration process, releasing any pending underlying
  5681  // resources.
  5682  func (it *IERC20ApprovalIterator) Close() error {
  5683  	it.sub.Unsubscribe()
  5684  	return nil
  5685  }
  5686  
  5687  // IERC20Approval represents a Approval event raised by the IERC20 contract.
  5688  type IERC20Approval struct {
  5689  	Owner   common.Address
  5690  	Spender common.Address
  5691  	Value   *big.Int
  5692  	Raw     types.Log // Blockchain specific contextual infos
  5693  }
  5694  
  5695  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5696  //
  5697  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  5698  func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) {
  5699  
  5700  	var ownerRule []interface{}
  5701  	for _, ownerItem := range owner {
  5702  		ownerRule = append(ownerRule, ownerItem)
  5703  	}
  5704  	var spenderRule []interface{}
  5705  	for _, spenderItem := range spender {
  5706  		spenderRule = append(spenderRule, spenderItem)
  5707  	}
  5708  
  5709  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  5710  	if err != nil {
  5711  		return nil, err
  5712  	}
  5713  	return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
  5714  }
  5715  
  5716  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5717  //
  5718  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  5719  func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  5720  
  5721  	var ownerRule []interface{}
  5722  	for _, ownerItem := range owner {
  5723  		ownerRule = append(ownerRule, ownerItem)
  5724  	}
  5725  	var spenderRule []interface{}
  5726  	for _, spenderItem := range spender {
  5727  		spenderRule = append(spenderRule, spenderItem)
  5728  	}
  5729  
  5730  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  5731  	if err != nil {
  5732  		return nil, err
  5733  	}
  5734  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5735  		defer sub.Unsubscribe()
  5736  		for {
  5737  			select {
  5738  			case log := <-logs:
  5739  				// New log arrived, parse the event and forward to the user
  5740  				event := new(IERC20Approval)
  5741  				if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  5742  					return err
  5743  				}
  5744  				event.Raw = log
  5745  
  5746  				select {
  5747  				case sink <- event:
  5748  				case err := <-sub.Err():
  5749  					return err
  5750  				case <-quit:
  5751  					return nil
  5752  				}
  5753  			case err := <-sub.Err():
  5754  				return err
  5755  			case <-quit:
  5756  				return nil
  5757  			}
  5758  		}
  5759  	}), nil
  5760  }
  5761  
  5762  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5763  //
  5764  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  5765  func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) {
  5766  	event := new(IERC20Approval)
  5767  	if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  5768  		return nil, err
  5769  	}
  5770  	return event, nil
  5771  }
  5772  
  5773  // IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract.
  5774  type IERC20TransferIterator struct {
  5775  	Event *IERC20Transfer // Event containing the contract specifics and raw log
  5776  
  5777  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5778  	event    string              // Event name to use for unpacking event data
  5779  
  5780  	logs chan types.Log        // Log channel receiving the found contract events
  5781  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5782  	done bool                  // Whether the subscription completed delivering logs
  5783  	fail error                 // Occurred error to stop iteration
  5784  }
  5785  
  5786  // Next advances the iterator to the subsequent event, returning whether there
  5787  // are any more events found. In case of a retrieval or parsing error, false is
  5788  // returned and Error() can be queried for the exact failure.
  5789  func (it *IERC20TransferIterator) Next() bool {
  5790  	// If the iterator failed, stop iterating
  5791  	if it.fail != nil {
  5792  		return false
  5793  	}
  5794  	// If the iterator completed, deliver directly whatever's available
  5795  	if it.done {
  5796  		select {
  5797  		case log := <-it.logs:
  5798  			it.Event = new(IERC20Transfer)
  5799  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5800  				it.fail = err
  5801  				return false
  5802  			}
  5803  			it.Event.Raw = log
  5804  			return true
  5805  
  5806  		default:
  5807  			return false
  5808  		}
  5809  	}
  5810  	// Iterator still in progress, wait for either a data or an error event
  5811  	select {
  5812  	case log := <-it.logs:
  5813  		it.Event = new(IERC20Transfer)
  5814  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5815  			it.fail = err
  5816  			return false
  5817  		}
  5818  		it.Event.Raw = log
  5819  		return true
  5820  
  5821  	case err := <-it.sub.Err():
  5822  		it.done = true
  5823  		it.fail = err
  5824  		return it.Next()
  5825  	}
  5826  }
  5827  
  5828  // Error returns any retrieval or parsing error occurred during filtering.
  5829  func (it *IERC20TransferIterator) Error() error {
  5830  	return it.fail
  5831  }
  5832  
  5833  // Close terminates the iteration process, releasing any pending underlying
  5834  // resources.
  5835  func (it *IERC20TransferIterator) Close() error {
  5836  	it.sub.Unsubscribe()
  5837  	return nil
  5838  }
  5839  
  5840  // IERC20Transfer represents a Transfer event raised by the IERC20 contract.
  5841  type IERC20Transfer struct {
  5842  	From  common.Address
  5843  	To    common.Address
  5844  	Value *big.Int
  5845  	Raw   types.Log // Blockchain specific contextual infos
  5846  }
  5847  
  5848  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5849  //
  5850  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5851  func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) {
  5852  
  5853  	var fromRule []interface{}
  5854  	for _, fromItem := range from {
  5855  		fromRule = append(fromRule, fromItem)
  5856  	}
  5857  	var toRule []interface{}
  5858  	for _, toItem := range to {
  5859  		toRule = append(toRule, toItem)
  5860  	}
  5861  
  5862  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  5863  	if err != nil {
  5864  		return nil, err
  5865  	}
  5866  	return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5867  }
  5868  
  5869  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5870  //
  5871  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5872  func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  5873  
  5874  	var fromRule []interface{}
  5875  	for _, fromItem := range from {
  5876  		fromRule = append(fromRule, fromItem)
  5877  	}
  5878  	var toRule []interface{}
  5879  	for _, toItem := range to {
  5880  		toRule = append(toRule, toItem)
  5881  	}
  5882  
  5883  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  5884  	if err != nil {
  5885  		return nil, err
  5886  	}
  5887  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5888  		defer sub.Unsubscribe()
  5889  		for {
  5890  			select {
  5891  			case log := <-logs:
  5892  				// New log arrived, parse the event and forward to the user
  5893  				event := new(IERC20Transfer)
  5894  				if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  5895  					return err
  5896  				}
  5897  				event.Raw = log
  5898  
  5899  				select {
  5900  				case sink <- event:
  5901  				case err := <-sub.Err():
  5902  					return err
  5903  				case <-quit:
  5904  					return nil
  5905  				}
  5906  			case err := <-sub.Err():
  5907  				return err
  5908  			case <-quit:
  5909  				return nil
  5910  			}
  5911  		}
  5912  	}), nil
  5913  }
  5914  
  5915  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5916  //
  5917  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5918  func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) {
  5919  	event := new(IERC20Transfer)
  5920  	if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  5921  		return nil, err
  5922  	}
  5923  	return event, nil
  5924  }
  5925  
  5926  // MinterRoleABI is the input ABI used to generate the binding from.
  5927  const MinterRoleABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5928  
  5929  // MinterRoleFuncSigs maps the 4-byte function signature to its string representation.
  5930  var MinterRoleFuncSigs = map[string]string{
  5931  	"983b2d56": "addMinter(address)",
  5932  	"aa271e1a": "isMinter(address)",
  5933  	"98650275": "renounceMinter()",
  5934  }
  5935  
  5936  // MinterRole is an auto generated Go binding around an Ethereum contract.
  5937  type MinterRole struct {
  5938  	MinterRoleCaller     // Read-only binding to the contract
  5939  	MinterRoleTransactor // Write-only binding to the contract
  5940  	MinterRoleFilterer   // Log filterer for contract events
  5941  }
  5942  
  5943  // MinterRoleCaller is an auto generated read-only Go binding around an Ethereum contract.
  5944  type MinterRoleCaller struct {
  5945  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5946  }
  5947  
  5948  // MinterRoleTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5949  type MinterRoleTransactor struct {
  5950  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5951  }
  5952  
  5953  // MinterRoleFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5954  type MinterRoleFilterer struct {
  5955  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5956  }
  5957  
  5958  // MinterRoleSession is an auto generated Go binding around an Ethereum contract,
  5959  // with pre-set call and transact options.
  5960  type MinterRoleSession struct {
  5961  	Contract     *MinterRole       // Generic contract binding to set the session for
  5962  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5963  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5964  }
  5965  
  5966  // MinterRoleCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5967  // with pre-set call options.
  5968  type MinterRoleCallerSession struct {
  5969  	Contract *MinterRoleCaller // Generic contract caller binding to set the session for
  5970  	CallOpts bind.CallOpts     // Call options to use throughout this session
  5971  }
  5972  
  5973  // MinterRoleTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5974  // with pre-set transact options.
  5975  type MinterRoleTransactorSession struct {
  5976  	Contract     *MinterRoleTransactor // Generic contract transactor binding to set the session for
  5977  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  5978  }
  5979  
  5980  // MinterRoleRaw is an auto generated low-level Go binding around an Ethereum contract.
  5981  type MinterRoleRaw struct {
  5982  	Contract *MinterRole // Generic contract binding to access the raw methods on
  5983  }
  5984  
  5985  // MinterRoleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5986  type MinterRoleCallerRaw struct {
  5987  	Contract *MinterRoleCaller // Generic read-only contract binding to access the raw methods on
  5988  }
  5989  
  5990  // MinterRoleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5991  type MinterRoleTransactorRaw struct {
  5992  	Contract *MinterRoleTransactor // Generic write-only contract binding to access the raw methods on
  5993  }
  5994  
  5995  // NewMinterRole creates a new instance of MinterRole, bound to a specific deployed contract.
  5996  func NewMinterRole(address common.Address, backend bind.ContractBackend) (*MinterRole, error) {
  5997  	contract, err := bindMinterRole(address, backend, backend, backend)
  5998  	if err != nil {
  5999  		return nil, err
  6000  	}
  6001  	return &MinterRole{MinterRoleCaller: MinterRoleCaller{contract: contract}, MinterRoleTransactor: MinterRoleTransactor{contract: contract}, MinterRoleFilterer: MinterRoleFilterer{contract: contract}}, nil
  6002  }
  6003  
  6004  // NewMinterRoleCaller creates a new read-only instance of MinterRole, bound to a specific deployed contract.
  6005  func NewMinterRoleCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleCaller, error) {
  6006  	contract, err := bindMinterRole(address, caller, nil, nil)
  6007  	if err != nil {
  6008  		return nil, err
  6009  	}
  6010  	return &MinterRoleCaller{contract: contract}, nil
  6011  }
  6012  
  6013  // NewMinterRoleTransactor creates a new write-only instance of MinterRole, bound to a specific deployed contract.
  6014  func NewMinterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleTransactor, error) {
  6015  	contract, err := bindMinterRole(address, nil, transactor, nil)
  6016  	if err != nil {
  6017  		return nil, err
  6018  	}
  6019  	return &MinterRoleTransactor{contract: contract}, nil
  6020  }
  6021  
  6022  // NewMinterRoleFilterer creates a new log filterer instance of MinterRole, bound to a specific deployed contract.
  6023  func NewMinterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleFilterer, error) {
  6024  	contract, err := bindMinterRole(address, nil, nil, filterer)
  6025  	if err != nil {
  6026  		return nil, err
  6027  	}
  6028  	return &MinterRoleFilterer{contract: contract}, nil
  6029  }
  6030  
  6031  // bindMinterRole binds a generic wrapper to an already deployed contract.
  6032  func bindMinterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6033  	parsed, err := abi.JSON(strings.NewReader(MinterRoleABI))
  6034  	if err != nil {
  6035  		return nil, err
  6036  	}
  6037  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6038  }
  6039  
  6040  // Call invokes the (constant) contract method with params as input values and
  6041  // sets the output to result. The result type might be a single field for simple
  6042  // returns, a slice of interfaces for anonymous returns and a struct for named
  6043  // returns.
  6044  func (_MinterRole *MinterRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6045  	return _MinterRole.Contract.MinterRoleCaller.contract.Call(opts, result, method, params...)
  6046  }
  6047  
  6048  // Transfer initiates a plain transaction to move funds to the contract, calling
  6049  // its default method if one is available.
  6050  func (_MinterRole *MinterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6051  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transfer(opts)
  6052  }
  6053  
  6054  // Transact invokes the (paid) contract method with params as input values.
  6055  func (_MinterRole *MinterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6056  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transact(opts, method, params...)
  6057  }
  6058  
  6059  // Call invokes the (constant) contract method with params as input values and
  6060  // sets the output to result. The result type might be a single field for simple
  6061  // returns, a slice of interfaces for anonymous returns and a struct for named
  6062  // returns.
  6063  func (_MinterRole *MinterRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6064  	return _MinterRole.Contract.contract.Call(opts, result, method, params...)
  6065  }
  6066  
  6067  // Transfer initiates a plain transaction to move funds to the contract, calling
  6068  // its default method if one is available.
  6069  func (_MinterRole *MinterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6070  	return _MinterRole.Contract.contract.Transfer(opts)
  6071  }
  6072  
  6073  // Transact invokes the (paid) contract method with params as input values.
  6074  func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6075  	return _MinterRole.Contract.contract.Transact(opts, method, params...)
  6076  }
  6077  
  6078  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6079  //
  6080  // Solidity: function isMinter(address account) constant returns(bool)
  6081  func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  6082  	var (
  6083  		ret0 = new(bool)
  6084  	)
  6085  	out := ret0
  6086  	err := _MinterRole.contract.Call(opts, out, "isMinter", account)
  6087  	return *ret0, err
  6088  }
  6089  
  6090  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6091  //
  6092  // Solidity: function isMinter(address account) constant returns(bool)
  6093  func (_MinterRole *MinterRoleSession) IsMinter(account common.Address) (bool, error) {
  6094  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
  6095  }
  6096  
  6097  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6098  //
  6099  // Solidity: function isMinter(address account) constant returns(bool)
  6100  func (_MinterRole *MinterRoleCallerSession) IsMinter(account common.Address) (bool, error) {
  6101  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
  6102  }
  6103  
  6104  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6105  //
  6106  // Solidity: function addMinter(address account) returns()
  6107  func (_MinterRole *MinterRoleTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  6108  	return _MinterRole.contract.Transact(opts, "addMinter", account)
  6109  }
  6110  
  6111  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6112  //
  6113  // Solidity: function addMinter(address account) returns()
  6114  func (_MinterRole *MinterRoleSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6115  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
  6116  }
  6117  
  6118  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6119  //
  6120  // Solidity: function addMinter(address account) returns()
  6121  func (_MinterRole *MinterRoleTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6122  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
  6123  }
  6124  
  6125  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6126  //
  6127  // Solidity: function renounceMinter() returns()
  6128  func (_MinterRole *MinterRoleTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  6129  	return _MinterRole.contract.Transact(opts, "renounceMinter")
  6130  }
  6131  
  6132  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6133  //
  6134  // Solidity: function renounceMinter() returns()
  6135  func (_MinterRole *MinterRoleSession) RenounceMinter() (*types.Transaction, error) {
  6136  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
  6137  }
  6138  
  6139  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6140  //
  6141  // Solidity: function renounceMinter() returns()
  6142  func (_MinterRole *MinterRoleTransactorSession) RenounceMinter() (*types.Transaction, error) {
  6143  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
  6144  }
  6145  
  6146  // MinterRoleMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the MinterRole contract.
  6147  type MinterRoleMinterAddedIterator struct {
  6148  	Event *MinterRoleMinterAdded // Event containing the contract specifics and raw log
  6149  
  6150  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6151  	event    string              // Event name to use for unpacking event data
  6152  
  6153  	logs chan types.Log        // Log channel receiving the found contract events
  6154  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6155  	done bool                  // Whether the subscription completed delivering logs
  6156  	fail error                 // Occurred error to stop iteration
  6157  }
  6158  
  6159  // Next advances the iterator to the subsequent event, returning whether there
  6160  // are any more events found. In case of a retrieval or parsing error, false is
  6161  // returned and Error() can be queried for the exact failure.
  6162  func (it *MinterRoleMinterAddedIterator) Next() bool {
  6163  	// If the iterator failed, stop iterating
  6164  	if it.fail != nil {
  6165  		return false
  6166  	}
  6167  	// If the iterator completed, deliver directly whatever's available
  6168  	if it.done {
  6169  		select {
  6170  		case log := <-it.logs:
  6171  			it.Event = new(MinterRoleMinterAdded)
  6172  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6173  				it.fail = err
  6174  				return false
  6175  			}
  6176  			it.Event.Raw = log
  6177  			return true
  6178  
  6179  		default:
  6180  			return false
  6181  		}
  6182  	}
  6183  	// Iterator still in progress, wait for either a data or an error event
  6184  	select {
  6185  	case log := <-it.logs:
  6186  		it.Event = new(MinterRoleMinterAdded)
  6187  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6188  			it.fail = err
  6189  			return false
  6190  		}
  6191  		it.Event.Raw = log
  6192  		return true
  6193  
  6194  	case err := <-it.sub.Err():
  6195  		it.done = true
  6196  		it.fail = err
  6197  		return it.Next()
  6198  	}
  6199  }
  6200  
  6201  // Error returns any retrieval or parsing error occurred during filtering.
  6202  func (it *MinterRoleMinterAddedIterator) Error() error {
  6203  	return it.fail
  6204  }
  6205  
  6206  // Close terminates the iteration process, releasing any pending underlying
  6207  // resources.
  6208  func (it *MinterRoleMinterAddedIterator) Close() error {
  6209  	it.sub.Unsubscribe()
  6210  	return nil
  6211  }
  6212  
  6213  // MinterRoleMinterAdded represents a MinterAdded event raised by the MinterRole contract.
  6214  type MinterRoleMinterAdded struct {
  6215  	Account common.Address
  6216  	Raw     types.Log // Blockchain specific contextual infos
  6217  }
  6218  
  6219  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6220  //
  6221  // Solidity: event MinterAdded(address indexed account)
  6222  func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) {
  6223  
  6224  	var accountRule []interface{}
  6225  	for _, accountItem := range account {
  6226  		accountRule = append(accountRule, accountItem)
  6227  	}
  6228  
  6229  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterAdded", accountRule)
  6230  	if err != nil {
  6231  		return nil, err
  6232  	}
  6233  	return &MinterRoleMinterAddedIterator{contract: _MinterRole.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  6234  }
  6235  
  6236  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6237  //
  6238  // Solidity: event MinterAdded(address indexed account)
  6239  func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) {
  6240  
  6241  	var accountRule []interface{}
  6242  	for _, accountItem := range account {
  6243  		accountRule = append(accountRule, accountItem)
  6244  	}
  6245  
  6246  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterAdded", accountRule)
  6247  	if err != nil {
  6248  		return nil, err
  6249  	}
  6250  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6251  		defer sub.Unsubscribe()
  6252  		for {
  6253  			select {
  6254  			case log := <-logs:
  6255  				// New log arrived, parse the event and forward to the user
  6256  				event := new(MinterRoleMinterAdded)
  6257  				if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6258  					return err
  6259  				}
  6260  				event.Raw = log
  6261  
  6262  				select {
  6263  				case sink <- event:
  6264  				case err := <-sub.Err():
  6265  					return err
  6266  				case <-quit:
  6267  					return nil
  6268  				}
  6269  			case err := <-sub.Err():
  6270  				return err
  6271  			case <-quit:
  6272  				return nil
  6273  			}
  6274  		}
  6275  	}), nil
  6276  }
  6277  
  6278  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6279  //
  6280  // Solidity: event MinterAdded(address indexed account)
  6281  func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterRoleMinterAdded, error) {
  6282  	event := new(MinterRoleMinterAdded)
  6283  	if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6284  		return nil, err
  6285  	}
  6286  	return event, nil
  6287  }
  6288  
  6289  // MinterRoleMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the MinterRole contract.
  6290  type MinterRoleMinterRemovedIterator struct {
  6291  	Event *MinterRoleMinterRemoved // Event containing the contract specifics and raw log
  6292  
  6293  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6294  	event    string              // Event name to use for unpacking event data
  6295  
  6296  	logs chan types.Log        // Log channel receiving the found contract events
  6297  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6298  	done bool                  // Whether the subscription completed delivering logs
  6299  	fail error                 // Occurred error to stop iteration
  6300  }
  6301  
  6302  // Next advances the iterator to the subsequent event, returning whether there
  6303  // are any more events found. In case of a retrieval or parsing error, false is
  6304  // returned and Error() can be queried for the exact failure.
  6305  func (it *MinterRoleMinterRemovedIterator) Next() bool {
  6306  	// If the iterator failed, stop iterating
  6307  	if it.fail != nil {
  6308  		return false
  6309  	}
  6310  	// If the iterator completed, deliver directly whatever's available
  6311  	if it.done {
  6312  		select {
  6313  		case log := <-it.logs:
  6314  			it.Event = new(MinterRoleMinterRemoved)
  6315  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6316  				it.fail = err
  6317  				return false
  6318  			}
  6319  			it.Event.Raw = log
  6320  			return true
  6321  
  6322  		default:
  6323  			return false
  6324  		}
  6325  	}
  6326  	// Iterator still in progress, wait for either a data or an error event
  6327  	select {
  6328  	case log := <-it.logs:
  6329  		it.Event = new(MinterRoleMinterRemoved)
  6330  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6331  			it.fail = err
  6332  			return false
  6333  		}
  6334  		it.Event.Raw = log
  6335  		return true
  6336  
  6337  	case err := <-it.sub.Err():
  6338  		it.done = true
  6339  		it.fail = err
  6340  		return it.Next()
  6341  	}
  6342  }
  6343  
  6344  // Error returns any retrieval or parsing error occurred during filtering.
  6345  func (it *MinterRoleMinterRemovedIterator) Error() error {
  6346  	return it.fail
  6347  }
  6348  
  6349  // Close terminates the iteration process, releasing any pending underlying
  6350  // resources.
  6351  func (it *MinterRoleMinterRemovedIterator) Close() error {
  6352  	it.sub.Unsubscribe()
  6353  	return nil
  6354  }
  6355  
  6356  // MinterRoleMinterRemoved represents a MinterRemoved event raised by the MinterRole contract.
  6357  type MinterRoleMinterRemoved struct {
  6358  	Account common.Address
  6359  	Raw     types.Log // Blockchain specific contextual infos
  6360  }
  6361  
  6362  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6363  //
  6364  // Solidity: event MinterRemoved(address indexed account)
  6365  func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) {
  6366  
  6367  	var accountRule []interface{}
  6368  	for _, accountItem := range account {
  6369  		accountRule = append(accountRule, accountItem)
  6370  	}
  6371  
  6372  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  6373  	if err != nil {
  6374  		return nil, err
  6375  	}
  6376  	return &MinterRoleMinterRemovedIterator{contract: _MinterRole.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  6377  }
  6378  
  6379  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6380  //
  6381  // Solidity: event MinterRemoved(address indexed account)
  6382  func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) {
  6383  
  6384  	var accountRule []interface{}
  6385  	for _, accountItem := range account {
  6386  		accountRule = append(accountRule, accountItem)
  6387  	}
  6388  
  6389  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  6390  	if err != nil {
  6391  		return nil, err
  6392  	}
  6393  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6394  		defer sub.Unsubscribe()
  6395  		for {
  6396  			select {
  6397  			case log := <-logs:
  6398  				// New log arrived, parse the event and forward to the user
  6399  				event := new(MinterRoleMinterRemoved)
  6400  				if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  6401  					return err
  6402  				}
  6403  				event.Raw = log
  6404  
  6405  				select {
  6406  				case sink <- event:
  6407  				case err := <-sub.Err():
  6408  					return err
  6409  				case <-quit:
  6410  					return nil
  6411  				}
  6412  			case err := <-sub.Err():
  6413  				return err
  6414  			case <-quit:
  6415  				return nil
  6416  			}
  6417  		}
  6418  	}), nil
  6419  }
  6420  
  6421  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6422  //
  6423  // Solidity: event MinterRemoved(address indexed account)
  6424  func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*MinterRoleMinterRemoved, error) {
  6425  	event := new(MinterRoleMinterRemoved)
  6426  	if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  6427  		return nil, err
  6428  	}
  6429  	return event, nil
  6430  }
  6431  
  6432  // MinterRoleRenounceTargetABI is the input ABI used to generate the binding from.
  6433  const MinterRoleRenounceTargetABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6434  
  6435  // MinterRoleRenounceTargetFuncSigs maps the 4-byte function signature to its string representation.
  6436  var MinterRoleRenounceTargetFuncSigs = map[string]string{
  6437  	"98650275": "renounceMinter()",
  6438  }
  6439  
  6440  // MinterRoleRenounceTarget is an auto generated Go binding around an Ethereum contract.
  6441  type MinterRoleRenounceTarget struct {
  6442  	MinterRoleRenounceTargetCaller     // Read-only binding to the contract
  6443  	MinterRoleRenounceTargetTransactor // Write-only binding to the contract
  6444  	MinterRoleRenounceTargetFilterer   // Log filterer for contract events
  6445  }
  6446  
  6447  // MinterRoleRenounceTargetCaller is an auto generated read-only Go binding around an Ethereum contract.
  6448  type MinterRoleRenounceTargetCaller struct {
  6449  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6450  }
  6451  
  6452  // MinterRoleRenounceTargetTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6453  type MinterRoleRenounceTargetTransactor struct {
  6454  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6455  }
  6456  
  6457  // MinterRoleRenounceTargetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6458  type MinterRoleRenounceTargetFilterer struct {
  6459  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6460  }
  6461  
  6462  // MinterRoleRenounceTargetSession is an auto generated Go binding around an Ethereum contract,
  6463  // with pre-set call and transact options.
  6464  type MinterRoleRenounceTargetSession struct {
  6465  	Contract     *MinterRoleRenounceTarget // Generic contract binding to set the session for
  6466  	CallOpts     bind.CallOpts             // Call options to use throughout this session
  6467  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  6468  }
  6469  
  6470  // MinterRoleRenounceTargetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6471  // with pre-set call options.
  6472  type MinterRoleRenounceTargetCallerSession struct {
  6473  	Contract *MinterRoleRenounceTargetCaller // Generic contract caller binding to set the session for
  6474  	CallOpts bind.CallOpts                   // Call options to use throughout this session
  6475  }
  6476  
  6477  // MinterRoleRenounceTargetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6478  // with pre-set transact options.
  6479  type MinterRoleRenounceTargetTransactorSession struct {
  6480  	Contract     *MinterRoleRenounceTargetTransactor // Generic contract transactor binding to set the session for
  6481  	TransactOpts bind.TransactOpts                   // Transaction auth options to use throughout this session
  6482  }
  6483  
  6484  // MinterRoleRenounceTargetRaw is an auto generated low-level Go binding around an Ethereum contract.
  6485  type MinterRoleRenounceTargetRaw struct {
  6486  	Contract *MinterRoleRenounceTarget // Generic contract binding to access the raw methods on
  6487  }
  6488  
  6489  // MinterRoleRenounceTargetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6490  type MinterRoleRenounceTargetCallerRaw struct {
  6491  	Contract *MinterRoleRenounceTargetCaller // Generic read-only contract binding to access the raw methods on
  6492  }
  6493  
  6494  // MinterRoleRenounceTargetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6495  type MinterRoleRenounceTargetTransactorRaw struct {
  6496  	Contract *MinterRoleRenounceTargetTransactor // Generic write-only contract binding to access the raw methods on
  6497  }
  6498  
  6499  // NewMinterRoleRenounceTarget creates a new instance of MinterRoleRenounceTarget, bound to a specific deployed contract.
  6500  func NewMinterRoleRenounceTarget(address common.Address, backend bind.ContractBackend) (*MinterRoleRenounceTarget, error) {
  6501  	contract, err := bindMinterRoleRenounceTarget(address, backend, backend, backend)
  6502  	if err != nil {
  6503  		return nil, err
  6504  	}
  6505  	return &MinterRoleRenounceTarget{MinterRoleRenounceTargetCaller: MinterRoleRenounceTargetCaller{contract: contract}, MinterRoleRenounceTargetTransactor: MinterRoleRenounceTargetTransactor{contract: contract}, MinterRoleRenounceTargetFilterer: MinterRoleRenounceTargetFilterer{contract: contract}}, nil
  6506  }
  6507  
  6508  // NewMinterRoleRenounceTargetCaller creates a new read-only instance of MinterRoleRenounceTarget, bound to a specific deployed contract.
  6509  func NewMinterRoleRenounceTargetCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleRenounceTargetCaller, error) {
  6510  	contract, err := bindMinterRoleRenounceTarget(address, caller, nil, nil)
  6511  	if err != nil {
  6512  		return nil, err
  6513  	}
  6514  	return &MinterRoleRenounceTargetCaller{contract: contract}, nil
  6515  }
  6516  
  6517  // NewMinterRoleRenounceTargetTransactor creates a new write-only instance of MinterRoleRenounceTarget, bound to a specific deployed contract.
  6518  func NewMinterRoleRenounceTargetTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleRenounceTargetTransactor, error) {
  6519  	contract, err := bindMinterRoleRenounceTarget(address, nil, transactor, nil)
  6520  	if err != nil {
  6521  		return nil, err
  6522  	}
  6523  	return &MinterRoleRenounceTargetTransactor{contract: contract}, nil
  6524  }
  6525  
  6526  // NewMinterRoleRenounceTargetFilterer creates a new log filterer instance of MinterRoleRenounceTarget, bound to a specific deployed contract.
  6527  func NewMinterRoleRenounceTargetFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleRenounceTargetFilterer, error) {
  6528  	contract, err := bindMinterRoleRenounceTarget(address, nil, nil, filterer)
  6529  	if err != nil {
  6530  		return nil, err
  6531  	}
  6532  	return &MinterRoleRenounceTargetFilterer{contract: contract}, nil
  6533  }
  6534  
  6535  // bindMinterRoleRenounceTarget binds a generic wrapper to an already deployed contract.
  6536  func bindMinterRoleRenounceTarget(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6537  	parsed, err := abi.JSON(strings.NewReader(MinterRoleRenounceTargetABI))
  6538  	if err != nil {
  6539  		return nil, err
  6540  	}
  6541  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6542  }
  6543  
  6544  // Call invokes the (constant) contract method with params as input values and
  6545  // sets the output to result. The result type might be a single field for simple
  6546  // returns, a slice of interfaces for anonymous returns and a struct for named
  6547  // returns.
  6548  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6549  	return _MinterRoleRenounceTarget.Contract.MinterRoleRenounceTargetCaller.contract.Call(opts, result, method, params...)
  6550  }
  6551  
  6552  // Transfer initiates a plain transaction to move funds to the contract, calling
  6553  // its default method if one is available.
  6554  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6555  	return _MinterRoleRenounceTarget.Contract.MinterRoleRenounceTargetTransactor.contract.Transfer(opts)
  6556  }
  6557  
  6558  // Transact invokes the (paid) contract method with params as input values.
  6559  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6560  	return _MinterRoleRenounceTarget.Contract.MinterRoleRenounceTargetTransactor.contract.Transact(opts, method, params...)
  6561  }
  6562  
  6563  // Call invokes the (constant) contract method with params as input values and
  6564  // sets the output to result. The result type might be a single field for simple
  6565  // returns, a slice of interfaces for anonymous returns and a struct for named
  6566  // returns.
  6567  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6568  	return _MinterRoleRenounceTarget.Contract.contract.Call(opts, result, method, params...)
  6569  }
  6570  
  6571  // Transfer initiates a plain transaction to move funds to the contract, calling
  6572  // its default method if one is available.
  6573  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6574  	return _MinterRoleRenounceTarget.Contract.contract.Transfer(opts)
  6575  }
  6576  
  6577  // Transact invokes the (paid) contract method with params as input values.
  6578  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6579  	return _MinterRoleRenounceTarget.Contract.contract.Transact(opts, method, params...)
  6580  }
  6581  
  6582  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6583  //
  6584  // Solidity: function renounceMinter() returns()
  6585  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  6586  	return _MinterRoleRenounceTarget.contract.Transact(opts, "renounceMinter")
  6587  }
  6588  
  6589  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6590  //
  6591  // Solidity: function renounceMinter() returns()
  6592  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetSession) RenounceMinter() (*types.Transaction, error) {
  6593  	return _MinterRoleRenounceTarget.Contract.RenounceMinter(&_MinterRoleRenounceTarget.TransactOpts)
  6594  }
  6595  
  6596  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6597  //
  6598  // Solidity: function renounceMinter() returns()
  6599  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetTransactorSession) RenounceMinter() (*types.Transaction, error) {
  6600  	return _MinterRoleRenounceTarget.Contract.RenounceMinter(&_MinterRoleRenounceTarget.TransactOpts)
  6601  }
  6602  
  6603  // OnApproveABI is the input ABI used to generate the binding from.
  6604  const OnApproveABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onApprove\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  6605  
  6606  // OnApproveFuncSigs maps the 4-byte function signature to its string representation.
  6607  var OnApproveFuncSigs = map[string]string{
  6608  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
  6609  	"4273ca16": "onApprove(address,address,uint256,bytes)",
  6610  	"01ffc9a7": "supportsInterface(bytes4)",
  6611  }
  6612  
  6613  // OnApprove is an auto generated Go binding around an Ethereum contract.
  6614  type OnApprove struct {
  6615  	OnApproveCaller     // Read-only binding to the contract
  6616  	OnApproveTransactor // Write-only binding to the contract
  6617  	OnApproveFilterer   // Log filterer for contract events
  6618  }
  6619  
  6620  // OnApproveCaller is an auto generated read-only Go binding around an Ethereum contract.
  6621  type OnApproveCaller struct {
  6622  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6623  }
  6624  
  6625  // OnApproveTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6626  type OnApproveTransactor struct {
  6627  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6628  }
  6629  
  6630  // OnApproveFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6631  type OnApproveFilterer struct {
  6632  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6633  }
  6634  
  6635  // OnApproveSession is an auto generated Go binding around an Ethereum contract,
  6636  // with pre-set call and transact options.
  6637  type OnApproveSession struct {
  6638  	Contract     *OnApprove        // Generic contract binding to set the session for
  6639  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6640  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6641  }
  6642  
  6643  // OnApproveCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6644  // with pre-set call options.
  6645  type OnApproveCallerSession struct {
  6646  	Contract *OnApproveCaller // Generic contract caller binding to set the session for
  6647  	CallOpts bind.CallOpts    // Call options to use throughout this session
  6648  }
  6649  
  6650  // OnApproveTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6651  // with pre-set transact options.
  6652  type OnApproveTransactorSession struct {
  6653  	Contract     *OnApproveTransactor // Generic contract transactor binding to set the session for
  6654  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  6655  }
  6656  
  6657  // OnApproveRaw is an auto generated low-level Go binding around an Ethereum contract.
  6658  type OnApproveRaw struct {
  6659  	Contract *OnApprove // Generic contract binding to access the raw methods on
  6660  }
  6661  
  6662  // OnApproveCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6663  type OnApproveCallerRaw struct {
  6664  	Contract *OnApproveCaller // Generic read-only contract binding to access the raw methods on
  6665  }
  6666  
  6667  // OnApproveTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6668  type OnApproveTransactorRaw struct {
  6669  	Contract *OnApproveTransactor // Generic write-only contract binding to access the raw methods on
  6670  }
  6671  
  6672  // NewOnApprove creates a new instance of OnApprove, bound to a specific deployed contract.
  6673  func NewOnApprove(address common.Address, backend bind.ContractBackend) (*OnApprove, error) {
  6674  	contract, err := bindOnApprove(address, backend, backend, backend)
  6675  	if err != nil {
  6676  		return nil, err
  6677  	}
  6678  	return &OnApprove{OnApproveCaller: OnApproveCaller{contract: contract}, OnApproveTransactor: OnApproveTransactor{contract: contract}, OnApproveFilterer: OnApproveFilterer{contract: contract}}, nil
  6679  }
  6680  
  6681  // NewOnApproveCaller creates a new read-only instance of OnApprove, bound to a specific deployed contract.
  6682  func NewOnApproveCaller(address common.Address, caller bind.ContractCaller) (*OnApproveCaller, error) {
  6683  	contract, err := bindOnApprove(address, caller, nil, nil)
  6684  	if err != nil {
  6685  		return nil, err
  6686  	}
  6687  	return &OnApproveCaller{contract: contract}, nil
  6688  }
  6689  
  6690  // NewOnApproveTransactor creates a new write-only instance of OnApprove, bound to a specific deployed contract.
  6691  func NewOnApproveTransactor(address common.Address, transactor bind.ContractTransactor) (*OnApproveTransactor, error) {
  6692  	contract, err := bindOnApprove(address, nil, transactor, nil)
  6693  	if err != nil {
  6694  		return nil, err
  6695  	}
  6696  	return &OnApproveTransactor{contract: contract}, nil
  6697  }
  6698  
  6699  // NewOnApproveFilterer creates a new log filterer instance of OnApprove, bound to a specific deployed contract.
  6700  func NewOnApproveFilterer(address common.Address, filterer bind.ContractFilterer) (*OnApproveFilterer, error) {
  6701  	contract, err := bindOnApprove(address, nil, nil, filterer)
  6702  	if err != nil {
  6703  		return nil, err
  6704  	}
  6705  	return &OnApproveFilterer{contract: contract}, nil
  6706  }
  6707  
  6708  // bindOnApprove binds a generic wrapper to an already deployed contract.
  6709  func bindOnApprove(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6710  	parsed, err := abi.JSON(strings.NewReader(OnApproveABI))
  6711  	if err != nil {
  6712  		return nil, err
  6713  	}
  6714  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6715  }
  6716  
  6717  // Call invokes the (constant) contract method with params as input values and
  6718  // sets the output to result. The result type might be a single field for simple
  6719  // returns, a slice of interfaces for anonymous returns and a struct for named
  6720  // returns.
  6721  func (_OnApprove *OnApproveRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6722  	return _OnApprove.Contract.OnApproveCaller.contract.Call(opts, result, method, params...)
  6723  }
  6724  
  6725  // Transfer initiates a plain transaction to move funds to the contract, calling
  6726  // its default method if one is available.
  6727  func (_OnApprove *OnApproveRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6728  	return _OnApprove.Contract.OnApproveTransactor.contract.Transfer(opts)
  6729  }
  6730  
  6731  // Transact invokes the (paid) contract method with params as input values.
  6732  func (_OnApprove *OnApproveRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6733  	return _OnApprove.Contract.OnApproveTransactor.contract.Transact(opts, method, params...)
  6734  }
  6735  
  6736  // Call invokes the (constant) contract method with params as input values and
  6737  // sets the output to result. The result type might be a single field for simple
  6738  // returns, a slice of interfaces for anonymous returns and a struct for named
  6739  // returns.
  6740  func (_OnApprove *OnApproveCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6741  	return _OnApprove.Contract.contract.Call(opts, result, method, params...)
  6742  }
  6743  
  6744  // Transfer initiates a plain transaction to move funds to the contract, calling
  6745  // its default method if one is available.
  6746  func (_OnApprove *OnApproveTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6747  	return _OnApprove.Contract.contract.Transfer(opts)
  6748  }
  6749  
  6750  // Transact invokes the (paid) contract method with params as input values.
  6751  func (_OnApprove *OnApproveTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6752  	return _OnApprove.Contract.contract.Transact(opts, method, params...)
  6753  }
  6754  
  6755  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  6756  //
  6757  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  6758  func (_OnApprove *OnApproveCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
  6759  	var (
  6760  		ret0 = new([4]byte)
  6761  	)
  6762  	out := ret0
  6763  	err := _OnApprove.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
  6764  	return *ret0, err
  6765  }
  6766  
  6767  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  6768  //
  6769  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  6770  func (_OnApprove *OnApproveSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  6771  	return _OnApprove.Contract.INTERFACEIDONAPPROVE(&_OnApprove.CallOpts)
  6772  }
  6773  
  6774  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  6775  //
  6776  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  6777  func (_OnApprove *OnApproveCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  6778  	return _OnApprove.Contract.INTERFACEIDONAPPROVE(&_OnApprove.CallOpts)
  6779  }
  6780  
  6781  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6782  //
  6783  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  6784  func (_OnApprove *OnApproveCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  6785  	var (
  6786  		ret0 = new(bool)
  6787  	)
  6788  	out := ret0
  6789  	err := _OnApprove.contract.Call(opts, out, "supportsInterface", interfaceId)
  6790  	return *ret0, err
  6791  }
  6792  
  6793  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6794  //
  6795  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  6796  func (_OnApprove *OnApproveSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  6797  	return _OnApprove.Contract.SupportsInterface(&_OnApprove.CallOpts, interfaceId)
  6798  }
  6799  
  6800  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6801  //
  6802  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  6803  func (_OnApprove *OnApproveCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  6804  	return _OnApprove.Contract.SupportsInterface(&_OnApprove.CallOpts, interfaceId)
  6805  }
  6806  
  6807  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
  6808  //
  6809  // Solidity: function onApprove(address owner, address spender, uint256 amount, bytes data) returns(bool)
  6810  func (_OnApprove *OnApproveTransactor) OnApprove(opts *bind.TransactOpts, owner common.Address, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  6811  	return _OnApprove.contract.Transact(opts, "onApprove", owner, spender, amount, data)
  6812  }
  6813  
  6814  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
  6815  //
  6816  // Solidity: function onApprove(address owner, address spender, uint256 amount, bytes data) returns(bool)
  6817  func (_OnApprove *OnApproveSession) OnApprove(owner common.Address, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  6818  	return _OnApprove.Contract.OnApprove(&_OnApprove.TransactOpts, owner, spender, amount, data)
  6819  }
  6820  
  6821  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
  6822  //
  6823  // Solidity: function onApprove(address owner, address spender, uint256 amount, bytes data) returns(bool)
  6824  func (_OnApprove *OnApproveTransactorSession) OnApprove(owner common.Address, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  6825  	return _OnApprove.Contract.OnApprove(&_OnApprove.TransactOpts, owner, spender, amount, data)
  6826  }
  6827  
  6828  // OnApproveConstantABI is the input ABI used to generate the binding from.
  6829  const OnApproveConstantABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  6830  
  6831  // OnApproveConstantFuncSigs maps the 4-byte function signature to its string representation.
  6832  var OnApproveConstantFuncSigs = map[string]string{
  6833  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
  6834  }
  6835  
  6836  // OnApproveConstantBin is the compiled bytecode used for deploying new contracts.
  6837  var OnApproveConstantBin = "0x6080604052348015600f57600080fd5b5060c78061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80636cd28f9a14602d575b600080fd5b60336050565b604080516001600160e01b03199092168252519081900360200190f35b604051806028606b8239602801905060405180910390208156fe6f6e417070726f766528616464726573732c616464726573732c75696e743235362c627974657329a265627a7a723158206d94182e39f46cad6425154650e56ecd40259e07a64364bd131e67fe91c85c7664736f6c634300050c0032"
  6838  
  6839  // DeployOnApproveConstant deploys a new Ethereum contract, binding an instance of OnApproveConstant to it.
  6840  func DeployOnApproveConstant(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *OnApproveConstant, error) {
  6841  	parsed, err := abi.JSON(strings.NewReader(OnApproveConstantABI))
  6842  	if err != nil {
  6843  		return common.Address{}, nil, nil, err
  6844  	}
  6845  
  6846  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(OnApproveConstantBin), backend)
  6847  	if err != nil {
  6848  		return common.Address{}, nil, nil, err
  6849  	}
  6850  	return address, tx, &OnApproveConstant{OnApproveConstantCaller: OnApproveConstantCaller{contract: contract}, OnApproveConstantTransactor: OnApproveConstantTransactor{contract: contract}, OnApproveConstantFilterer: OnApproveConstantFilterer{contract: contract}}, nil
  6851  }
  6852  
  6853  // OnApproveConstant is an auto generated Go binding around an Ethereum contract.
  6854  type OnApproveConstant struct {
  6855  	OnApproveConstantCaller     // Read-only binding to the contract
  6856  	OnApproveConstantTransactor // Write-only binding to the contract
  6857  	OnApproveConstantFilterer   // Log filterer for contract events
  6858  }
  6859  
  6860  // OnApproveConstantCaller is an auto generated read-only Go binding around an Ethereum contract.
  6861  type OnApproveConstantCaller struct {
  6862  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6863  }
  6864  
  6865  // OnApproveConstantTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6866  type OnApproveConstantTransactor struct {
  6867  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6868  }
  6869  
  6870  // OnApproveConstantFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6871  type OnApproveConstantFilterer struct {
  6872  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6873  }
  6874  
  6875  // OnApproveConstantSession is an auto generated Go binding around an Ethereum contract,
  6876  // with pre-set call and transact options.
  6877  type OnApproveConstantSession struct {
  6878  	Contract     *OnApproveConstant // Generic contract binding to set the session for
  6879  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  6880  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  6881  }
  6882  
  6883  // OnApproveConstantCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6884  // with pre-set call options.
  6885  type OnApproveConstantCallerSession struct {
  6886  	Contract *OnApproveConstantCaller // Generic contract caller binding to set the session for
  6887  	CallOpts bind.CallOpts            // Call options to use throughout this session
  6888  }
  6889  
  6890  // OnApproveConstantTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6891  // with pre-set transact options.
  6892  type OnApproveConstantTransactorSession struct {
  6893  	Contract     *OnApproveConstantTransactor // Generic contract transactor binding to set the session for
  6894  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  6895  }
  6896  
  6897  // OnApproveConstantRaw is an auto generated low-level Go binding around an Ethereum contract.
  6898  type OnApproveConstantRaw struct {
  6899  	Contract *OnApproveConstant // Generic contract binding to access the raw methods on
  6900  }
  6901  
  6902  // OnApproveConstantCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6903  type OnApproveConstantCallerRaw struct {
  6904  	Contract *OnApproveConstantCaller // Generic read-only contract binding to access the raw methods on
  6905  }
  6906  
  6907  // OnApproveConstantTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6908  type OnApproveConstantTransactorRaw struct {
  6909  	Contract *OnApproveConstantTransactor // Generic write-only contract binding to access the raw methods on
  6910  }
  6911  
  6912  // NewOnApproveConstant creates a new instance of OnApproveConstant, bound to a specific deployed contract.
  6913  func NewOnApproveConstant(address common.Address, backend bind.ContractBackend) (*OnApproveConstant, error) {
  6914  	contract, err := bindOnApproveConstant(address, backend, backend, backend)
  6915  	if err != nil {
  6916  		return nil, err
  6917  	}
  6918  	return &OnApproveConstant{OnApproveConstantCaller: OnApproveConstantCaller{contract: contract}, OnApproveConstantTransactor: OnApproveConstantTransactor{contract: contract}, OnApproveConstantFilterer: OnApproveConstantFilterer{contract: contract}}, nil
  6919  }
  6920  
  6921  // NewOnApproveConstantCaller creates a new read-only instance of OnApproveConstant, bound to a specific deployed contract.
  6922  func NewOnApproveConstantCaller(address common.Address, caller bind.ContractCaller) (*OnApproveConstantCaller, error) {
  6923  	contract, err := bindOnApproveConstant(address, caller, nil, nil)
  6924  	if err != nil {
  6925  		return nil, err
  6926  	}
  6927  	return &OnApproveConstantCaller{contract: contract}, nil
  6928  }
  6929  
  6930  // NewOnApproveConstantTransactor creates a new write-only instance of OnApproveConstant, bound to a specific deployed contract.
  6931  func NewOnApproveConstantTransactor(address common.Address, transactor bind.ContractTransactor) (*OnApproveConstantTransactor, error) {
  6932  	contract, err := bindOnApproveConstant(address, nil, transactor, nil)
  6933  	if err != nil {
  6934  		return nil, err
  6935  	}
  6936  	return &OnApproveConstantTransactor{contract: contract}, nil
  6937  }
  6938  
  6939  // NewOnApproveConstantFilterer creates a new log filterer instance of OnApproveConstant, bound to a specific deployed contract.
  6940  func NewOnApproveConstantFilterer(address common.Address, filterer bind.ContractFilterer) (*OnApproveConstantFilterer, error) {
  6941  	contract, err := bindOnApproveConstant(address, nil, nil, filterer)
  6942  	if err != nil {
  6943  		return nil, err
  6944  	}
  6945  	return &OnApproveConstantFilterer{contract: contract}, nil
  6946  }
  6947  
  6948  // bindOnApproveConstant binds a generic wrapper to an already deployed contract.
  6949  func bindOnApproveConstant(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6950  	parsed, err := abi.JSON(strings.NewReader(OnApproveConstantABI))
  6951  	if err != nil {
  6952  		return nil, err
  6953  	}
  6954  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6955  }
  6956  
  6957  // Call invokes the (constant) contract method with params as input values and
  6958  // sets the output to result. The result type might be a single field for simple
  6959  // returns, a slice of interfaces for anonymous returns and a struct for named
  6960  // returns.
  6961  func (_OnApproveConstant *OnApproveConstantRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6962  	return _OnApproveConstant.Contract.OnApproveConstantCaller.contract.Call(opts, result, method, params...)
  6963  }
  6964  
  6965  // Transfer initiates a plain transaction to move funds to the contract, calling
  6966  // its default method if one is available.
  6967  func (_OnApproveConstant *OnApproveConstantRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6968  	return _OnApproveConstant.Contract.OnApproveConstantTransactor.contract.Transfer(opts)
  6969  }
  6970  
  6971  // Transact invokes the (paid) contract method with params as input values.
  6972  func (_OnApproveConstant *OnApproveConstantRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6973  	return _OnApproveConstant.Contract.OnApproveConstantTransactor.contract.Transact(opts, method, params...)
  6974  }
  6975  
  6976  // Call invokes the (constant) contract method with params as input values and
  6977  // sets the output to result. The result type might be a single field for simple
  6978  // returns, a slice of interfaces for anonymous returns and a struct for named
  6979  // returns.
  6980  func (_OnApproveConstant *OnApproveConstantCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6981  	return _OnApproveConstant.Contract.contract.Call(opts, result, method, params...)
  6982  }
  6983  
  6984  // Transfer initiates a plain transaction to move funds to the contract, calling
  6985  // its default method if one is available.
  6986  func (_OnApproveConstant *OnApproveConstantTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6987  	return _OnApproveConstant.Contract.contract.Transfer(opts)
  6988  }
  6989  
  6990  // Transact invokes the (paid) contract method with params as input values.
  6991  func (_OnApproveConstant *OnApproveConstantTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6992  	return _OnApproveConstant.Contract.contract.Transact(opts, method, params...)
  6993  }
  6994  
  6995  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  6996  //
  6997  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  6998  func (_OnApproveConstant *OnApproveConstantCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
  6999  	var (
  7000  		ret0 = new([4]byte)
  7001  	)
  7002  	out := ret0
  7003  	err := _OnApproveConstant.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
  7004  	return *ret0, err
  7005  }
  7006  
  7007  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  7008  //
  7009  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  7010  func (_OnApproveConstant *OnApproveConstantSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  7011  	return _OnApproveConstant.Contract.INTERFACEIDONAPPROVE(&_OnApproveConstant.CallOpts)
  7012  }
  7013  
  7014  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  7015  //
  7016  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  7017  func (_OnApproveConstant *OnApproveConstantCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  7018  	return _OnApproveConstant.Contract.INTERFACEIDONAPPROVE(&_OnApproveConstant.CallOpts)
  7019  }
  7020  
  7021  // OwnableABI is the input ABI used to generate the binding from.
  7022  const OwnableABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  7023  
  7024  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
  7025  var OwnableFuncSigs = map[string]string{
  7026  	"8f32d59b": "isOwner()",
  7027  	"8da5cb5b": "owner()",
  7028  	"715018a6": "renounceOwnership()",
  7029  	"f2fde38b": "transferOwnership(address)",
  7030  }
  7031  
  7032  // Ownable is an auto generated Go binding around an Ethereum contract.
  7033  type Ownable struct {
  7034  	OwnableCaller     // Read-only binding to the contract
  7035  	OwnableTransactor // Write-only binding to the contract
  7036  	OwnableFilterer   // Log filterer for contract events
  7037  }
  7038  
  7039  // OwnableCaller is an auto generated read-only Go binding around an Ethereum contract.
  7040  type OwnableCaller struct {
  7041  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7042  }
  7043  
  7044  // OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7045  type OwnableTransactor struct {
  7046  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7047  }
  7048  
  7049  // OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7050  type OwnableFilterer struct {
  7051  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7052  }
  7053  
  7054  // OwnableSession is an auto generated Go binding around an Ethereum contract,
  7055  // with pre-set call and transact options.
  7056  type OwnableSession struct {
  7057  	Contract     *Ownable          // Generic contract binding to set the session for
  7058  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7059  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7060  }
  7061  
  7062  // OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7063  // with pre-set call options.
  7064  type OwnableCallerSession struct {
  7065  	Contract *OwnableCaller // Generic contract caller binding to set the session for
  7066  	CallOpts bind.CallOpts  // Call options to use throughout this session
  7067  }
  7068  
  7069  // OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7070  // with pre-set transact options.
  7071  type OwnableTransactorSession struct {
  7072  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
  7073  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  7074  }
  7075  
  7076  // OwnableRaw is an auto generated low-level Go binding around an Ethereum contract.
  7077  type OwnableRaw struct {
  7078  	Contract *Ownable // Generic contract binding to access the raw methods on
  7079  }
  7080  
  7081  // OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7082  type OwnableCallerRaw struct {
  7083  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
  7084  }
  7085  
  7086  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7087  type OwnableTransactorRaw struct {
  7088  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
  7089  }
  7090  
  7091  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
  7092  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
  7093  	contract, err := bindOwnable(address, backend, backend, backend)
  7094  	if err != nil {
  7095  		return nil, err
  7096  	}
  7097  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
  7098  }
  7099  
  7100  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
  7101  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
  7102  	contract, err := bindOwnable(address, caller, nil, nil)
  7103  	if err != nil {
  7104  		return nil, err
  7105  	}
  7106  	return &OwnableCaller{contract: contract}, nil
  7107  }
  7108  
  7109  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
  7110  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
  7111  	contract, err := bindOwnable(address, nil, transactor, nil)
  7112  	if err != nil {
  7113  		return nil, err
  7114  	}
  7115  	return &OwnableTransactor{contract: contract}, nil
  7116  }
  7117  
  7118  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
  7119  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
  7120  	contract, err := bindOwnable(address, nil, nil, filterer)
  7121  	if err != nil {
  7122  		return nil, err
  7123  	}
  7124  	return &OwnableFilterer{contract: contract}, nil
  7125  }
  7126  
  7127  // bindOwnable binds a generic wrapper to an already deployed contract.
  7128  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7129  	parsed, err := abi.JSON(strings.NewReader(OwnableABI))
  7130  	if err != nil {
  7131  		return nil, err
  7132  	}
  7133  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7134  }
  7135  
  7136  // Call invokes the (constant) contract method with params as input values and
  7137  // sets the output to result. The result type might be a single field for simple
  7138  // returns, a slice of interfaces for anonymous returns and a struct for named
  7139  // returns.
  7140  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7141  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
  7142  }
  7143  
  7144  // Transfer initiates a plain transaction to move funds to the contract, calling
  7145  // its default method if one is available.
  7146  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7147  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
  7148  }
  7149  
  7150  // Transact invokes the (paid) contract method with params as input values.
  7151  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7152  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
  7153  }
  7154  
  7155  // Call invokes the (constant) contract method with params as input values and
  7156  // sets the output to result. The result type might be a single field for simple
  7157  // returns, a slice of interfaces for anonymous returns and a struct for named
  7158  // returns.
  7159  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7160  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
  7161  }
  7162  
  7163  // Transfer initiates a plain transaction to move funds to the contract, calling
  7164  // its default method if one is available.
  7165  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7166  	return _Ownable.Contract.contract.Transfer(opts)
  7167  }
  7168  
  7169  // Transact invokes the (paid) contract method with params as input values.
  7170  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7171  	return _Ownable.Contract.contract.Transact(opts, method, params...)
  7172  }
  7173  
  7174  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7175  //
  7176  // Solidity: function isOwner() constant returns(bool)
  7177  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  7178  	var (
  7179  		ret0 = new(bool)
  7180  	)
  7181  	out := ret0
  7182  	err := _Ownable.contract.Call(opts, out, "isOwner")
  7183  	return *ret0, err
  7184  }
  7185  
  7186  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7187  //
  7188  // Solidity: function isOwner() constant returns(bool)
  7189  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
  7190  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
  7191  }
  7192  
  7193  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7194  //
  7195  // Solidity: function isOwner() constant returns(bool)
  7196  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
  7197  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
  7198  }
  7199  
  7200  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7201  //
  7202  // Solidity: function owner() constant returns(address)
  7203  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  7204  	var (
  7205  		ret0 = new(common.Address)
  7206  	)
  7207  	out := ret0
  7208  	err := _Ownable.contract.Call(opts, out, "owner")
  7209  	return *ret0, err
  7210  }
  7211  
  7212  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7213  //
  7214  // Solidity: function owner() constant returns(address)
  7215  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
  7216  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  7217  }
  7218  
  7219  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7220  //
  7221  // Solidity: function owner() constant returns(address)
  7222  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
  7223  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  7224  }
  7225  
  7226  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7227  //
  7228  // Solidity: function renounceOwnership() returns()
  7229  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  7230  	return _Ownable.contract.Transact(opts, "renounceOwnership")
  7231  }
  7232  
  7233  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7234  //
  7235  // Solidity: function renounceOwnership() returns()
  7236  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
  7237  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  7238  }
  7239  
  7240  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7241  //
  7242  // Solidity: function renounceOwnership() returns()
  7243  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  7244  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  7245  }
  7246  
  7247  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7248  //
  7249  // Solidity: function transferOwnership(address newOwner) returns()
  7250  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  7251  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
  7252  }
  7253  
  7254  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7255  //
  7256  // Solidity: function transferOwnership(address newOwner) returns()
  7257  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7258  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  7259  }
  7260  
  7261  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7262  //
  7263  // Solidity: function transferOwnership(address newOwner) returns()
  7264  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7265  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  7266  }
  7267  
  7268  // OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract.
  7269  type OwnableOwnershipTransferredIterator struct {
  7270  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
  7271  
  7272  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7273  	event    string              // Event name to use for unpacking event data
  7274  
  7275  	logs chan types.Log        // Log channel receiving the found contract events
  7276  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  7277  	done bool                  // Whether the subscription completed delivering logs
  7278  	fail error                 // Occurred error to stop iteration
  7279  }
  7280  
  7281  // Next advances the iterator to the subsequent event, returning whether there
  7282  // are any more events found. In case of a retrieval or parsing error, false is
  7283  // returned and Error() can be queried for the exact failure.
  7284  func (it *OwnableOwnershipTransferredIterator) Next() bool {
  7285  	// If the iterator failed, stop iterating
  7286  	if it.fail != nil {
  7287  		return false
  7288  	}
  7289  	// If the iterator completed, deliver directly whatever's available
  7290  	if it.done {
  7291  		select {
  7292  		case log := <-it.logs:
  7293  			it.Event = new(OwnableOwnershipTransferred)
  7294  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7295  				it.fail = err
  7296  				return false
  7297  			}
  7298  			it.Event.Raw = log
  7299  			return true
  7300  
  7301  		default:
  7302  			return false
  7303  		}
  7304  	}
  7305  	// Iterator still in progress, wait for either a data or an error event
  7306  	select {
  7307  	case log := <-it.logs:
  7308  		it.Event = new(OwnableOwnershipTransferred)
  7309  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7310  			it.fail = err
  7311  			return false
  7312  		}
  7313  		it.Event.Raw = log
  7314  		return true
  7315  
  7316  	case err := <-it.sub.Err():
  7317  		it.done = true
  7318  		it.fail = err
  7319  		return it.Next()
  7320  	}
  7321  }
  7322  
  7323  // Error returns any retrieval or parsing error occurred during filtering.
  7324  func (it *OwnableOwnershipTransferredIterator) Error() error {
  7325  	return it.fail
  7326  }
  7327  
  7328  // Close terminates the iteration process, releasing any pending underlying
  7329  // resources.
  7330  func (it *OwnableOwnershipTransferredIterator) Close() error {
  7331  	it.sub.Unsubscribe()
  7332  	return nil
  7333  }
  7334  
  7335  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
  7336  type OwnableOwnershipTransferred struct {
  7337  	PreviousOwner common.Address
  7338  	NewOwner      common.Address
  7339  	Raw           types.Log // Blockchain specific contextual infos
  7340  }
  7341  
  7342  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7343  //
  7344  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7345  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
  7346  
  7347  	var previousOwnerRule []interface{}
  7348  	for _, previousOwnerItem := range previousOwner {
  7349  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7350  	}
  7351  	var newOwnerRule []interface{}
  7352  	for _, newOwnerItem := range newOwner {
  7353  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7354  	}
  7355  
  7356  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7357  	if err != nil {
  7358  		return nil, err
  7359  	}
  7360  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  7361  }
  7362  
  7363  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7364  //
  7365  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7366  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  7367  
  7368  	var previousOwnerRule []interface{}
  7369  	for _, previousOwnerItem := range previousOwner {
  7370  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7371  	}
  7372  	var newOwnerRule []interface{}
  7373  	for _, newOwnerItem := range newOwner {
  7374  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7375  	}
  7376  
  7377  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7378  	if err != nil {
  7379  		return nil, err
  7380  	}
  7381  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7382  		defer sub.Unsubscribe()
  7383  		for {
  7384  			select {
  7385  			case log := <-logs:
  7386  				// New log arrived, parse the event and forward to the user
  7387  				event := new(OwnableOwnershipTransferred)
  7388  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7389  					return err
  7390  				}
  7391  				event.Raw = log
  7392  
  7393  				select {
  7394  				case sink <- event:
  7395  				case err := <-sub.Err():
  7396  					return err
  7397  				case <-quit:
  7398  					return nil
  7399  				}
  7400  			case err := <-sub.Err():
  7401  				return err
  7402  			case <-quit:
  7403  				return nil
  7404  			}
  7405  		}
  7406  	}), nil
  7407  }
  7408  
  7409  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7410  //
  7411  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7412  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
  7413  	event := new(OwnableOwnershipTransferred)
  7414  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7415  		return nil, err
  7416  	}
  7417  	return event, nil
  7418  }
  7419  
  7420  // OwnableTargetABI is the input ABI used to generate the binding from.
  7421  const OwnableTargetABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  7422  
  7423  // OwnableTargetFuncSigs maps the 4-byte function signature to its string representation.
  7424  var OwnableTargetFuncSigs = map[string]string{
  7425  	"715018a6": "renounceOwnership()",
  7426  	"f2fde38b": "transferOwnership(address)",
  7427  }
  7428  
  7429  // OwnableTarget is an auto generated Go binding around an Ethereum contract.
  7430  type OwnableTarget struct {
  7431  	OwnableTargetCaller     // Read-only binding to the contract
  7432  	OwnableTargetTransactor // Write-only binding to the contract
  7433  	OwnableTargetFilterer   // Log filterer for contract events
  7434  }
  7435  
  7436  // OwnableTargetCaller is an auto generated read-only Go binding around an Ethereum contract.
  7437  type OwnableTargetCaller struct {
  7438  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7439  }
  7440  
  7441  // OwnableTargetTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7442  type OwnableTargetTransactor struct {
  7443  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7444  }
  7445  
  7446  // OwnableTargetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7447  type OwnableTargetFilterer struct {
  7448  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7449  }
  7450  
  7451  // OwnableTargetSession is an auto generated Go binding around an Ethereum contract,
  7452  // with pre-set call and transact options.
  7453  type OwnableTargetSession struct {
  7454  	Contract     *OwnableTarget    // Generic contract binding to set the session for
  7455  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7456  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7457  }
  7458  
  7459  // OwnableTargetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7460  // with pre-set call options.
  7461  type OwnableTargetCallerSession struct {
  7462  	Contract *OwnableTargetCaller // Generic contract caller binding to set the session for
  7463  	CallOpts bind.CallOpts        // Call options to use throughout this session
  7464  }
  7465  
  7466  // OwnableTargetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7467  // with pre-set transact options.
  7468  type OwnableTargetTransactorSession struct {
  7469  	Contract     *OwnableTargetTransactor // Generic contract transactor binding to set the session for
  7470  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  7471  }
  7472  
  7473  // OwnableTargetRaw is an auto generated low-level Go binding around an Ethereum contract.
  7474  type OwnableTargetRaw struct {
  7475  	Contract *OwnableTarget // Generic contract binding to access the raw methods on
  7476  }
  7477  
  7478  // OwnableTargetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7479  type OwnableTargetCallerRaw struct {
  7480  	Contract *OwnableTargetCaller // Generic read-only contract binding to access the raw methods on
  7481  }
  7482  
  7483  // OwnableTargetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7484  type OwnableTargetTransactorRaw struct {
  7485  	Contract *OwnableTargetTransactor // Generic write-only contract binding to access the raw methods on
  7486  }
  7487  
  7488  // NewOwnableTarget creates a new instance of OwnableTarget, bound to a specific deployed contract.
  7489  func NewOwnableTarget(address common.Address, backend bind.ContractBackend) (*OwnableTarget, error) {
  7490  	contract, err := bindOwnableTarget(address, backend, backend, backend)
  7491  	if err != nil {
  7492  		return nil, err
  7493  	}
  7494  	return &OwnableTarget{OwnableTargetCaller: OwnableTargetCaller{contract: contract}, OwnableTargetTransactor: OwnableTargetTransactor{contract: contract}, OwnableTargetFilterer: OwnableTargetFilterer{contract: contract}}, nil
  7495  }
  7496  
  7497  // NewOwnableTargetCaller creates a new read-only instance of OwnableTarget, bound to a specific deployed contract.
  7498  func NewOwnableTargetCaller(address common.Address, caller bind.ContractCaller) (*OwnableTargetCaller, error) {
  7499  	contract, err := bindOwnableTarget(address, caller, nil, nil)
  7500  	if err != nil {
  7501  		return nil, err
  7502  	}
  7503  	return &OwnableTargetCaller{contract: contract}, nil
  7504  }
  7505  
  7506  // NewOwnableTargetTransactor creates a new write-only instance of OwnableTarget, bound to a specific deployed contract.
  7507  func NewOwnableTargetTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTargetTransactor, error) {
  7508  	contract, err := bindOwnableTarget(address, nil, transactor, nil)
  7509  	if err != nil {
  7510  		return nil, err
  7511  	}
  7512  	return &OwnableTargetTransactor{contract: contract}, nil
  7513  }
  7514  
  7515  // NewOwnableTargetFilterer creates a new log filterer instance of OwnableTarget, bound to a specific deployed contract.
  7516  func NewOwnableTargetFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableTargetFilterer, error) {
  7517  	contract, err := bindOwnableTarget(address, nil, nil, filterer)
  7518  	if err != nil {
  7519  		return nil, err
  7520  	}
  7521  	return &OwnableTargetFilterer{contract: contract}, nil
  7522  }
  7523  
  7524  // bindOwnableTarget binds a generic wrapper to an already deployed contract.
  7525  func bindOwnableTarget(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7526  	parsed, err := abi.JSON(strings.NewReader(OwnableTargetABI))
  7527  	if err != nil {
  7528  		return nil, err
  7529  	}
  7530  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7531  }
  7532  
  7533  // Call invokes the (constant) contract method with params as input values and
  7534  // sets the output to result. The result type might be a single field for simple
  7535  // returns, a slice of interfaces for anonymous returns and a struct for named
  7536  // returns.
  7537  func (_OwnableTarget *OwnableTargetRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7538  	return _OwnableTarget.Contract.OwnableTargetCaller.contract.Call(opts, result, method, params...)
  7539  }
  7540  
  7541  // Transfer initiates a plain transaction to move funds to the contract, calling
  7542  // its default method if one is available.
  7543  func (_OwnableTarget *OwnableTargetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7544  	return _OwnableTarget.Contract.OwnableTargetTransactor.contract.Transfer(opts)
  7545  }
  7546  
  7547  // Transact invokes the (paid) contract method with params as input values.
  7548  func (_OwnableTarget *OwnableTargetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7549  	return _OwnableTarget.Contract.OwnableTargetTransactor.contract.Transact(opts, method, params...)
  7550  }
  7551  
  7552  // Call invokes the (constant) contract method with params as input values and
  7553  // sets the output to result. The result type might be a single field for simple
  7554  // returns, a slice of interfaces for anonymous returns and a struct for named
  7555  // returns.
  7556  func (_OwnableTarget *OwnableTargetCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7557  	return _OwnableTarget.Contract.contract.Call(opts, result, method, params...)
  7558  }
  7559  
  7560  // Transfer initiates a plain transaction to move funds to the contract, calling
  7561  // its default method if one is available.
  7562  func (_OwnableTarget *OwnableTargetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7563  	return _OwnableTarget.Contract.contract.Transfer(opts)
  7564  }
  7565  
  7566  // Transact invokes the (paid) contract method with params as input values.
  7567  func (_OwnableTarget *OwnableTargetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7568  	return _OwnableTarget.Contract.contract.Transact(opts, method, params...)
  7569  }
  7570  
  7571  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7572  //
  7573  // Solidity: function renounceOwnership() returns()
  7574  func (_OwnableTarget *OwnableTargetTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  7575  	return _OwnableTarget.contract.Transact(opts, "renounceOwnership")
  7576  }
  7577  
  7578  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7579  //
  7580  // Solidity: function renounceOwnership() returns()
  7581  func (_OwnableTarget *OwnableTargetSession) RenounceOwnership() (*types.Transaction, error) {
  7582  	return _OwnableTarget.Contract.RenounceOwnership(&_OwnableTarget.TransactOpts)
  7583  }
  7584  
  7585  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7586  //
  7587  // Solidity: function renounceOwnership() returns()
  7588  func (_OwnableTarget *OwnableTargetTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  7589  	return _OwnableTarget.Contract.RenounceOwnership(&_OwnableTarget.TransactOpts)
  7590  }
  7591  
  7592  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7593  //
  7594  // Solidity: function transferOwnership(address newOwner) returns()
  7595  func (_OwnableTarget *OwnableTargetTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  7596  	return _OwnableTarget.contract.Transact(opts, "transferOwnership", newOwner)
  7597  }
  7598  
  7599  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7600  //
  7601  // Solidity: function transferOwnership(address newOwner) returns()
  7602  func (_OwnableTarget *OwnableTargetSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7603  	return _OwnableTarget.Contract.TransferOwnership(&_OwnableTarget.TransactOpts, newOwner)
  7604  }
  7605  
  7606  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7607  //
  7608  // Solidity: function transferOwnership(address newOwner) returns()
  7609  func (_OwnableTarget *OwnableTargetTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7610  	return _OwnableTarget.Contract.TransferOwnership(&_OwnableTarget.TransactOpts, newOwner)
  7611  }
  7612  
  7613  // PauserRoleRenounceTargetABI is the input ABI used to generate the binding from.
  7614  const PauserRoleRenounceTargetABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  7615  
  7616  // PauserRoleRenounceTargetFuncSigs maps the 4-byte function signature to its string representation.
  7617  var PauserRoleRenounceTargetFuncSigs = map[string]string{
  7618  	"6ef8d66d": "renouncePauser()",
  7619  }
  7620  
  7621  // PauserRoleRenounceTarget is an auto generated Go binding around an Ethereum contract.
  7622  type PauserRoleRenounceTarget struct {
  7623  	PauserRoleRenounceTargetCaller     // Read-only binding to the contract
  7624  	PauserRoleRenounceTargetTransactor // Write-only binding to the contract
  7625  	PauserRoleRenounceTargetFilterer   // Log filterer for contract events
  7626  }
  7627  
  7628  // PauserRoleRenounceTargetCaller is an auto generated read-only Go binding around an Ethereum contract.
  7629  type PauserRoleRenounceTargetCaller struct {
  7630  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7631  }
  7632  
  7633  // PauserRoleRenounceTargetTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7634  type PauserRoleRenounceTargetTransactor struct {
  7635  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7636  }
  7637  
  7638  // PauserRoleRenounceTargetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7639  type PauserRoleRenounceTargetFilterer struct {
  7640  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7641  }
  7642  
  7643  // PauserRoleRenounceTargetSession is an auto generated Go binding around an Ethereum contract,
  7644  // with pre-set call and transact options.
  7645  type PauserRoleRenounceTargetSession struct {
  7646  	Contract     *PauserRoleRenounceTarget // Generic contract binding to set the session for
  7647  	CallOpts     bind.CallOpts             // Call options to use throughout this session
  7648  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  7649  }
  7650  
  7651  // PauserRoleRenounceTargetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7652  // with pre-set call options.
  7653  type PauserRoleRenounceTargetCallerSession struct {
  7654  	Contract *PauserRoleRenounceTargetCaller // Generic contract caller binding to set the session for
  7655  	CallOpts bind.CallOpts                   // Call options to use throughout this session
  7656  }
  7657  
  7658  // PauserRoleRenounceTargetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7659  // with pre-set transact options.
  7660  type PauserRoleRenounceTargetTransactorSession struct {
  7661  	Contract     *PauserRoleRenounceTargetTransactor // Generic contract transactor binding to set the session for
  7662  	TransactOpts bind.TransactOpts                   // Transaction auth options to use throughout this session
  7663  }
  7664  
  7665  // PauserRoleRenounceTargetRaw is an auto generated low-level Go binding around an Ethereum contract.
  7666  type PauserRoleRenounceTargetRaw struct {
  7667  	Contract *PauserRoleRenounceTarget // Generic contract binding to access the raw methods on
  7668  }
  7669  
  7670  // PauserRoleRenounceTargetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7671  type PauserRoleRenounceTargetCallerRaw struct {
  7672  	Contract *PauserRoleRenounceTargetCaller // Generic read-only contract binding to access the raw methods on
  7673  }
  7674  
  7675  // PauserRoleRenounceTargetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7676  type PauserRoleRenounceTargetTransactorRaw struct {
  7677  	Contract *PauserRoleRenounceTargetTransactor // Generic write-only contract binding to access the raw methods on
  7678  }
  7679  
  7680  // NewPauserRoleRenounceTarget creates a new instance of PauserRoleRenounceTarget, bound to a specific deployed contract.
  7681  func NewPauserRoleRenounceTarget(address common.Address, backend bind.ContractBackend) (*PauserRoleRenounceTarget, error) {
  7682  	contract, err := bindPauserRoleRenounceTarget(address, backend, backend, backend)
  7683  	if err != nil {
  7684  		return nil, err
  7685  	}
  7686  	return &PauserRoleRenounceTarget{PauserRoleRenounceTargetCaller: PauserRoleRenounceTargetCaller{contract: contract}, PauserRoleRenounceTargetTransactor: PauserRoleRenounceTargetTransactor{contract: contract}, PauserRoleRenounceTargetFilterer: PauserRoleRenounceTargetFilterer{contract: contract}}, nil
  7687  }
  7688  
  7689  // NewPauserRoleRenounceTargetCaller creates a new read-only instance of PauserRoleRenounceTarget, bound to a specific deployed contract.
  7690  func NewPauserRoleRenounceTargetCaller(address common.Address, caller bind.ContractCaller) (*PauserRoleRenounceTargetCaller, error) {
  7691  	contract, err := bindPauserRoleRenounceTarget(address, caller, nil, nil)
  7692  	if err != nil {
  7693  		return nil, err
  7694  	}
  7695  	return &PauserRoleRenounceTargetCaller{contract: contract}, nil
  7696  }
  7697  
  7698  // NewPauserRoleRenounceTargetTransactor creates a new write-only instance of PauserRoleRenounceTarget, bound to a specific deployed contract.
  7699  func NewPauserRoleRenounceTargetTransactor(address common.Address, transactor bind.ContractTransactor) (*PauserRoleRenounceTargetTransactor, error) {
  7700  	contract, err := bindPauserRoleRenounceTarget(address, nil, transactor, nil)
  7701  	if err != nil {
  7702  		return nil, err
  7703  	}
  7704  	return &PauserRoleRenounceTargetTransactor{contract: contract}, nil
  7705  }
  7706  
  7707  // NewPauserRoleRenounceTargetFilterer creates a new log filterer instance of PauserRoleRenounceTarget, bound to a specific deployed contract.
  7708  func NewPauserRoleRenounceTargetFilterer(address common.Address, filterer bind.ContractFilterer) (*PauserRoleRenounceTargetFilterer, error) {
  7709  	contract, err := bindPauserRoleRenounceTarget(address, nil, nil, filterer)
  7710  	if err != nil {
  7711  		return nil, err
  7712  	}
  7713  	return &PauserRoleRenounceTargetFilterer{contract: contract}, nil
  7714  }
  7715  
  7716  // bindPauserRoleRenounceTarget binds a generic wrapper to an already deployed contract.
  7717  func bindPauserRoleRenounceTarget(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7718  	parsed, err := abi.JSON(strings.NewReader(PauserRoleRenounceTargetABI))
  7719  	if err != nil {
  7720  		return nil, err
  7721  	}
  7722  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7723  }
  7724  
  7725  // Call invokes the (constant) contract method with params as input values and
  7726  // sets the output to result. The result type might be a single field for simple
  7727  // returns, a slice of interfaces for anonymous returns and a struct for named
  7728  // returns.
  7729  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7730  	return _PauserRoleRenounceTarget.Contract.PauserRoleRenounceTargetCaller.contract.Call(opts, result, method, params...)
  7731  }
  7732  
  7733  // Transfer initiates a plain transaction to move funds to the contract, calling
  7734  // its default method if one is available.
  7735  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7736  	return _PauserRoleRenounceTarget.Contract.PauserRoleRenounceTargetTransactor.contract.Transfer(opts)
  7737  }
  7738  
  7739  // Transact invokes the (paid) contract method with params as input values.
  7740  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7741  	return _PauserRoleRenounceTarget.Contract.PauserRoleRenounceTargetTransactor.contract.Transact(opts, method, params...)
  7742  }
  7743  
  7744  // Call invokes the (constant) contract method with params as input values and
  7745  // sets the output to result. The result type might be a single field for simple
  7746  // returns, a slice of interfaces for anonymous returns and a struct for named
  7747  // returns.
  7748  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7749  	return _PauserRoleRenounceTarget.Contract.contract.Call(opts, result, method, params...)
  7750  }
  7751  
  7752  // Transfer initiates a plain transaction to move funds to the contract, calling
  7753  // its default method if one is available.
  7754  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7755  	return _PauserRoleRenounceTarget.Contract.contract.Transfer(opts)
  7756  }
  7757  
  7758  // Transact invokes the (paid) contract method with params as input values.
  7759  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7760  	return _PauserRoleRenounceTarget.Contract.contract.Transact(opts, method, params...)
  7761  }
  7762  
  7763  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  7764  //
  7765  // Solidity: function renouncePauser() returns()
  7766  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetTransactor) RenouncePauser(opts *bind.TransactOpts) (*types.Transaction, error) {
  7767  	return _PauserRoleRenounceTarget.contract.Transact(opts, "renouncePauser")
  7768  }
  7769  
  7770  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  7771  //
  7772  // Solidity: function renouncePauser() returns()
  7773  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetSession) RenouncePauser() (*types.Transaction, error) {
  7774  	return _PauserRoleRenounceTarget.Contract.RenouncePauser(&_PauserRoleRenounceTarget.TransactOpts)
  7775  }
  7776  
  7777  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  7778  //
  7779  // Solidity: function renouncePauser() returns()
  7780  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetTransactorSession) RenouncePauser() (*types.Transaction, error) {
  7781  	return _PauserRoleRenounceTarget.Contract.RenouncePauser(&_PauserRoleRenounceTarget.TransactOpts)
  7782  }
  7783  
  7784  // ReentrancyGuardABI is the input ABI used to generate the binding from.
  7785  const ReentrancyGuardABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
  7786  
  7787  // ReentrancyGuard is an auto generated Go binding around an Ethereum contract.
  7788  type ReentrancyGuard struct {
  7789  	ReentrancyGuardCaller     // Read-only binding to the contract
  7790  	ReentrancyGuardTransactor // Write-only binding to the contract
  7791  	ReentrancyGuardFilterer   // Log filterer for contract events
  7792  }
  7793  
  7794  // ReentrancyGuardCaller is an auto generated read-only Go binding around an Ethereum contract.
  7795  type ReentrancyGuardCaller struct {
  7796  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7797  }
  7798  
  7799  // ReentrancyGuardTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7800  type ReentrancyGuardTransactor struct {
  7801  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7802  }
  7803  
  7804  // ReentrancyGuardFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7805  type ReentrancyGuardFilterer struct {
  7806  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7807  }
  7808  
  7809  // ReentrancyGuardSession is an auto generated Go binding around an Ethereum contract,
  7810  // with pre-set call and transact options.
  7811  type ReentrancyGuardSession struct {
  7812  	Contract     *ReentrancyGuard  // Generic contract binding to set the session for
  7813  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7814  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7815  }
  7816  
  7817  // ReentrancyGuardCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7818  // with pre-set call options.
  7819  type ReentrancyGuardCallerSession struct {
  7820  	Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for
  7821  	CallOpts bind.CallOpts          // Call options to use throughout this session
  7822  }
  7823  
  7824  // ReentrancyGuardTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7825  // with pre-set transact options.
  7826  type ReentrancyGuardTransactorSession struct {
  7827  	Contract     *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for
  7828  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
  7829  }
  7830  
  7831  // ReentrancyGuardRaw is an auto generated low-level Go binding around an Ethereum contract.
  7832  type ReentrancyGuardRaw struct {
  7833  	Contract *ReentrancyGuard // Generic contract binding to access the raw methods on
  7834  }
  7835  
  7836  // ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7837  type ReentrancyGuardCallerRaw struct {
  7838  	Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on
  7839  }
  7840  
  7841  // ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7842  type ReentrancyGuardTransactorRaw struct {
  7843  	Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on
  7844  }
  7845  
  7846  // NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract.
  7847  func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) {
  7848  	contract, err := bindReentrancyGuard(address, backend, backend, backend)
  7849  	if err != nil {
  7850  		return nil, err
  7851  	}
  7852  	return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil
  7853  }
  7854  
  7855  // NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract.
  7856  func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) {
  7857  	contract, err := bindReentrancyGuard(address, caller, nil, nil)
  7858  	if err != nil {
  7859  		return nil, err
  7860  	}
  7861  	return &ReentrancyGuardCaller{contract: contract}, nil
  7862  }
  7863  
  7864  // NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract.
  7865  func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) {
  7866  	contract, err := bindReentrancyGuard(address, nil, transactor, nil)
  7867  	if err != nil {
  7868  		return nil, err
  7869  	}
  7870  	return &ReentrancyGuardTransactor{contract: contract}, nil
  7871  }
  7872  
  7873  // NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract.
  7874  func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) {
  7875  	contract, err := bindReentrancyGuard(address, nil, nil, filterer)
  7876  	if err != nil {
  7877  		return nil, err
  7878  	}
  7879  	return &ReentrancyGuardFilterer{contract: contract}, nil
  7880  }
  7881  
  7882  // bindReentrancyGuard binds a generic wrapper to an already deployed contract.
  7883  func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7884  	parsed, err := abi.JSON(strings.NewReader(ReentrancyGuardABI))
  7885  	if err != nil {
  7886  		return nil, err
  7887  	}
  7888  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7889  }
  7890  
  7891  // Call invokes the (constant) contract method with params as input values and
  7892  // sets the output to result. The result type might be a single field for simple
  7893  // returns, a slice of interfaces for anonymous returns and a struct for named
  7894  // returns.
  7895  func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7896  	return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...)
  7897  }
  7898  
  7899  // Transfer initiates a plain transaction to move funds to the contract, calling
  7900  // its default method if one is available.
  7901  func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7902  	return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts)
  7903  }
  7904  
  7905  // Transact invokes the (paid) contract method with params as input values.
  7906  func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7907  	return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...)
  7908  }
  7909  
  7910  // Call invokes the (constant) contract method with params as input values and
  7911  // sets the output to result. The result type might be a single field for simple
  7912  // returns, a slice of interfaces for anonymous returns and a struct for named
  7913  // returns.
  7914  func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7915  	return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...)
  7916  }
  7917  
  7918  // Transfer initiates a plain transaction to move funds to the contract, calling
  7919  // its default method if one is available.
  7920  func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7921  	return _ReentrancyGuard.Contract.contract.Transfer(opts)
  7922  }
  7923  
  7924  // Transact invokes the (paid) contract method with params as input values.
  7925  func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7926  	return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...)
  7927  }
  7928  
  7929  // RolesABI is the input ABI used to generate the binding from.
  7930  const RolesABI = "[]"
  7931  
  7932  // RolesBin is the compiled bytecode used for deploying new contracts.
  7933  var RolesBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820451a2112c879141f72bbe0ec00d853511a9d98646af7e3081d90a3d70270eb1564736f6c634300050c0032"
  7934  
  7935  // DeployRoles deploys a new Ethereum contract, binding an instance of Roles to it.
  7936  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
  7937  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
  7938  	if err != nil {
  7939  		return common.Address{}, nil, nil, err
  7940  	}
  7941  
  7942  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RolesBin), backend)
  7943  	if err != nil {
  7944  		return common.Address{}, nil, nil, err
  7945  	}
  7946  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
  7947  }
  7948  
  7949  // Roles is an auto generated Go binding around an Ethereum contract.
  7950  type Roles struct {
  7951  	RolesCaller     // Read-only binding to the contract
  7952  	RolesTransactor // Write-only binding to the contract
  7953  	RolesFilterer   // Log filterer for contract events
  7954  }
  7955  
  7956  // RolesCaller is an auto generated read-only Go binding around an Ethereum contract.
  7957  type RolesCaller struct {
  7958  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7959  }
  7960  
  7961  // RolesTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7962  type RolesTransactor struct {
  7963  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7964  }
  7965  
  7966  // RolesFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7967  type RolesFilterer struct {
  7968  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7969  }
  7970  
  7971  // RolesSession is an auto generated Go binding around an Ethereum contract,
  7972  // with pre-set call and transact options.
  7973  type RolesSession struct {
  7974  	Contract     *Roles            // Generic contract binding to set the session for
  7975  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7976  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7977  }
  7978  
  7979  // RolesCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7980  // with pre-set call options.
  7981  type RolesCallerSession struct {
  7982  	Contract *RolesCaller  // Generic contract caller binding to set the session for
  7983  	CallOpts bind.CallOpts // Call options to use throughout this session
  7984  }
  7985  
  7986  // RolesTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7987  // with pre-set transact options.
  7988  type RolesTransactorSession struct {
  7989  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
  7990  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7991  }
  7992  
  7993  // RolesRaw is an auto generated low-level Go binding around an Ethereum contract.
  7994  type RolesRaw struct {
  7995  	Contract *Roles // Generic contract binding to access the raw methods on
  7996  }
  7997  
  7998  // RolesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7999  type RolesCallerRaw struct {
  8000  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
  8001  }
  8002  
  8003  // RolesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8004  type RolesTransactorRaw struct {
  8005  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
  8006  }
  8007  
  8008  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
  8009  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
  8010  	contract, err := bindRoles(address, backend, backend, backend)
  8011  	if err != nil {
  8012  		return nil, err
  8013  	}
  8014  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
  8015  }
  8016  
  8017  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
  8018  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
  8019  	contract, err := bindRoles(address, caller, nil, nil)
  8020  	if err != nil {
  8021  		return nil, err
  8022  	}
  8023  	return &RolesCaller{contract: contract}, nil
  8024  }
  8025  
  8026  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
  8027  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
  8028  	contract, err := bindRoles(address, nil, transactor, nil)
  8029  	if err != nil {
  8030  		return nil, err
  8031  	}
  8032  	return &RolesTransactor{contract: contract}, nil
  8033  }
  8034  
  8035  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
  8036  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
  8037  	contract, err := bindRoles(address, nil, nil, filterer)
  8038  	if err != nil {
  8039  		return nil, err
  8040  	}
  8041  	return &RolesFilterer{contract: contract}, nil
  8042  }
  8043  
  8044  // bindRoles binds a generic wrapper to an already deployed contract.
  8045  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8046  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
  8047  	if err != nil {
  8048  		return nil, err
  8049  	}
  8050  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8051  }
  8052  
  8053  // Call invokes the (constant) contract method with params as input values and
  8054  // sets the output to result. The result type might be a single field for simple
  8055  // returns, a slice of interfaces for anonymous returns and a struct for named
  8056  // returns.
  8057  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8058  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
  8059  }
  8060  
  8061  // Transfer initiates a plain transaction to move funds to the contract, calling
  8062  // its default method if one is available.
  8063  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8064  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
  8065  }
  8066  
  8067  // Transact invokes the (paid) contract method with params as input values.
  8068  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8069  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
  8070  }
  8071  
  8072  // Call invokes the (constant) contract method with params as input values and
  8073  // sets the output to result. The result type might be a single field for simple
  8074  // returns, a slice of interfaces for anonymous returns and a struct for named
  8075  // returns.
  8076  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8077  	return _Roles.Contract.contract.Call(opts, result, method, params...)
  8078  }
  8079  
  8080  // Transfer initiates a plain transaction to move funds to the contract, calling
  8081  // its default method if one is available.
  8082  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8083  	return _Roles.Contract.contract.Transfer(opts)
  8084  }
  8085  
  8086  // Transact invokes the (paid) contract method with params as input values.
  8087  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8088  	return _Roles.Contract.contract.Transact(opts, method, params...)
  8089  }
  8090  
  8091  // SafeERC20ABI is the input ABI used to generate the binding from.
  8092  const SafeERC20ABI = "[]"
  8093  
  8094  // SafeERC20Bin is the compiled bytecode used for deploying new contracts.
  8095  var SafeERC20Bin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582045a04cb654e4c37bcd57cef5b1e4313fd04e0fbb06c03b04321592cfa5eb149764736f6c634300050c0032"
  8096  
  8097  // DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it.
  8098  func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) {
  8099  	parsed, err := abi.JSON(strings.NewReader(SafeERC20ABI))
  8100  	if err != nil {
  8101  		return common.Address{}, nil, nil, err
  8102  	}
  8103  
  8104  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeERC20Bin), backend)
  8105  	if err != nil {
  8106  		return common.Address{}, nil, nil, err
  8107  	}
  8108  	return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil
  8109  }
  8110  
  8111  // SafeERC20 is an auto generated Go binding around an Ethereum contract.
  8112  type SafeERC20 struct {
  8113  	SafeERC20Caller     // Read-only binding to the contract
  8114  	SafeERC20Transactor // Write-only binding to the contract
  8115  	SafeERC20Filterer   // Log filterer for contract events
  8116  }
  8117  
  8118  // SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract.
  8119  type SafeERC20Caller struct {
  8120  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8121  }
  8122  
  8123  // SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract.
  8124  type SafeERC20Transactor struct {
  8125  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8126  }
  8127  
  8128  // SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8129  type SafeERC20Filterer struct {
  8130  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8131  }
  8132  
  8133  // SafeERC20Session is an auto generated Go binding around an Ethereum contract,
  8134  // with pre-set call and transact options.
  8135  type SafeERC20Session struct {
  8136  	Contract     *SafeERC20        // Generic contract binding to set the session for
  8137  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8138  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8139  }
  8140  
  8141  // SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8142  // with pre-set call options.
  8143  type SafeERC20CallerSession struct {
  8144  	Contract *SafeERC20Caller // Generic contract caller binding to set the session for
  8145  	CallOpts bind.CallOpts    // Call options to use throughout this session
  8146  }
  8147  
  8148  // SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8149  // with pre-set transact options.
  8150  type SafeERC20TransactorSession struct {
  8151  	Contract     *SafeERC20Transactor // Generic contract transactor binding to set the session for
  8152  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  8153  }
  8154  
  8155  // SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract.
  8156  type SafeERC20Raw struct {
  8157  	Contract *SafeERC20 // Generic contract binding to access the raw methods on
  8158  }
  8159  
  8160  // SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8161  type SafeERC20CallerRaw struct {
  8162  	Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on
  8163  }
  8164  
  8165  // SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8166  type SafeERC20TransactorRaw struct {
  8167  	Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on
  8168  }
  8169  
  8170  // NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract.
  8171  func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) {
  8172  	contract, err := bindSafeERC20(address, backend, backend, backend)
  8173  	if err != nil {
  8174  		return nil, err
  8175  	}
  8176  	return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil
  8177  }
  8178  
  8179  // NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract.
  8180  func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) {
  8181  	contract, err := bindSafeERC20(address, caller, nil, nil)
  8182  	if err != nil {
  8183  		return nil, err
  8184  	}
  8185  	return &SafeERC20Caller{contract: contract}, nil
  8186  }
  8187  
  8188  // NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract.
  8189  func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) {
  8190  	contract, err := bindSafeERC20(address, nil, transactor, nil)
  8191  	if err != nil {
  8192  		return nil, err
  8193  	}
  8194  	return &SafeERC20Transactor{contract: contract}, nil
  8195  }
  8196  
  8197  // NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract.
  8198  func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) {
  8199  	contract, err := bindSafeERC20(address, nil, nil, filterer)
  8200  	if err != nil {
  8201  		return nil, err
  8202  	}
  8203  	return &SafeERC20Filterer{contract: contract}, nil
  8204  }
  8205  
  8206  // bindSafeERC20 binds a generic wrapper to an already deployed contract.
  8207  func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8208  	parsed, err := abi.JSON(strings.NewReader(SafeERC20ABI))
  8209  	if err != nil {
  8210  		return nil, err
  8211  	}
  8212  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8213  }
  8214  
  8215  // Call invokes the (constant) contract method with params as input values and
  8216  // sets the output to result. The result type might be a single field for simple
  8217  // returns, a slice of interfaces for anonymous returns and a struct for named
  8218  // returns.
  8219  func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8220  	return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...)
  8221  }
  8222  
  8223  // Transfer initiates a plain transaction to move funds to the contract, calling
  8224  // its default method if one is available.
  8225  func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8226  	return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts)
  8227  }
  8228  
  8229  // Transact invokes the (paid) contract method with params as input values.
  8230  func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8231  	return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...)
  8232  }
  8233  
  8234  // Call invokes the (constant) contract method with params as input values and
  8235  // sets the output to result. The result type might be a single field for simple
  8236  // returns, a slice of interfaces for anonymous returns and a struct for named
  8237  // returns.
  8238  func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8239  	return _SafeERC20.Contract.contract.Call(opts, result, method, params...)
  8240  }
  8241  
  8242  // Transfer initiates a plain transaction to move funds to the contract, calling
  8243  // its default method if one is available.
  8244  func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8245  	return _SafeERC20.Contract.contract.Transfer(opts)
  8246  }
  8247  
  8248  // Transact invokes the (paid) contract method with params as input values.
  8249  func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8250  	return _SafeERC20.Contract.contract.Transact(opts, method, params...)
  8251  }
  8252  
  8253  // SafeMathABI is the input ABI used to generate the binding from.
  8254  const SafeMathABI = "[]"
  8255  
  8256  // SafeMathBin is the compiled bytecode used for deploying new contracts.
  8257  var SafeMathBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582045f810ccb41cd151344ccf006ddfbe7c3c58a867d26e345c6576ae09178171dc64736f6c634300050c0032"
  8258  
  8259  // DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it.
  8260  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
  8261  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  8262  	if err != nil {
  8263  		return common.Address{}, nil, nil, err
  8264  	}
  8265  
  8266  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
  8267  	if err != nil {
  8268  		return common.Address{}, nil, nil, err
  8269  	}
  8270  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  8271  }
  8272  
  8273  // SafeMath is an auto generated Go binding around an Ethereum contract.
  8274  type SafeMath struct {
  8275  	SafeMathCaller     // Read-only binding to the contract
  8276  	SafeMathTransactor // Write-only binding to the contract
  8277  	SafeMathFilterer   // Log filterer for contract events
  8278  }
  8279  
  8280  // SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract.
  8281  type SafeMathCaller struct {
  8282  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8283  }
  8284  
  8285  // SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
  8286  type SafeMathTransactor struct {
  8287  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8288  }
  8289  
  8290  // SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8291  type SafeMathFilterer struct {
  8292  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8293  }
  8294  
  8295  // SafeMathSession is an auto generated Go binding around an Ethereum contract,
  8296  // with pre-set call and transact options.
  8297  type SafeMathSession struct {
  8298  	Contract     *SafeMath         // Generic contract binding to set the session for
  8299  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8300  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8301  }
  8302  
  8303  // SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8304  // with pre-set call options.
  8305  type SafeMathCallerSession struct {
  8306  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
  8307  	CallOpts bind.CallOpts   // Call options to use throughout this session
  8308  }
  8309  
  8310  // SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8311  // with pre-set transact options.
  8312  type SafeMathTransactorSession struct {
  8313  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
  8314  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  8315  }
  8316  
  8317  // SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract.
  8318  type SafeMathRaw struct {
  8319  	Contract *SafeMath // Generic contract binding to access the raw methods on
  8320  }
  8321  
  8322  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8323  type SafeMathCallerRaw struct {
  8324  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
  8325  }
  8326  
  8327  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8328  type SafeMathTransactorRaw struct {
  8329  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
  8330  }
  8331  
  8332  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
  8333  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
  8334  	contract, err := bindSafeMath(address, backend, backend, backend)
  8335  	if err != nil {
  8336  		return nil, err
  8337  	}
  8338  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  8339  }
  8340  
  8341  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
  8342  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
  8343  	contract, err := bindSafeMath(address, caller, nil, nil)
  8344  	if err != nil {
  8345  		return nil, err
  8346  	}
  8347  	return &SafeMathCaller{contract: contract}, nil
  8348  }
  8349  
  8350  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
  8351  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
  8352  	contract, err := bindSafeMath(address, nil, transactor, nil)
  8353  	if err != nil {
  8354  		return nil, err
  8355  	}
  8356  	return &SafeMathTransactor{contract: contract}, nil
  8357  }
  8358  
  8359  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
  8360  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
  8361  	contract, err := bindSafeMath(address, nil, nil, filterer)
  8362  	if err != nil {
  8363  		return nil, err
  8364  	}
  8365  	return &SafeMathFilterer{contract: contract}, nil
  8366  }
  8367  
  8368  // bindSafeMath binds a generic wrapper to an already deployed contract.
  8369  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8370  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  8371  	if err != nil {
  8372  		return nil, err
  8373  	}
  8374  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8375  }
  8376  
  8377  // Call invokes the (constant) contract method with params as input values and
  8378  // sets the output to result. The result type might be a single field for simple
  8379  // returns, a slice of interfaces for anonymous returns and a struct for named
  8380  // returns.
  8381  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8382  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
  8383  }
  8384  
  8385  // Transfer initiates a plain transaction to move funds to the contract, calling
  8386  // its default method if one is available.
  8387  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8388  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
  8389  }
  8390  
  8391  // Transact invokes the (paid) contract method with params as input values.
  8392  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8393  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
  8394  }
  8395  
  8396  // Call invokes the (constant) contract method with params as input values and
  8397  // sets the output to result. The result type might be a single field for simple
  8398  // returns, a slice of interfaces for anonymous returns and a struct for named
  8399  // returns.
  8400  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8401  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
  8402  }
  8403  
  8404  // Transfer initiates a plain transaction to move funds to the contract, calling
  8405  // its default method if one is available.
  8406  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8407  	return _SafeMath.Contract.contract.Transfer(opts)
  8408  }
  8409  
  8410  // Transact invokes the (paid) contract method with params as input values.
  8411  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8412  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
  8413  }
  8414  
  8415  // SeigManagerIABI is the input ABI used to generate the binding from.
  8416  const SeigManagerIABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"DEFAULT_FACTOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"additionalTotBurnAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"coinages\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"commissionRates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"deployCoinage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"depositManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"lastCommitBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastSeigBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"onCommit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onDeposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onWithdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pausedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"powerton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"commission\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isCommissionRateNegative\",\"type\":\"bool\"}],\"name\":\"setCommissionRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"stakeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tot\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"uncomittedStakeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"unpausedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"wton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  8417  
  8418  // SeigManagerIFuncSigs maps the 4-byte function signature to its string representation.
  8419  var SeigManagerIFuncSigs = map[string]string{
  8420  	"8bf91dc4": "DEFAULT_FACTOR()",
  8421  	"48c8577e": "additionalTotBurnAmount(address,address,uint256)",
  8422  	"4c063c19": "coinages(address)",
  8423  	"7b056c1b": "commissionRates(address)",
  8424  	"833a774f": "deployCoinage(address)",
  8425  	"6c7ac9d8": "depositManager()",
  8426  	"c59f1046": "lastCommitBlock(address)",
  8427  	"f35c89e8": "lastSeigBlock()",
  8428  	"359c4d59": "onCommit()",
  8429  	"412c6d50": "onDeposit(address,address,uint256)",
  8430  	"4a393149": "onTransfer(address,address,uint256)",
  8431  	"f850ffaa": "onWithdraw(address,address,uint256)",
  8432  	"32053c99": "pausedBlock()",
  8433  	"3e832e1d": "powerton()",
  8434  	"7b103999": "registry()",
  8435  	"5f40a349": "seigPerBlock()",
  8436  	"4224ed66": "setCommissionRate(address,uint256,bool)",
  8437  	"ce4cb876": "stakeOf(address,address)",
  8438  	"cc48b947": "ton()",
  8439  	"a16d6aa7": "tot()",
  8440  	"fa9789c8": "uncomittedStakeOf(address,address)",
  8441  	"1cc47890": "unpausedBlock()",
  8442  	"8d62d949": "wton()",
  8443  }
  8444  
  8445  // SeigManagerI is an auto generated Go binding around an Ethereum contract.
  8446  type SeigManagerI struct {
  8447  	SeigManagerICaller     // Read-only binding to the contract
  8448  	SeigManagerITransactor // Write-only binding to the contract
  8449  	SeigManagerIFilterer   // Log filterer for contract events
  8450  }
  8451  
  8452  // SeigManagerICaller is an auto generated read-only Go binding around an Ethereum contract.
  8453  type SeigManagerICaller struct {
  8454  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8455  }
  8456  
  8457  // SeigManagerITransactor is an auto generated write-only Go binding around an Ethereum contract.
  8458  type SeigManagerITransactor struct {
  8459  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8460  }
  8461  
  8462  // SeigManagerIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8463  type SeigManagerIFilterer struct {
  8464  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8465  }
  8466  
  8467  // SeigManagerISession is an auto generated Go binding around an Ethereum contract,
  8468  // with pre-set call and transact options.
  8469  type SeigManagerISession struct {
  8470  	Contract     *SeigManagerI     // Generic contract binding to set the session for
  8471  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8472  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8473  }
  8474  
  8475  // SeigManagerICallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8476  // with pre-set call options.
  8477  type SeigManagerICallerSession struct {
  8478  	Contract *SeigManagerICaller // Generic contract caller binding to set the session for
  8479  	CallOpts bind.CallOpts       // Call options to use throughout this session
  8480  }
  8481  
  8482  // SeigManagerITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8483  // with pre-set transact options.
  8484  type SeigManagerITransactorSession struct {
  8485  	Contract     *SeigManagerITransactor // Generic contract transactor binding to set the session for
  8486  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  8487  }
  8488  
  8489  // SeigManagerIRaw is an auto generated low-level Go binding around an Ethereum contract.
  8490  type SeigManagerIRaw struct {
  8491  	Contract *SeigManagerI // Generic contract binding to access the raw methods on
  8492  }
  8493  
  8494  // SeigManagerICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8495  type SeigManagerICallerRaw struct {
  8496  	Contract *SeigManagerICaller // Generic read-only contract binding to access the raw methods on
  8497  }
  8498  
  8499  // SeigManagerITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8500  type SeigManagerITransactorRaw struct {
  8501  	Contract *SeigManagerITransactor // Generic write-only contract binding to access the raw methods on
  8502  }
  8503  
  8504  // NewSeigManagerI creates a new instance of SeigManagerI, bound to a specific deployed contract.
  8505  func NewSeigManagerI(address common.Address, backend bind.ContractBackend) (*SeigManagerI, error) {
  8506  	contract, err := bindSeigManagerI(address, backend, backend, backend)
  8507  	if err != nil {
  8508  		return nil, err
  8509  	}
  8510  	return &SeigManagerI{SeigManagerICaller: SeigManagerICaller{contract: contract}, SeigManagerITransactor: SeigManagerITransactor{contract: contract}, SeigManagerIFilterer: SeigManagerIFilterer{contract: contract}}, nil
  8511  }
  8512  
  8513  // NewSeigManagerICaller creates a new read-only instance of SeigManagerI, bound to a specific deployed contract.
  8514  func NewSeigManagerICaller(address common.Address, caller bind.ContractCaller) (*SeigManagerICaller, error) {
  8515  	contract, err := bindSeigManagerI(address, caller, nil, nil)
  8516  	if err != nil {
  8517  		return nil, err
  8518  	}
  8519  	return &SeigManagerICaller{contract: contract}, nil
  8520  }
  8521  
  8522  // NewSeigManagerITransactor creates a new write-only instance of SeigManagerI, bound to a specific deployed contract.
  8523  func NewSeigManagerITransactor(address common.Address, transactor bind.ContractTransactor) (*SeigManagerITransactor, error) {
  8524  	contract, err := bindSeigManagerI(address, nil, transactor, nil)
  8525  	if err != nil {
  8526  		return nil, err
  8527  	}
  8528  	return &SeigManagerITransactor{contract: contract}, nil
  8529  }
  8530  
  8531  // NewSeigManagerIFilterer creates a new log filterer instance of SeigManagerI, bound to a specific deployed contract.
  8532  func NewSeigManagerIFilterer(address common.Address, filterer bind.ContractFilterer) (*SeigManagerIFilterer, error) {
  8533  	contract, err := bindSeigManagerI(address, nil, nil, filterer)
  8534  	if err != nil {
  8535  		return nil, err
  8536  	}
  8537  	return &SeigManagerIFilterer{contract: contract}, nil
  8538  }
  8539  
  8540  // bindSeigManagerI binds a generic wrapper to an already deployed contract.
  8541  func bindSeigManagerI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8542  	parsed, err := abi.JSON(strings.NewReader(SeigManagerIABI))
  8543  	if err != nil {
  8544  		return nil, err
  8545  	}
  8546  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8547  }
  8548  
  8549  // Call invokes the (constant) contract method with params as input values and
  8550  // sets the output to result. The result type might be a single field for simple
  8551  // returns, a slice of interfaces for anonymous returns and a struct for named
  8552  // returns.
  8553  func (_SeigManagerI *SeigManagerIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8554  	return _SeigManagerI.Contract.SeigManagerICaller.contract.Call(opts, result, method, params...)
  8555  }
  8556  
  8557  // Transfer initiates a plain transaction to move funds to the contract, calling
  8558  // its default method if one is available.
  8559  func (_SeigManagerI *SeigManagerIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8560  	return _SeigManagerI.Contract.SeigManagerITransactor.contract.Transfer(opts)
  8561  }
  8562  
  8563  // Transact invokes the (paid) contract method with params as input values.
  8564  func (_SeigManagerI *SeigManagerIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8565  	return _SeigManagerI.Contract.SeigManagerITransactor.contract.Transact(opts, method, params...)
  8566  }
  8567  
  8568  // Call invokes the (constant) contract method with params as input values and
  8569  // sets the output to result. The result type might be a single field for simple
  8570  // returns, a slice of interfaces for anonymous returns and a struct for named
  8571  // returns.
  8572  func (_SeigManagerI *SeigManagerICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8573  	return _SeigManagerI.Contract.contract.Call(opts, result, method, params...)
  8574  }
  8575  
  8576  // Transfer initiates a plain transaction to move funds to the contract, calling
  8577  // its default method if one is available.
  8578  func (_SeigManagerI *SeigManagerITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8579  	return _SeigManagerI.Contract.contract.Transfer(opts)
  8580  }
  8581  
  8582  // Transact invokes the (paid) contract method with params as input values.
  8583  func (_SeigManagerI *SeigManagerITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8584  	return _SeigManagerI.Contract.contract.Transact(opts, method, params...)
  8585  }
  8586  
  8587  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
  8588  //
  8589  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
  8590  func (_SeigManagerI *SeigManagerICaller) DEFAULTFACTOR(opts *bind.CallOpts) (*big.Int, error) {
  8591  	var (
  8592  		ret0 = new(*big.Int)
  8593  	)
  8594  	out := ret0
  8595  	err := _SeigManagerI.contract.Call(opts, out, "DEFAULT_FACTOR")
  8596  	return *ret0, err
  8597  }
  8598  
  8599  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
  8600  //
  8601  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
  8602  func (_SeigManagerI *SeigManagerISession) DEFAULTFACTOR() (*big.Int, error) {
  8603  	return _SeigManagerI.Contract.DEFAULTFACTOR(&_SeigManagerI.CallOpts)
  8604  }
  8605  
  8606  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
  8607  //
  8608  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
  8609  func (_SeigManagerI *SeigManagerICallerSession) DEFAULTFACTOR() (*big.Int, error) {
  8610  	return _SeigManagerI.Contract.DEFAULTFACTOR(&_SeigManagerI.CallOpts)
  8611  }
  8612  
  8613  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
  8614  //
  8615  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
  8616  func (_SeigManagerI *SeigManagerICaller) AdditionalTotBurnAmount(opts *bind.CallOpts, rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
  8617  	var (
  8618  		ret0 = new(*big.Int)
  8619  	)
  8620  	out := ret0
  8621  	err := _SeigManagerI.contract.Call(opts, out, "additionalTotBurnAmount", rootchain, account, amount)
  8622  	return *ret0, err
  8623  }
  8624  
  8625  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
  8626  //
  8627  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
  8628  func (_SeigManagerI *SeigManagerISession) AdditionalTotBurnAmount(rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
  8629  	return _SeigManagerI.Contract.AdditionalTotBurnAmount(&_SeigManagerI.CallOpts, rootchain, account, amount)
  8630  }
  8631  
  8632  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
  8633  //
  8634  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
  8635  func (_SeigManagerI *SeigManagerICallerSession) AdditionalTotBurnAmount(rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
  8636  	return _SeigManagerI.Contract.AdditionalTotBurnAmount(&_SeigManagerI.CallOpts, rootchain, account, amount)
  8637  }
  8638  
  8639  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
  8640  //
  8641  // Solidity: function coinages(address rootchain) constant returns(address)
  8642  func (_SeigManagerI *SeigManagerICaller) Coinages(opts *bind.CallOpts, rootchain common.Address) (common.Address, error) {
  8643  	var (
  8644  		ret0 = new(common.Address)
  8645  	)
  8646  	out := ret0
  8647  	err := _SeigManagerI.contract.Call(opts, out, "coinages", rootchain)
  8648  	return *ret0, err
  8649  }
  8650  
  8651  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
  8652  //
  8653  // Solidity: function coinages(address rootchain) constant returns(address)
  8654  func (_SeigManagerI *SeigManagerISession) Coinages(rootchain common.Address) (common.Address, error) {
  8655  	return _SeigManagerI.Contract.Coinages(&_SeigManagerI.CallOpts, rootchain)
  8656  }
  8657  
  8658  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
  8659  //
  8660  // Solidity: function coinages(address rootchain) constant returns(address)
  8661  func (_SeigManagerI *SeigManagerICallerSession) Coinages(rootchain common.Address) (common.Address, error) {
  8662  	return _SeigManagerI.Contract.Coinages(&_SeigManagerI.CallOpts, rootchain)
  8663  }
  8664  
  8665  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
  8666  //
  8667  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
  8668  func (_SeigManagerI *SeigManagerICaller) CommissionRates(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
  8669  	var (
  8670  		ret0 = new(*big.Int)
  8671  	)
  8672  	out := ret0
  8673  	err := _SeigManagerI.contract.Call(opts, out, "commissionRates", rootchain)
  8674  	return *ret0, err
  8675  }
  8676  
  8677  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
  8678  //
  8679  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
  8680  func (_SeigManagerI *SeigManagerISession) CommissionRates(rootchain common.Address) (*big.Int, error) {
  8681  	return _SeigManagerI.Contract.CommissionRates(&_SeigManagerI.CallOpts, rootchain)
  8682  }
  8683  
  8684  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
  8685  //
  8686  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
  8687  func (_SeigManagerI *SeigManagerICallerSession) CommissionRates(rootchain common.Address) (*big.Int, error) {
  8688  	return _SeigManagerI.Contract.CommissionRates(&_SeigManagerI.CallOpts, rootchain)
  8689  }
  8690  
  8691  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
  8692  //
  8693  // Solidity: function depositManager() constant returns(address)
  8694  func (_SeigManagerI *SeigManagerICaller) DepositManager(opts *bind.CallOpts) (common.Address, error) {
  8695  	var (
  8696  		ret0 = new(common.Address)
  8697  	)
  8698  	out := ret0
  8699  	err := _SeigManagerI.contract.Call(opts, out, "depositManager")
  8700  	return *ret0, err
  8701  }
  8702  
  8703  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
  8704  //
  8705  // Solidity: function depositManager() constant returns(address)
  8706  func (_SeigManagerI *SeigManagerISession) DepositManager() (common.Address, error) {
  8707  	return _SeigManagerI.Contract.DepositManager(&_SeigManagerI.CallOpts)
  8708  }
  8709  
  8710  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
  8711  //
  8712  // Solidity: function depositManager() constant returns(address)
  8713  func (_SeigManagerI *SeigManagerICallerSession) DepositManager() (common.Address, error) {
  8714  	return _SeigManagerI.Contract.DepositManager(&_SeigManagerI.CallOpts)
  8715  }
  8716  
  8717  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
  8718  //
  8719  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
  8720  func (_SeigManagerI *SeigManagerICaller) LastCommitBlock(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
  8721  	var (
  8722  		ret0 = new(*big.Int)
  8723  	)
  8724  	out := ret0
  8725  	err := _SeigManagerI.contract.Call(opts, out, "lastCommitBlock", rootchain)
  8726  	return *ret0, err
  8727  }
  8728  
  8729  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
  8730  //
  8731  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
  8732  func (_SeigManagerI *SeigManagerISession) LastCommitBlock(rootchain common.Address) (*big.Int, error) {
  8733  	return _SeigManagerI.Contract.LastCommitBlock(&_SeigManagerI.CallOpts, rootchain)
  8734  }
  8735  
  8736  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
  8737  //
  8738  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
  8739  func (_SeigManagerI *SeigManagerICallerSession) LastCommitBlock(rootchain common.Address) (*big.Int, error) {
  8740  	return _SeigManagerI.Contract.LastCommitBlock(&_SeigManagerI.CallOpts, rootchain)
  8741  }
  8742  
  8743  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
  8744  //
  8745  // Solidity: function lastSeigBlock() constant returns(uint256)
  8746  func (_SeigManagerI *SeigManagerICaller) LastSeigBlock(opts *bind.CallOpts) (*big.Int, error) {
  8747  	var (
  8748  		ret0 = new(*big.Int)
  8749  	)
  8750  	out := ret0
  8751  	err := _SeigManagerI.contract.Call(opts, out, "lastSeigBlock")
  8752  	return *ret0, err
  8753  }
  8754  
  8755  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
  8756  //
  8757  // Solidity: function lastSeigBlock() constant returns(uint256)
  8758  func (_SeigManagerI *SeigManagerISession) LastSeigBlock() (*big.Int, error) {
  8759  	return _SeigManagerI.Contract.LastSeigBlock(&_SeigManagerI.CallOpts)
  8760  }
  8761  
  8762  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
  8763  //
  8764  // Solidity: function lastSeigBlock() constant returns(uint256)
  8765  func (_SeigManagerI *SeigManagerICallerSession) LastSeigBlock() (*big.Int, error) {
  8766  	return _SeigManagerI.Contract.LastSeigBlock(&_SeigManagerI.CallOpts)
  8767  }
  8768  
  8769  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
  8770  //
  8771  // Solidity: function pausedBlock() constant returns(uint256)
  8772  func (_SeigManagerI *SeigManagerICaller) PausedBlock(opts *bind.CallOpts) (*big.Int, error) {
  8773  	var (
  8774  		ret0 = new(*big.Int)
  8775  	)
  8776  	out := ret0
  8777  	err := _SeigManagerI.contract.Call(opts, out, "pausedBlock")
  8778  	return *ret0, err
  8779  }
  8780  
  8781  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
  8782  //
  8783  // Solidity: function pausedBlock() constant returns(uint256)
  8784  func (_SeigManagerI *SeigManagerISession) PausedBlock() (*big.Int, error) {
  8785  	return _SeigManagerI.Contract.PausedBlock(&_SeigManagerI.CallOpts)
  8786  }
  8787  
  8788  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
  8789  //
  8790  // Solidity: function pausedBlock() constant returns(uint256)
  8791  func (_SeigManagerI *SeigManagerICallerSession) PausedBlock() (*big.Int, error) {
  8792  	return _SeigManagerI.Contract.PausedBlock(&_SeigManagerI.CallOpts)
  8793  }
  8794  
  8795  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
  8796  //
  8797  // Solidity: function powerton() constant returns(address)
  8798  func (_SeigManagerI *SeigManagerICaller) Powerton(opts *bind.CallOpts) (common.Address, error) {
  8799  	var (
  8800  		ret0 = new(common.Address)
  8801  	)
  8802  	out := ret0
  8803  	err := _SeigManagerI.contract.Call(opts, out, "powerton")
  8804  	return *ret0, err
  8805  }
  8806  
  8807  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
  8808  //
  8809  // Solidity: function powerton() constant returns(address)
  8810  func (_SeigManagerI *SeigManagerISession) Powerton() (common.Address, error) {
  8811  	return _SeigManagerI.Contract.Powerton(&_SeigManagerI.CallOpts)
  8812  }
  8813  
  8814  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
  8815  //
  8816  // Solidity: function powerton() constant returns(address)
  8817  func (_SeigManagerI *SeigManagerICallerSession) Powerton() (common.Address, error) {
  8818  	return _SeigManagerI.Contract.Powerton(&_SeigManagerI.CallOpts)
  8819  }
  8820  
  8821  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  8822  //
  8823  // Solidity: function registry() constant returns(address)
  8824  func (_SeigManagerI *SeigManagerICaller) Registry(opts *bind.CallOpts) (common.Address, error) {
  8825  	var (
  8826  		ret0 = new(common.Address)
  8827  	)
  8828  	out := ret0
  8829  	err := _SeigManagerI.contract.Call(opts, out, "registry")
  8830  	return *ret0, err
  8831  }
  8832  
  8833  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  8834  //
  8835  // Solidity: function registry() constant returns(address)
  8836  func (_SeigManagerI *SeigManagerISession) Registry() (common.Address, error) {
  8837  	return _SeigManagerI.Contract.Registry(&_SeigManagerI.CallOpts)
  8838  }
  8839  
  8840  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  8841  //
  8842  // Solidity: function registry() constant returns(address)
  8843  func (_SeigManagerI *SeigManagerICallerSession) Registry() (common.Address, error) {
  8844  	return _SeigManagerI.Contract.Registry(&_SeigManagerI.CallOpts)
  8845  }
  8846  
  8847  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
  8848  //
  8849  // Solidity: function seigPerBlock() constant returns(uint256)
  8850  func (_SeigManagerI *SeigManagerICaller) SeigPerBlock(opts *bind.CallOpts) (*big.Int, error) {
  8851  	var (
  8852  		ret0 = new(*big.Int)
  8853  	)
  8854  	out := ret0
  8855  	err := _SeigManagerI.contract.Call(opts, out, "seigPerBlock")
  8856  	return *ret0, err
  8857  }
  8858  
  8859  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
  8860  //
  8861  // Solidity: function seigPerBlock() constant returns(uint256)
  8862  func (_SeigManagerI *SeigManagerISession) SeigPerBlock() (*big.Int, error) {
  8863  	return _SeigManagerI.Contract.SeigPerBlock(&_SeigManagerI.CallOpts)
  8864  }
  8865  
  8866  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
  8867  //
  8868  // Solidity: function seigPerBlock() constant returns(uint256)
  8869  func (_SeigManagerI *SeigManagerICallerSession) SeigPerBlock() (*big.Int, error) {
  8870  	return _SeigManagerI.Contract.SeigPerBlock(&_SeigManagerI.CallOpts)
  8871  }
  8872  
  8873  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
  8874  //
  8875  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
  8876  func (_SeigManagerI *SeigManagerICaller) StakeOf(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  8877  	var (
  8878  		ret0 = new(*big.Int)
  8879  	)
  8880  	out := ret0
  8881  	err := _SeigManagerI.contract.Call(opts, out, "stakeOf", rootchain, account)
  8882  	return *ret0, err
  8883  }
  8884  
  8885  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
  8886  //
  8887  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
  8888  func (_SeigManagerI *SeigManagerISession) StakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
  8889  	return _SeigManagerI.Contract.StakeOf(&_SeigManagerI.CallOpts, rootchain, account)
  8890  }
  8891  
  8892  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
  8893  //
  8894  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
  8895  func (_SeigManagerI *SeigManagerICallerSession) StakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
  8896  	return _SeigManagerI.Contract.StakeOf(&_SeigManagerI.CallOpts, rootchain, account)
  8897  }
  8898  
  8899  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
  8900  //
  8901  // Solidity: function ton() constant returns(address)
  8902  func (_SeigManagerI *SeigManagerICaller) Ton(opts *bind.CallOpts) (common.Address, error) {
  8903  	var (
  8904  		ret0 = new(common.Address)
  8905  	)
  8906  	out := ret0
  8907  	err := _SeigManagerI.contract.Call(opts, out, "ton")
  8908  	return *ret0, err
  8909  }
  8910  
  8911  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
  8912  //
  8913  // Solidity: function ton() constant returns(address)
  8914  func (_SeigManagerI *SeigManagerISession) Ton() (common.Address, error) {
  8915  	return _SeigManagerI.Contract.Ton(&_SeigManagerI.CallOpts)
  8916  }
  8917  
  8918  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
  8919  //
  8920  // Solidity: function ton() constant returns(address)
  8921  func (_SeigManagerI *SeigManagerICallerSession) Ton() (common.Address, error) {
  8922  	return _SeigManagerI.Contract.Ton(&_SeigManagerI.CallOpts)
  8923  }
  8924  
  8925  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
  8926  //
  8927  // Solidity: function tot() constant returns(address)
  8928  func (_SeigManagerI *SeigManagerICaller) Tot(opts *bind.CallOpts) (common.Address, error) {
  8929  	var (
  8930  		ret0 = new(common.Address)
  8931  	)
  8932  	out := ret0
  8933  	err := _SeigManagerI.contract.Call(opts, out, "tot")
  8934  	return *ret0, err
  8935  }
  8936  
  8937  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
  8938  //
  8939  // Solidity: function tot() constant returns(address)
  8940  func (_SeigManagerI *SeigManagerISession) Tot() (common.Address, error) {
  8941  	return _SeigManagerI.Contract.Tot(&_SeigManagerI.CallOpts)
  8942  }
  8943  
  8944  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
  8945  //
  8946  // Solidity: function tot() constant returns(address)
  8947  func (_SeigManagerI *SeigManagerICallerSession) Tot() (common.Address, error) {
  8948  	return _SeigManagerI.Contract.Tot(&_SeigManagerI.CallOpts)
  8949  }
  8950  
  8951  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
  8952  //
  8953  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
  8954  func (_SeigManagerI *SeigManagerICaller) UncomittedStakeOf(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  8955  	var (
  8956  		ret0 = new(*big.Int)
  8957  	)
  8958  	out := ret0
  8959  	err := _SeigManagerI.contract.Call(opts, out, "uncomittedStakeOf", rootchain, account)
  8960  	return *ret0, err
  8961  }
  8962  
  8963  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
  8964  //
  8965  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
  8966  func (_SeigManagerI *SeigManagerISession) UncomittedStakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
  8967  	return _SeigManagerI.Contract.UncomittedStakeOf(&_SeigManagerI.CallOpts, rootchain, account)
  8968  }
  8969  
  8970  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
  8971  //
  8972  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
  8973  func (_SeigManagerI *SeigManagerICallerSession) UncomittedStakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
  8974  	return _SeigManagerI.Contract.UncomittedStakeOf(&_SeigManagerI.CallOpts, rootchain, account)
  8975  }
  8976  
  8977  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
  8978  //
  8979  // Solidity: function unpausedBlock() constant returns(uint256)
  8980  func (_SeigManagerI *SeigManagerICaller) UnpausedBlock(opts *bind.CallOpts) (*big.Int, error) {
  8981  	var (
  8982  		ret0 = new(*big.Int)
  8983  	)
  8984  	out := ret0
  8985  	err := _SeigManagerI.contract.Call(opts, out, "unpausedBlock")
  8986  	return *ret0, err
  8987  }
  8988  
  8989  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
  8990  //
  8991  // Solidity: function unpausedBlock() constant returns(uint256)
  8992  func (_SeigManagerI *SeigManagerISession) UnpausedBlock() (*big.Int, error) {
  8993  	return _SeigManagerI.Contract.UnpausedBlock(&_SeigManagerI.CallOpts)
  8994  }
  8995  
  8996  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
  8997  //
  8998  // Solidity: function unpausedBlock() constant returns(uint256)
  8999  func (_SeigManagerI *SeigManagerICallerSession) UnpausedBlock() (*big.Int, error) {
  9000  	return _SeigManagerI.Contract.UnpausedBlock(&_SeigManagerI.CallOpts)
  9001  }
  9002  
  9003  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  9004  //
  9005  // Solidity: function wton() constant returns(address)
  9006  func (_SeigManagerI *SeigManagerICaller) Wton(opts *bind.CallOpts) (common.Address, error) {
  9007  	var (
  9008  		ret0 = new(common.Address)
  9009  	)
  9010  	out := ret0
  9011  	err := _SeigManagerI.contract.Call(opts, out, "wton")
  9012  	return *ret0, err
  9013  }
  9014  
  9015  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  9016  //
  9017  // Solidity: function wton() constant returns(address)
  9018  func (_SeigManagerI *SeigManagerISession) Wton() (common.Address, error) {
  9019  	return _SeigManagerI.Contract.Wton(&_SeigManagerI.CallOpts)
  9020  }
  9021  
  9022  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  9023  //
  9024  // Solidity: function wton() constant returns(address)
  9025  func (_SeigManagerI *SeigManagerICallerSession) Wton() (common.Address, error) {
  9026  	return _SeigManagerI.Contract.Wton(&_SeigManagerI.CallOpts)
  9027  }
  9028  
  9029  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
  9030  //
  9031  // Solidity: function deployCoinage(address rootchain) returns(bool)
  9032  func (_SeigManagerI *SeigManagerITransactor) DeployCoinage(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
  9033  	return _SeigManagerI.contract.Transact(opts, "deployCoinage", rootchain)
  9034  }
  9035  
  9036  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
  9037  //
  9038  // Solidity: function deployCoinage(address rootchain) returns(bool)
  9039  func (_SeigManagerI *SeigManagerISession) DeployCoinage(rootchain common.Address) (*types.Transaction, error) {
  9040  	return _SeigManagerI.Contract.DeployCoinage(&_SeigManagerI.TransactOpts, rootchain)
  9041  }
  9042  
  9043  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
  9044  //
  9045  // Solidity: function deployCoinage(address rootchain) returns(bool)
  9046  func (_SeigManagerI *SeigManagerITransactorSession) DeployCoinage(rootchain common.Address) (*types.Transaction, error) {
  9047  	return _SeigManagerI.Contract.DeployCoinage(&_SeigManagerI.TransactOpts, rootchain)
  9048  }
  9049  
  9050  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
  9051  //
  9052  // Solidity: function onCommit() returns(bool)
  9053  func (_SeigManagerI *SeigManagerITransactor) OnCommit(opts *bind.TransactOpts) (*types.Transaction, error) {
  9054  	return _SeigManagerI.contract.Transact(opts, "onCommit")
  9055  }
  9056  
  9057  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
  9058  //
  9059  // Solidity: function onCommit() returns(bool)
  9060  func (_SeigManagerI *SeigManagerISession) OnCommit() (*types.Transaction, error) {
  9061  	return _SeigManagerI.Contract.OnCommit(&_SeigManagerI.TransactOpts)
  9062  }
  9063  
  9064  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
  9065  //
  9066  // Solidity: function onCommit() returns(bool)
  9067  func (_SeigManagerI *SeigManagerITransactorSession) OnCommit() (*types.Transaction, error) {
  9068  	return _SeigManagerI.Contract.OnCommit(&_SeigManagerI.TransactOpts)
  9069  }
  9070  
  9071  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
  9072  //
  9073  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
  9074  func (_SeigManagerI *SeigManagerITransactor) OnDeposit(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  9075  	return _SeigManagerI.contract.Transact(opts, "onDeposit", rootchain, account, amount)
  9076  }
  9077  
  9078  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
  9079  //
  9080  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
  9081  func (_SeigManagerI *SeigManagerISession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  9082  	return _SeigManagerI.Contract.OnDeposit(&_SeigManagerI.TransactOpts, rootchain, account, amount)
  9083  }
  9084  
  9085  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
  9086  //
  9087  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
  9088  func (_SeigManagerI *SeigManagerITransactorSession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  9089  	return _SeigManagerI.Contract.OnDeposit(&_SeigManagerI.TransactOpts, rootchain, account, amount)
  9090  }
  9091  
  9092  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  9093  //
  9094  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
  9095  func (_SeigManagerI *SeigManagerITransactor) OnTransfer(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9096  	return _SeigManagerI.contract.Transact(opts, "onTransfer", sender, recipient, amount)
  9097  }
  9098  
  9099  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  9100  //
  9101  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
  9102  func (_SeigManagerI *SeigManagerISession) OnTransfer(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9103  	return _SeigManagerI.Contract.OnTransfer(&_SeigManagerI.TransactOpts, sender, recipient, amount)
  9104  }
  9105  
  9106  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  9107  //
  9108  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
  9109  func (_SeigManagerI *SeigManagerITransactorSession) OnTransfer(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9110  	return _SeigManagerI.Contract.OnTransfer(&_SeigManagerI.TransactOpts, sender, recipient, amount)
  9111  }
  9112  
  9113  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
  9114  //
  9115  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
  9116  func (_SeigManagerI *SeigManagerITransactor) OnWithdraw(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  9117  	return _SeigManagerI.contract.Transact(opts, "onWithdraw", rootchain, account, amount)
  9118  }
  9119  
  9120  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
  9121  //
  9122  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
  9123  func (_SeigManagerI *SeigManagerISession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  9124  	return _SeigManagerI.Contract.OnWithdraw(&_SeigManagerI.TransactOpts, rootchain, account, amount)
  9125  }
  9126  
  9127  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
  9128  //
  9129  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
  9130  func (_SeigManagerI *SeigManagerITransactorSession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
  9131  	return _SeigManagerI.Contract.OnWithdraw(&_SeigManagerI.TransactOpts, rootchain, account, amount)
  9132  }
  9133  
  9134  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
  9135  //
  9136  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
  9137  func (_SeigManagerI *SeigManagerITransactor) SetCommissionRate(opts *bind.TransactOpts, rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  9138  	return _SeigManagerI.contract.Transact(opts, "setCommissionRate", rootchain, commission, isCommissionRateNegative)
  9139  }
  9140  
  9141  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
  9142  //
  9143  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
  9144  func (_SeigManagerI *SeigManagerISession) SetCommissionRate(rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  9145  	return _SeigManagerI.Contract.SetCommissionRate(&_SeigManagerI.TransactOpts, rootchain, commission, isCommissionRateNegative)
  9146  }
  9147  
  9148  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
  9149  //
  9150  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
  9151  func (_SeigManagerI *SeigManagerITransactorSession) SetCommissionRate(rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
  9152  	return _SeigManagerI.Contract.SetCommissionRate(&_SeigManagerI.TransactOpts, rootchain, commission, isCommissionRateNegative)
  9153  }
  9154  
  9155  // SeigTokenABI is the input ABI used to generate the binding from.
  9156  const SeigTokenABI = "[{\"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\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\"},{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"contractSeigManagerI\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractSeigManagerI\",\"name\":\"_seigManager\",\"type\":\"address\"}],\"name\":\"setSeigManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  9157  
  9158  // SeigTokenFuncSigs maps the 4-byte function signature to its string representation.
  9159  var SeigTokenFuncSigs = map[string]string{
  9160  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
  9161  	"dd62ed3e": "allowance(address,address)",
  9162  	"095ea7b3": "approve(address,uint256)",
  9163  	"cae9ca51": "approveAndCall(address,uint256,bytes)",
  9164  	"70a08231": "balanceOf(address)",
  9165  	"a457c2d7": "decreaseAllowance(address,uint256)",
  9166  	"39509351": "increaseAllowance(address,uint256)",
  9167  	"8f32d59b": "isOwner()",
  9168  	"8da5cb5b": "owner()",
  9169  	"5f112c68": "renounceMinter(address)",
  9170  	"715018a6": "renounceOwnership()",
  9171  	"38bf3cfa": "renounceOwnership(address)",
  9172  	"41eb24bb": "renouncePauser(address)",
  9173  	"6fb7f558": "seigManager()",
  9174  	"7657f20a": "setSeigManager(address)",
  9175  	"18160ddd": "totalSupply()",
  9176  	"a9059cbb": "transfer(address,uint256)",
  9177  	"23b872dd": "transferFrom(address,address,uint256)",
  9178  	"f2fde38b": "transferOwnership(address)",
  9179  	"6d435421": "transferOwnership(address,address)",
  9180  }
  9181  
  9182  // SeigTokenBin is the compiled bytecode used for deploying new contracts.
  9183  var SeigTokenBin = "0x608060405260006100176001600160e01b0361006a16565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6114e68061007d6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d71461033c578063a9059cbb14610368578063cae9ca5114610394578063dd62ed3e1461044f578063f2fde38b1461047d5761012c565b806370a08231146102d8578063715018a6146102fe5780637657f20a146103065780638da5cb5b1461032c5780638f32d59b146103345761012c565b806341eb24bb116100f457806341eb24bb146102155780635f112c681461023b5780636cd28f9a146102615780636d435421146102865780636fb7f558146102b45761012c565b8063095ea7b31461013157806318160ddd1461017157806323b872dd1461018b57806338bf3cfa146101c157806339509351146101e9575b600080fd5b61015d6004803603604081101561014757600080fd5b506001600160a01b0381351690602001356104a3565b604080519115158252519081900360200190f35b6101796104c0565b60408051918252519081900360200190f35b61015d600480360360608110156101a157600080fd5b506001600160a01b038135811691602081013590911690604001356104c6565b6101e7600480360360208110156101d757600080fd5b50356001600160a01b0316610554565b005b61015d600480360360408110156101ff57600080fd5b506001600160a01b0381351690602001356105f1565b6101e76004803603602081101561022b57600080fd5b50356001600160a01b0316610645565b6101e76004803603602081101561025157600080fd5b50356001600160a01b03166106c7565b610269610749565b604080516001600160e01b03199092168252519081900360200190f35b6101e76004803603604081101561029c57600080fd5b506001600160a01b0381358116916020013516610764565b6102bc61081f565b604080516001600160a01b039092168252519081900360200190f35b610179600480360360208110156102ee57600080fd5b50356001600160a01b031661082e565b6101e7610849565b6101e76004803603602081101561031c57600080fd5b50356001600160a01b03166108da565b6102bc610943565b61015d610952565b61015d6004803603604081101561035257600080fd5b506001600160a01b038135169060200135610978565b61015d6004803603604081101561037e57600080fd5b506001600160a01b0381351690602001356109e6565b61015d600480360360608110156103aa57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156103da57600080fd5b8201836020820111156103ec57600080fd5b8035906020019184600183028401116401000000008311171561040e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109fa945050505050565b6101796004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610a1b565b6101e76004803603602081101561049357600080fd5b50356001600160a01b0316610a46565b60006104b76104b0610a99565b8484610a9d565b50600192915050565b60025490565b60006104d3848484610b89565b610549846104df610a99565b610544856040518060600160405280602881526020016113fc602891396001600160a01b038a1660009081526001602052604081209061051d610a99565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610bf316565b610a9d565b5060015b9392505050565b61055c610952565b61059b576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050505050565b60006104b76105fe610a99565b84610544856001600061060f610a99565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610c8a16565b61064d610952565b61068c576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b806001600160a01b0316636ef8d66d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105d657600080fd5b6106cf610952565b61070e576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105d657600080fd5b6040518060286113a482396028019050604051809103902081565b61076c610952565b6107ab576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561080357600080fd5b505af1158015610817573d6000803e3d6000fd5b505050505050565b6004546001600160a01b031681565b6001600160a01b031660009081526020819052604090205490565b610851610952565b610890576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b6108e2610952565b610921576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031690565b6003546000906001600160a01b0316610969610a99565b6001600160a01b031614905090565b60006104b7610985610a99565b846105448560405180606001604052806025815260200161148d60259139600160006109af610a99565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610bf316565b60006104b76109f3610a99565b8484610b89565b6000610a0684846104a3565b610a0f57600080fd5b61054d33858585610ce4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a4e610952565b610a8d576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b610a9681610f3a565b50565b3390565b6001600160a01b038316610ae25760405162461bcd60e51b81526004018080602001828103825260248152602001806114696024913960400191505060405180910390fd5b6001600160a01b038216610b275760405162461bcd60e51b815260040180806020018281038252602281526020018061132b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b336001600160a01b0384161480610ba85750336001600160a01b038316145b610be35760405162461bcd60e51b81526004018080602001828103825260308152602001806113cc6030913960400191505060405180910390fd5b610bee838383610fdb565b505050565b60008184841115610c825760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c47578181015183820152602001610c2f565b50505050905090810190601f168015610c745780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561054d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b610d068360405180806113a46028913960280190506040518091039020611137565b610d415760405162461bcd60e51b815260040180806020018281038252603181526020018061134d6031913960400191505060405180910390fd5b60006060846001600160a01b031660405180806113a460289139602801905060405180910390208787878760405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610de2578181015183820152602001610dca565b50505050905090810190601f168015610e0f5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b60208310610e775780518252601f199092019160209182019101610e58565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ed9576040519150601f19603f3d011682016040523d82523d6000602084013e610ede565b606091505b5091509150818190610f315760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c47578181015183820152602001610c2f565b50505050505050565b6001600160a01b038116610f7f5760405162461bcd60e51b81526004018080602001828103825260268152602001806113056026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110205760405162461bcd60e51b81526004018080602001828103825260258152602001806114446025913960400191505060405180910390fd5b6001600160a01b0382166110655760405162461bcd60e51b81526004018080602001828103825260238152602001806112e26023913960400191505060405180910390fd5b6110a88160405180606001604052806026815260200161137e602691396001600160a01b038616600090815260208190526040902054919063ffffffff610bf316565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546110dd908263ffffffff610c8a16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061114283611153565b801561054d575061054d8383611187565b6000611166826301ffc9a760e01b611187565b8015611181575061117f826001600160e01b0319611187565b155b92915050565b600080600061119685856111ad565b915091508180156111a45750805b95945050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b602083106112355780518252601f199092019160209182019101611216565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d8060008114611296576040519150601f19603f3d011682016040523d82523d6000602084013e61129b565b606091505b50915091506020815110156112b957600080945094505050506112da565b818180602001905160208110156112cf57600080fd5b505190955093505050505b925092905056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332304f6e417070726f76653a207370656e64657220646f65736e277420737570706f7274206f6e417070726f766545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f6e417070726f766528616464726573732c616464726573732c75696e743235362c62797465732953656967546f6b656e3a206f6e6c792073656e646572206f7220726563697069656e742063616e207472616e7366657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582076279835faafec28aae7facfa0911aaea8f78f2ebf1707778dba15d0dbc0713964736f6c634300050c0032"
  9184  
  9185  // DeploySeigToken deploys a new Ethereum contract, binding an instance of SeigToken to it.
  9186  func DeploySeigToken(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SeigToken, error) {
  9187  	parsed, err := abi.JSON(strings.NewReader(SeigTokenABI))
  9188  	if err != nil {
  9189  		return common.Address{}, nil, nil, err
  9190  	}
  9191  
  9192  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SeigTokenBin), backend)
  9193  	if err != nil {
  9194  		return common.Address{}, nil, nil, err
  9195  	}
  9196  	return address, tx, &SeigToken{SeigTokenCaller: SeigTokenCaller{contract: contract}, SeigTokenTransactor: SeigTokenTransactor{contract: contract}, SeigTokenFilterer: SeigTokenFilterer{contract: contract}}, nil
  9197  }
  9198  
  9199  // SeigToken is an auto generated Go binding around an Ethereum contract.
  9200  type SeigToken struct {
  9201  	SeigTokenCaller     // Read-only binding to the contract
  9202  	SeigTokenTransactor // Write-only binding to the contract
  9203  	SeigTokenFilterer   // Log filterer for contract events
  9204  }
  9205  
  9206  // SeigTokenCaller is an auto generated read-only Go binding around an Ethereum contract.
  9207  type SeigTokenCaller struct {
  9208  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9209  }
  9210  
  9211  // SeigTokenTransactor is an auto generated write-only Go binding around an Ethereum contract.
  9212  type SeigTokenTransactor struct {
  9213  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9214  }
  9215  
  9216  // SeigTokenFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  9217  type SeigTokenFilterer struct {
  9218  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9219  }
  9220  
  9221  // SeigTokenSession is an auto generated Go binding around an Ethereum contract,
  9222  // with pre-set call and transact options.
  9223  type SeigTokenSession struct {
  9224  	Contract     *SeigToken        // Generic contract binding to set the session for
  9225  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  9226  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  9227  }
  9228  
  9229  // SeigTokenCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  9230  // with pre-set call options.
  9231  type SeigTokenCallerSession struct {
  9232  	Contract *SeigTokenCaller // Generic contract caller binding to set the session for
  9233  	CallOpts bind.CallOpts    // Call options to use throughout this session
  9234  }
  9235  
  9236  // SeigTokenTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  9237  // with pre-set transact options.
  9238  type SeigTokenTransactorSession struct {
  9239  	Contract     *SeigTokenTransactor // Generic contract transactor binding to set the session for
  9240  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  9241  }
  9242  
  9243  // SeigTokenRaw is an auto generated low-level Go binding around an Ethereum contract.
  9244  type SeigTokenRaw struct {
  9245  	Contract *SeigToken // Generic contract binding to access the raw methods on
  9246  }
  9247  
  9248  // SeigTokenCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  9249  type SeigTokenCallerRaw struct {
  9250  	Contract *SeigTokenCaller // Generic read-only contract binding to access the raw methods on
  9251  }
  9252  
  9253  // SeigTokenTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  9254  type SeigTokenTransactorRaw struct {
  9255  	Contract *SeigTokenTransactor // Generic write-only contract binding to access the raw methods on
  9256  }
  9257  
  9258  // NewSeigToken creates a new instance of SeigToken, bound to a specific deployed contract.
  9259  func NewSeigToken(address common.Address, backend bind.ContractBackend) (*SeigToken, error) {
  9260  	contract, err := bindSeigToken(address, backend, backend, backend)
  9261  	if err != nil {
  9262  		return nil, err
  9263  	}
  9264  	return &SeigToken{SeigTokenCaller: SeigTokenCaller{contract: contract}, SeigTokenTransactor: SeigTokenTransactor{contract: contract}, SeigTokenFilterer: SeigTokenFilterer{contract: contract}}, nil
  9265  }
  9266  
  9267  // NewSeigTokenCaller creates a new read-only instance of SeigToken, bound to a specific deployed contract.
  9268  func NewSeigTokenCaller(address common.Address, caller bind.ContractCaller) (*SeigTokenCaller, error) {
  9269  	contract, err := bindSeigToken(address, caller, nil, nil)
  9270  	if err != nil {
  9271  		return nil, err
  9272  	}
  9273  	return &SeigTokenCaller{contract: contract}, nil
  9274  }
  9275  
  9276  // NewSeigTokenTransactor creates a new write-only instance of SeigToken, bound to a specific deployed contract.
  9277  func NewSeigTokenTransactor(address common.Address, transactor bind.ContractTransactor) (*SeigTokenTransactor, error) {
  9278  	contract, err := bindSeigToken(address, nil, transactor, nil)
  9279  	if err != nil {
  9280  		return nil, err
  9281  	}
  9282  	return &SeigTokenTransactor{contract: contract}, nil
  9283  }
  9284  
  9285  // NewSeigTokenFilterer creates a new log filterer instance of SeigToken, bound to a specific deployed contract.
  9286  func NewSeigTokenFilterer(address common.Address, filterer bind.ContractFilterer) (*SeigTokenFilterer, error) {
  9287  	contract, err := bindSeigToken(address, nil, nil, filterer)
  9288  	if err != nil {
  9289  		return nil, err
  9290  	}
  9291  	return &SeigTokenFilterer{contract: contract}, nil
  9292  }
  9293  
  9294  // bindSeigToken binds a generic wrapper to an already deployed contract.
  9295  func bindSeigToken(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9296  	parsed, err := abi.JSON(strings.NewReader(SeigTokenABI))
  9297  	if err != nil {
  9298  		return nil, err
  9299  	}
  9300  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  9301  }
  9302  
  9303  // Call invokes the (constant) contract method with params as input values and
  9304  // sets the output to result. The result type might be a single field for simple
  9305  // returns, a slice of interfaces for anonymous returns and a struct for named
  9306  // returns.
  9307  func (_SeigToken *SeigTokenRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9308  	return _SeigToken.Contract.SeigTokenCaller.contract.Call(opts, result, method, params...)
  9309  }
  9310  
  9311  // Transfer initiates a plain transaction to move funds to the contract, calling
  9312  // its default method if one is available.
  9313  func (_SeigToken *SeigTokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9314  	return _SeigToken.Contract.SeigTokenTransactor.contract.Transfer(opts)
  9315  }
  9316  
  9317  // Transact invokes the (paid) contract method with params as input values.
  9318  func (_SeigToken *SeigTokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9319  	return _SeigToken.Contract.SeigTokenTransactor.contract.Transact(opts, method, params...)
  9320  }
  9321  
  9322  // Call invokes the (constant) contract method with params as input values and
  9323  // sets the output to result. The result type might be a single field for simple
  9324  // returns, a slice of interfaces for anonymous returns and a struct for named
  9325  // returns.
  9326  func (_SeigToken *SeigTokenCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9327  	return _SeigToken.Contract.contract.Call(opts, result, method, params...)
  9328  }
  9329  
  9330  // Transfer initiates a plain transaction to move funds to the contract, calling
  9331  // its default method if one is available.
  9332  func (_SeigToken *SeigTokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9333  	return _SeigToken.Contract.contract.Transfer(opts)
  9334  }
  9335  
  9336  // Transact invokes the (paid) contract method with params as input values.
  9337  func (_SeigToken *SeigTokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9338  	return _SeigToken.Contract.contract.Transact(opts, method, params...)
  9339  }
  9340  
  9341  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  9342  //
  9343  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  9344  func (_SeigToken *SeigTokenCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
  9345  	var (
  9346  		ret0 = new([4]byte)
  9347  	)
  9348  	out := ret0
  9349  	err := _SeigToken.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
  9350  	return *ret0, err
  9351  }
  9352  
  9353  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  9354  //
  9355  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  9356  func (_SeigToken *SeigTokenSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  9357  	return _SeigToken.Contract.INTERFACEIDONAPPROVE(&_SeigToken.CallOpts)
  9358  }
  9359  
  9360  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  9361  //
  9362  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  9363  func (_SeigToken *SeigTokenCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  9364  	return _SeigToken.Contract.INTERFACEIDONAPPROVE(&_SeigToken.CallOpts)
  9365  }
  9366  
  9367  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  9368  //
  9369  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  9370  func (_SeigToken *SeigTokenCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  9371  	var (
  9372  		ret0 = new(*big.Int)
  9373  	)
  9374  	out := ret0
  9375  	err := _SeigToken.contract.Call(opts, out, "allowance", owner, spender)
  9376  	return *ret0, err
  9377  }
  9378  
  9379  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  9380  //
  9381  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  9382  func (_SeigToken *SeigTokenSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  9383  	return _SeigToken.Contract.Allowance(&_SeigToken.CallOpts, owner, spender)
  9384  }
  9385  
  9386  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  9387  //
  9388  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  9389  func (_SeigToken *SeigTokenCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  9390  	return _SeigToken.Contract.Allowance(&_SeigToken.CallOpts, owner, spender)
  9391  }
  9392  
  9393  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9394  //
  9395  // Solidity: function balanceOf(address account) constant returns(uint256)
  9396  func (_SeigToken *SeigTokenCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  9397  	var (
  9398  		ret0 = new(*big.Int)
  9399  	)
  9400  	out := ret0
  9401  	err := _SeigToken.contract.Call(opts, out, "balanceOf", account)
  9402  	return *ret0, err
  9403  }
  9404  
  9405  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9406  //
  9407  // Solidity: function balanceOf(address account) constant returns(uint256)
  9408  func (_SeigToken *SeigTokenSession) BalanceOf(account common.Address) (*big.Int, error) {
  9409  	return _SeigToken.Contract.BalanceOf(&_SeigToken.CallOpts, account)
  9410  }
  9411  
  9412  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9413  //
  9414  // Solidity: function balanceOf(address account) constant returns(uint256)
  9415  func (_SeigToken *SeigTokenCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  9416  	return _SeigToken.Contract.BalanceOf(&_SeigToken.CallOpts, account)
  9417  }
  9418  
  9419  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  9420  //
  9421  // Solidity: function isOwner() constant returns(bool)
  9422  func (_SeigToken *SeigTokenCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  9423  	var (
  9424  		ret0 = new(bool)
  9425  	)
  9426  	out := ret0
  9427  	err := _SeigToken.contract.Call(opts, out, "isOwner")
  9428  	return *ret0, err
  9429  }
  9430  
  9431  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  9432  //
  9433  // Solidity: function isOwner() constant returns(bool)
  9434  func (_SeigToken *SeigTokenSession) IsOwner() (bool, error) {
  9435  	return _SeigToken.Contract.IsOwner(&_SeigToken.CallOpts)
  9436  }
  9437  
  9438  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  9439  //
  9440  // Solidity: function isOwner() constant returns(bool)
  9441  func (_SeigToken *SeigTokenCallerSession) IsOwner() (bool, error) {
  9442  	return _SeigToken.Contract.IsOwner(&_SeigToken.CallOpts)
  9443  }
  9444  
  9445  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9446  //
  9447  // Solidity: function owner() constant returns(address)
  9448  func (_SeigToken *SeigTokenCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  9449  	var (
  9450  		ret0 = new(common.Address)
  9451  	)
  9452  	out := ret0
  9453  	err := _SeigToken.contract.Call(opts, out, "owner")
  9454  	return *ret0, err
  9455  }
  9456  
  9457  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9458  //
  9459  // Solidity: function owner() constant returns(address)
  9460  func (_SeigToken *SeigTokenSession) Owner() (common.Address, error) {
  9461  	return _SeigToken.Contract.Owner(&_SeigToken.CallOpts)
  9462  }
  9463  
  9464  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9465  //
  9466  // Solidity: function owner() constant returns(address)
  9467  func (_SeigToken *SeigTokenCallerSession) Owner() (common.Address, error) {
  9468  	return _SeigToken.Contract.Owner(&_SeigToken.CallOpts)
  9469  }
  9470  
  9471  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  9472  //
  9473  // Solidity: function seigManager() constant returns(address)
  9474  func (_SeigToken *SeigTokenCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
  9475  	var (
  9476  		ret0 = new(common.Address)
  9477  	)
  9478  	out := ret0
  9479  	err := _SeigToken.contract.Call(opts, out, "seigManager")
  9480  	return *ret0, err
  9481  }
  9482  
  9483  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  9484  //
  9485  // Solidity: function seigManager() constant returns(address)
  9486  func (_SeigToken *SeigTokenSession) SeigManager() (common.Address, error) {
  9487  	return _SeigToken.Contract.SeigManager(&_SeigToken.CallOpts)
  9488  }
  9489  
  9490  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  9491  //
  9492  // Solidity: function seigManager() constant returns(address)
  9493  func (_SeigToken *SeigTokenCallerSession) SeigManager() (common.Address, error) {
  9494  	return _SeigToken.Contract.SeigManager(&_SeigToken.CallOpts)
  9495  }
  9496  
  9497  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9498  //
  9499  // Solidity: function totalSupply() constant returns(uint256)
  9500  func (_SeigToken *SeigTokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  9501  	var (
  9502  		ret0 = new(*big.Int)
  9503  	)
  9504  	out := ret0
  9505  	err := _SeigToken.contract.Call(opts, out, "totalSupply")
  9506  	return *ret0, err
  9507  }
  9508  
  9509  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9510  //
  9511  // Solidity: function totalSupply() constant returns(uint256)
  9512  func (_SeigToken *SeigTokenSession) TotalSupply() (*big.Int, error) {
  9513  	return _SeigToken.Contract.TotalSupply(&_SeigToken.CallOpts)
  9514  }
  9515  
  9516  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9517  //
  9518  // Solidity: function totalSupply() constant returns(uint256)
  9519  func (_SeigToken *SeigTokenCallerSession) TotalSupply() (*big.Int, error) {
  9520  	return _SeigToken.Contract.TotalSupply(&_SeigToken.CallOpts)
  9521  }
  9522  
  9523  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9524  //
  9525  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  9526  func (_SeigToken *SeigTokenTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  9527  	return _SeigToken.contract.Transact(opts, "approve", spender, amount)
  9528  }
  9529  
  9530  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9531  //
  9532  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  9533  func (_SeigToken *SeigTokenSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  9534  	return _SeigToken.Contract.Approve(&_SeigToken.TransactOpts, spender, amount)
  9535  }
  9536  
  9537  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9538  //
  9539  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  9540  func (_SeigToken *SeigTokenTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  9541  	return _SeigToken.Contract.Approve(&_SeigToken.TransactOpts, spender, amount)
  9542  }
  9543  
  9544  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  9545  //
  9546  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  9547  func (_SeigToken *SeigTokenTransactor) ApproveAndCall(opts *bind.TransactOpts, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  9548  	return _SeigToken.contract.Transact(opts, "approveAndCall", spender, amount, data)
  9549  }
  9550  
  9551  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  9552  //
  9553  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  9554  func (_SeigToken *SeigTokenSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  9555  	return _SeigToken.Contract.ApproveAndCall(&_SeigToken.TransactOpts, spender, amount, data)
  9556  }
  9557  
  9558  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  9559  //
  9560  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  9561  func (_SeigToken *SeigTokenTransactorSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  9562  	return _SeigToken.Contract.ApproveAndCall(&_SeigToken.TransactOpts, spender, amount, data)
  9563  }
  9564  
  9565  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  9566  //
  9567  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  9568  func (_SeigToken *SeigTokenTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  9569  	return _SeigToken.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  9570  }
  9571  
  9572  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  9573  //
  9574  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  9575  func (_SeigToken *SeigTokenSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  9576  	return _SeigToken.Contract.DecreaseAllowance(&_SeigToken.TransactOpts, spender, subtractedValue)
  9577  }
  9578  
  9579  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  9580  //
  9581  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  9582  func (_SeigToken *SeigTokenTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  9583  	return _SeigToken.Contract.DecreaseAllowance(&_SeigToken.TransactOpts, spender, subtractedValue)
  9584  }
  9585  
  9586  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  9587  //
  9588  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  9589  func (_SeigToken *SeigTokenTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  9590  	return _SeigToken.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  9591  }
  9592  
  9593  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  9594  //
  9595  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  9596  func (_SeigToken *SeigTokenSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  9597  	return _SeigToken.Contract.IncreaseAllowance(&_SeigToken.TransactOpts, spender, addedValue)
  9598  }
  9599  
  9600  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  9601  //
  9602  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  9603  func (_SeigToken *SeigTokenTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  9604  	return _SeigToken.Contract.IncreaseAllowance(&_SeigToken.TransactOpts, spender, addedValue)
  9605  }
  9606  
  9607  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
  9608  //
  9609  // Solidity: function renounceMinter(address target) returns()
  9610  func (_SeigToken *SeigTokenTransactor) RenounceMinter(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
  9611  	return _SeigToken.contract.Transact(opts, "renounceMinter", target)
  9612  }
  9613  
  9614  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
  9615  //
  9616  // Solidity: function renounceMinter(address target) returns()
  9617  func (_SeigToken *SeigTokenSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
  9618  	return _SeigToken.Contract.RenounceMinter(&_SeigToken.TransactOpts, target)
  9619  }
  9620  
  9621  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
  9622  //
  9623  // Solidity: function renounceMinter(address target) returns()
  9624  func (_SeigToken *SeigTokenTransactorSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
  9625  	return _SeigToken.Contract.RenounceMinter(&_SeigToken.TransactOpts, target)
  9626  }
  9627  
  9628  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
  9629  //
  9630  // Solidity: function renounceOwnership(address target) returns()
  9631  func (_SeigToken *SeigTokenTransactor) RenounceOwnership(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
  9632  	return _SeigToken.contract.Transact(opts, "renounceOwnership", target)
  9633  }
  9634  
  9635  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
  9636  //
  9637  // Solidity: function renounceOwnership(address target) returns()
  9638  func (_SeigToken *SeigTokenSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
  9639  	return _SeigToken.Contract.RenounceOwnership(&_SeigToken.TransactOpts, target)
  9640  }
  9641  
  9642  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
  9643  //
  9644  // Solidity: function renounceOwnership(address target) returns()
  9645  func (_SeigToken *SeigTokenTransactorSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
  9646  	return _SeigToken.Contract.RenounceOwnership(&_SeigToken.TransactOpts, target)
  9647  }
  9648  
  9649  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
  9650  //
  9651  // Solidity: function renounceOwnership() returns()
  9652  func (_SeigToken *SeigTokenTransactor) RenounceOwnership0(opts *bind.TransactOpts) (*types.Transaction, error) {
  9653  	return _SeigToken.contract.Transact(opts, "renounceOwnership0")
  9654  }
  9655  
  9656  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
  9657  //
  9658  // Solidity: function renounceOwnership() returns()
  9659  func (_SeigToken *SeigTokenSession) RenounceOwnership0() (*types.Transaction, error) {
  9660  	return _SeigToken.Contract.RenounceOwnership0(&_SeigToken.TransactOpts)
  9661  }
  9662  
  9663  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
  9664  //
  9665  // Solidity: function renounceOwnership() returns()
  9666  func (_SeigToken *SeigTokenTransactorSession) RenounceOwnership0() (*types.Transaction, error) {
  9667  	return _SeigToken.Contract.RenounceOwnership0(&_SeigToken.TransactOpts)
  9668  }
  9669  
  9670  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
  9671  //
  9672  // Solidity: function renouncePauser(address target) returns()
  9673  func (_SeigToken *SeigTokenTransactor) RenouncePauser(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
  9674  	return _SeigToken.contract.Transact(opts, "renouncePauser", target)
  9675  }
  9676  
  9677  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
  9678  //
  9679  // Solidity: function renouncePauser(address target) returns()
  9680  func (_SeigToken *SeigTokenSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
  9681  	return _SeigToken.Contract.RenouncePauser(&_SeigToken.TransactOpts, target)
  9682  }
  9683  
  9684  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
  9685  //
  9686  // Solidity: function renouncePauser(address target) returns()
  9687  func (_SeigToken *SeigTokenTransactorSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
  9688  	return _SeigToken.Contract.RenouncePauser(&_SeigToken.TransactOpts, target)
  9689  }
  9690  
  9691  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  9692  //
  9693  // Solidity: function setSeigManager(address _seigManager) returns()
  9694  func (_SeigToken *SeigTokenTransactor) SetSeigManager(opts *bind.TransactOpts, _seigManager common.Address) (*types.Transaction, error) {
  9695  	return _SeigToken.contract.Transact(opts, "setSeigManager", _seigManager)
  9696  }
  9697  
  9698  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  9699  //
  9700  // Solidity: function setSeigManager(address _seigManager) returns()
  9701  func (_SeigToken *SeigTokenSession) SetSeigManager(_seigManager common.Address) (*types.Transaction, error) {
  9702  	return _SeigToken.Contract.SetSeigManager(&_SeigToken.TransactOpts, _seigManager)
  9703  }
  9704  
  9705  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  9706  //
  9707  // Solidity: function setSeigManager(address _seigManager) returns()
  9708  func (_SeigToken *SeigTokenTransactorSession) SetSeigManager(_seigManager common.Address) (*types.Transaction, error) {
  9709  	return _SeigToken.Contract.SetSeigManager(&_SeigToken.TransactOpts, _seigManager)
  9710  }
  9711  
  9712  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  9713  //
  9714  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  9715  func (_SeigToken *SeigTokenTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9716  	return _SeigToken.contract.Transact(opts, "transfer", recipient, amount)
  9717  }
  9718  
  9719  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  9720  //
  9721  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  9722  func (_SeigToken *SeigTokenSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9723  	return _SeigToken.Contract.Transfer(&_SeigToken.TransactOpts, recipient, amount)
  9724  }
  9725  
  9726  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  9727  //
  9728  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  9729  func (_SeigToken *SeigTokenTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9730  	return _SeigToken.Contract.Transfer(&_SeigToken.TransactOpts, recipient, amount)
  9731  }
  9732  
  9733  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  9734  //
  9735  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  9736  func (_SeigToken *SeigTokenTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9737  	return _SeigToken.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  9738  }
  9739  
  9740  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  9741  //
  9742  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  9743  func (_SeigToken *SeigTokenSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9744  	return _SeigToken.Contract.TransferFrom(&_SeigToken.TransactOpts, sender, recipient, amount)
  9745  }
  9746  
  9747  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  9748  //
  9749  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  9750  func (_SeigToken *SeigTokenTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  9751  	return _SeigToken.Contract.TransferFrom(&_SeigToken.TransactOpts, sender, recipient, amount)
  9752  }
  9753  
  9754  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
  9755  //
  9756  // Solidity: function transferOwnership(address target, address newOwner) returns()
  9757  func (_SeigToken *SeigTokenTransactor) TransferOwnership(opts *bind.TransactOpts, target common.Address, newOwner common.Address) (*types.Transaction, error) {
  9758  	return _SeigToken.contract.Transact(opts, "transferOwnership", target, newOwner)
  9759  }
  9760  
  9761  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
  9762  //
  9763  // Solidity: function transferOwnership(address target, address newOwner) returns()
  9764  func (_SeigToken *SeigTokenSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
  9765  	return _SeigToken.Contract.TransferOwnership(&_SeigToken.TransactOpts, target, newOwner)
  9766  }
  9767  
  9768  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
  9769  //
  9770  // Solidity: function transferOwnership(address target, address newOwner) returns()
  9771  func (_SeigToken *SeigTokenTransactorSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
  9772  	return _SeigToken.Contract.TransferOwnership(&_SeigToken.TransactOpts, target, newOwner)
  9773  }
  9774  
  9775  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
  9776  //
  9777  // Solidity: function transferOwnership(address newOwner) returns()
  9778  func (_SeigToken *SeigTokenTransactor) TransferOwnership0(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  9779  	return _SeigToken.contract.Transact(opts, "transferOwnership0", newOwner)
  9780  }
  9781  
  9782  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
  9783  //
  9784  // Solidity: function transferOwnership(address newOwner) returns()
  9785  func (_SeigToken *SeigTokenSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
  9786  	return _SeigToken.Contract.TransferOwnership0(&_SeigToken.TransactOpts, newOwner)
  9787  }
  9788  
  9789  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
  9790  //
  9791  // Solidity: function transferOwnership(address newOwner) returns()
  9792  func (_SeigToken *SeigTokenTransactorSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
  9793  	return _SeigToken.Contract.TransferOwnership0(&_SeigToken.TransactOpts, newOwner)
  9794  }
  9795  
  9796  // SeigTokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the SeigToken contract.
  9797  type SeigTokenApprovalIterator struct {
  9798  	Event *SeigTokenApproval // Event containing the contract specifics and raw log
  9799  
  9800  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9801  	event    string              // Event name to use for unpacking event data
  9802  
  9803  	logs chan types.Log        // Log channel receiving the found contract events
  9804  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9805  	done bool                  // Whether the subscription completed delivering logs
  9806  	fail error                 // Occurred error to stop iteration
  9807  }
  9808  
  9809  // Next advances the iterator to the subsequent event, returning whether there
  9810  // are any more events found. In case of a retrieval or parsing error, false is
  9811  // returned and Error() can be queried for the exact failure.
  9812  func (it *SeigTokenApprovalIterator) Next() bool {
  9813  	// If the iterator failed, stop iterating
  9814  	if it.fail != nil {
  9815  		return false
  9816  	}
  9817  	// If the iterator completed, deliver directly whatever's available
  9818  	if it.done {
  9819  		select {
  9820  		case log := <-it.logs:
  9821  			it.Event = new(SeigTokenApproval)
  9822  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9823  				it.fail = err
  9824  				return false
  9825  			}
  9826  			it.Event.Raw = log
  9827  			return true
  9828  
  9829  		default:
  9830  			return false
  9831  		}
  9832  	}
  9833  	// Iterator still in progress, wait for either a data or an error event
  9834  	select {
  9835  	case log := <-it.logs:
  9836  		it.Event = new(SeigTokenApproval)
  9837  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9838  			it.fail = err
  9839  			return false
  9840  		}
  9841  		it.Event.Raw = log
  9842  		return true
  9843  
  9844  	case err := <-it.sub.Err():
  9845  		it.done = true
  9846  		it.fail = err
  9847  		return it.Next()
  9848  	}
  9849  }
  9850  
  9851  // Error returns any retrieval or parsing error occurred during filtering.
  9852  func (it *SeigTokenApprovalIterator) Error() error {
  9853  	return it.fail
  9854  }
  9855  
  9856  // Close terminates the iteration process, releasing any pending underlying
  9857  // resources.
  9858  func (it *SeigTokenApprovalIterator) Close() error {
  9859  	it.sub.Unsubscribe()
  9860  	return nil
  9861  }
  9862  
  9863  // SeigTokenApproval represents a Approval event raised by the SeigToken contract.
  9864  type SeigTokenApproval struct {
  9865  	Owner   common.Address
  9866  	Spender common.Address
  9867  	Value   *big.Int
  9868  	Raw     types.Log // Blockchain specific contextual infos
  9869  }
  9870  
  9871  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  9872  //
  9873  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  9874  func (_SeigToken *SeigTokenFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*SeigTokenApprovalIterator, error) {
  9875  
  9876  	var ownerRule []interface{}
  9877  	for _, ownerItem := range owner {
  9878  		ownerRule = append(ownerRule, ownerItem)
  9879  	}
  9880  	var spenderRule []interface{}
  9881  	for _, spenderItem := range spender {
  9882  		spenderRule = append(spenderRule, spenderItem)
  9883  	}
  9884  
  9885  	logs, sub, err := _SeigToken.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  9886  	if err != nil {
  9887  		return nil, err
  9888  	}
  9889  	return &SeigTokenApprovalIterator{contract: _SeigToken.contract, event: "Approval", logs: logs, sub: sub}, nil
  9890  }
  9891  
  9892  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  9893  //
  9894  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  9895  func (_SeigToken *SeigTokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *SeigTokenApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  9896  
  9897  	var ownerRule []interface{}
  9898  	for _, ownerItem := range owner {
  9899  		ownerRule = append(ownerRule, ownerItem)
  9900  	}
  9901  	var spenderRule []interface{}
  9902  	for _, spenderItem := range spender {
  9903  		spenderRule = append(spenderRule, spenderItem)
  9904  	}
  9905  
  9906  	logs, sub, err := _SeigToken.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  9907  	if err != nil {
  9908  		return nil, err
  9909  	}
  9910  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9911  		defer sub.Unsubscribe()
  9912  		for {
  9913  			select {
  9914  			case log := <-logs:
  9915  				// New log arrived, parse the event and forward to the user
  9916  				event := new(SeigTokenApproval)
  9917  				if err := _SeigToken.contract.UnpackLog(event, "Approval", log); err != nil {
  9918  					return err
  9919  				}
  9920  				event.Raw = log
  9921  
  9922  				select {
  9923  				case sink <- event:
  9924  				case err := <-sub.Err():
  9925  					return err
  9926  				case <-quit:
  9927  					return nil
  9928  				}
  9929  			case err := <-sub.Err():
  9930  				return err
  9931  			case <-quit:
  9932  				return nil
  9933  			}
  9934  		}
  9935  	}), nil
  9936  }
  9937  
  9938  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  9939  //
  9940  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  9941  func (_SeigToken *SeigTokenFilterer) ParseApproval(log types.Log) (*SeigTokenApproval, error) {
  9942  	event := new(SeigTokenApproval)
  9943  	if err := _SeigToken.contract.UnpackLog(event, "Approval", log); err != nil {
  9944  		return nil, err
  9945  	}
  9946  	return event, nil
  9947  }
  9948  
  9949  // SeigTokenOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the SeigToken contract.
  9950  type SeigTokenOwnershipTransferredIterator struct {
  9951  	Event *SeigTokenOwnershipTransferred // Event containing the contract specifics and raw log
  9952  
  9953  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9954  	event    string              // Event name to use for unpacking event data
  9955  
  9956  	logs chan types.Log        // Log channel receiving the found contract events
  9957  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9958  	done bool                  // Whether the subscription completed delivering logs
  9959  	fail error                 // Occurred error to stop iteration
  9960  }
  9961  
  9962  // Next advances the iterator to the subsequent event, returning whether there
  9963  // are any more events found. In case of a retrieval or parsing error, false is
  9964  // returned and Error() can be queried for the exact failure.
  9965  func (it *SeigTokenOwnershipTransferredIterator) Next() bool {
  9966  	// If the iterator failed, stop iterating
  9967  	if it.fail != nil {
  9968  		return false
  9969  	}
  9970  	// If the iterator completed, deliver directly whatever's available
  9971  	if it.done {
  9972  		select {
  9973  		case log := <-it.logs:
  9974  			it.Event = new(SeigTokenOwnershipTransferred)
  9975  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9976  				it.fail = err
  9977  				return false
  9978  			}
  9979  			it.Event.Raw = log
  9980  			return true
  9981  
  9982  		default:
  9983  			return false
  9984  		}
  9985  	}
  9986  	// Iterator still in progress, wait for either a data or an error event
  9987  	select {
  9988  	case log := <-it.logs:
  9989  		it.Event = new(SeigTokenOwnershipTransferred)
  9990  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9991  			it.fail = err
  9992  			return false
  9993  		}
  9994  		it.Event.Raw = log
  9995  		return true
  9996  
  9997  	case err := <-it.sub.Err():
  9998  		it.done = true
  9999  		it.fail = err
 10000  		return it.Next()
 10001  	}
 10002  }
 10003  
 10004  // Error returns any retrieval or parsing error occurred during filtering.
 10005  func (it *SeigTokenOwnershipTransferredIterator) Error() error {
 10006  	return it.fail
 10007  }
 10008  
 10009  // Close terminates the iteration process, releasing any pending underlying
 10010  // resources.
 10011  func (it *SeigTokenOwnershipTransferredIterator) Close() error {
 10012  	it.sub.Unsubscribe()
 10013  	return nil
 10014  }
 10015  
 10016  // SeigTokenOwnershipTransferred represents a OwnershipTransferred event raised by the SeigToken contract.
 10017  type SeigTokenOwnershipTransferred struct {
 10018  	PreviousOwner common.Address
 10019  	NewOwner      common.Address
 10020  	Raw           types.Log // Blockchain specific contextual infos
 10021  }
 10022  
 10023  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10024  //
 10025  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10026  func (_SeigToken *SeigTokenFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SeigTokenOwnershipTransferredIterator, error) {
 10027  
 10028  	var previousOwnerRule []interface{}
 10029  	for _, previousOwnerItem := range previousOwner {
 10030  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 10031  	}
 10032  	var newOwnerRule []interface{}
 10033  	for _, newOwnerItem := range newOwner {
 10034  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 10035  	}
 10036  
 10037  	logs, sub, err := _SeigToken.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 10038  	if err != nil {
 10039  		return nil, err
 10040  	}
 10041  	return &SeigTokenOwnershipTransferredIterator{contract: _SeigToken.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 10042  }
 10043  
 10044  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10045  //
 10046  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10047  func (_SeigToken *SeigTokenFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *SeigTokenOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 10048  
 10049  	var previousOwnerRule []interface{}
 10050  	for _, previousOwnerItem := range previousOwner {
 10051  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 10052  	}
 10053  	var newOwnerRule []interface{}
 10054  	for _, newOwnerItem := range newOwner {
 10055  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 10056  	}
 10057  
 10058  	logs, sub, err := _SeigToken.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 10059  	if err != nil {
 10060  		return nil, err
 10061  	}
 10062  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10063  		defer sub.Unsubscribe()
 10064  		for {
 10065  			select {
 10066  			case log := <-logs:
 10067  				// New log arrived, parse the event and forward to the user
 10068  				event := new(SeigTokenOwnershipTransferred)
 10069  				if err := _SeigToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 10070  					return err
 10071  				}
 10072  				event.Raw = log
 10073  
 10074  				select {
 10075  				case sink <- event:
 10076  				case err := <-sub.Err():
 10077  					return err
 10078  				case <-quit:
 10079  					return nil
 10080  				}
 10081  			case err := <-sub.Err():
 10082  				return err
 10083  			case <-quit:
 10084  				return nil
 10085  			}
 10086  		}
 10087  	}), nil
 10088  }
 10089  
 10090  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10091  //
 10092  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10093  func (_SeigToken *SeigTokenFilterer) ParseOwnershipTransferred(log types.Log) (*SeigTokenOwnershipTransferred, error) {
 10094  	event := new(SeigTokenOwnershipTransferred)
 10095  	if err := _SeigToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 10096  		return nil, err
 10097  	}
 10098  	return event, nil
 10099  }
 10100  
 10101  // SeigTokenTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the SeigToken contract.
 10102  type SeigTokenTransferIterator struct {
 10103  	Event *SeigTokenTransfer // Event containing the contract specifics and raw log
 10104  
 10105  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10106  	event    string              // Event name to use for unpacking event data
 10107  
 10108  	logs chan types.Log        // Log channel receiving the found contract events
 10109  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10110  	done bool                  // Whether the subscription completed delivering logs
 10111  	fail error                 // Occurred error to stop iteration
 10112  }
 10113  
 10114  // Next advances the iterator to the subsequent event, returning whether there
 10115  // are any more events found. In case of a retrieval or parsing error, false is
 10116  // returned and Error() can be queried for the exact failure.
 10117  func (it *SeigTokenTransferIterator) Next() bool {
 10118  	// If the iterator failed, stop iterating
 10119  	if it.fail != nil {
 10120  		return false
 10121  	}
 10122  	// If the iterator completed, deliver directly whatever's available
 10123  	if it.done {
 10124  		select {
 10125  		case log := <-it.logs:
 10126  			it.Event = new(SeigTokenTransfer)
 10127  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10128  				it.fail = err
 10129  				return false
 10130  			}
 10131  			it.Event.Raw = log
 10132  			return true
 10133  
 10134  		default:
 10135  			return false
 10136  		}
 10137  	}
 10138  	// Iterator still in progress, wait for either a data or an error event
 10139  	select {
 10140  	case log := <-it.logs:
 10141  		it.Event = new(SeigTokenTransfer)
 10142  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10143  			it.fail = err
 10144  			return false
 10145  		}
 10146  		it.Event.Raw = log
 10147  		return true
 10148  
 10149  	case err := <-it.sub.Err():
 10150  		it.done = true
 10151  		it.fail = err
 10152  		return it.Next()
 10153  	}
 10154  }
 10155  
 10156  // Error returns any retrieval or parsing error occurred during filtering.
 10157  func (it *SeigTokenTransferIterator) Error() error {
 10158  	return it.fail
 10159  }
 10160  
 10161  // Close terminates the iteration process, releasing any pending underlying
 10162  // resources.
 10163  func (it *SeigTokenTransferIterator) Close() error {
 10164  	it.sub.Unsubscribe()
 10165  	return nil
 10166  }
 10167  
 10168  // SeigTokenTransfer represents a Transfer event raised by the SeigToken contract.
 10169  type SeigTokenTransfer struct {
 10170  	From  common.Address
 10171  	To    common.Address
 10172  	Value *big.Int
 10173  	Raw   types.Log // Blockchain specific contextual infos
 10174  }
 10175  
 10176  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10177  //
 10178  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 10179  func (_SeigToken *SeigTokenFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*SeigTokenTransferIterator, error) {
 10180  
 10181  	var fromRule []interface{}
 10182  	for _, fromItem := range from {
 10183  		fromRule = append(fromRule, fromItem)
 10184  	}
 10185  	var toRule []interface{}
 10186  	for _, toItem := range to {
 10187  		toRule = append(toRule, toItem)
 10188  	}
 10189  
 10190  	logs, sub, err := _SeigToken.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 10191  	if err != nil {
 10192  		return nil, err
 10193  	}
 10194  	return &SeigTokenTransferIterator{contract: _SeigToken.contract, event: "Transfer", logs: logs, sub: sub}, nil
 10195  }
 10196  
 10197  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10198  //
 10199  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 10200  func (_SeigToken *SeigTokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *SeigTokenTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 10201  
 10202  	var fromRule []interface{}
 10203  	for _, fromItem := range from {
 10204  		fromRule = append(fromRule, fromItem)
 10205  	}
 10206  	var toRule []interface{}
 10207  	for _, toItem := range to {
 10208  		toRule = append(toRule, toItem)
 10209  	}
 10210  
 10211  	logs, sub, err := _SeigToken.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 10212  	if err != nil {
 10213  		return nil, err
 10214  	}
 10215  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10216  		defer sub.Unsubscribe()
 10217  		for {
 10218  			select {
 10219  			case log := <-logs:
 10220  				// New log arrived, parse the event and forward to the user
 10221  				event := new(SeigTokenTransfer)
 10222  				if err := _SeigToken.contract.UnpackLog(event, "Transfer", log); err != nil {
 10223  					return err
 10224  				}
 10225  				event.Raw = log
 10226  
 10227  				select {
 10228  				case sink <- event:
 10229  				case err := <-sub.Err():
 10230  					return err
 10231  				case <-quit:
 10232  					return nil
 10233  				}
 10234  			case err := <-sub.Err():
 10235  				return err
 10236  			case <-quit:
 10237  				return nil
 10238  			}
 10239  		}
 10240  	}), nil
 10241  }
 10242  
 10243  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10244  //
 10245  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 10246  func (_SeigToken *SeigTokenFilterer) ParseTransfer(log types.Log) (*SeigTokenTransfer, error) {
 10247  	event := new(SeigTokenTransfer)
 10248  	if err := _SeigToken.contract.UnpackLog(event, "Transfer", log); err != nil {
 10249  		return nil, err
 10250  	}
 10251  	return event, nil
 10252  }
 10253  
 10254  // WTONABI is the input ABI used to generate the binding from.
 10255  const WTONABI = "[{\"inputs\":[{\"internalType\":\"contractERC20Mintable\",\"name\":\"_ton\",\"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\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":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\"},{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tonAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onApprove\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"contractSeigManagerI\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractSeigManagerI\",\"name\":\"_seigManager\",\"type\":\"address\"}],\"name\":\"setSeigManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tonAmount\",\"type\":\"uint256\"}],\"name\":\"swapFromTON\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tonAmount\",\"type\":\"uint256\"}],\"name\":\"swapFromTONAndTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"name\":\"swapToTON\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"name\":\"swapToTONAndTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ton\",\"outputs\":[{\"internalType\":\"contractERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 10256  
 10257  // WTONFuncSigs maps the 4-byte function signature to its string representation.
 10258  var WTONFuncSigs = map[string]string{
 10259  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
 10260  	"983b2d56": "addMinter(address)",
 10261  	"dd62ed3e": "allowance(address,address)",
 10262  	"095ea7b3": "approve(address,uint256)",
 10263  	"cae9ca51": "approveAndCall(address,uint256,bytes)",
 10264  	"70a08231": "balanceOf(address)",
 10265  	"42966c68": "burn(uint256)",
 10266  	"79cc6790": "burnFrom(address,uint256)",
 10267  	"313ce567": "decimals()",
 10268  	"a457c2d7": "decreaseAllowance(address,uint256)",
 10269  	"39509351": "increaseAllowance(address,uint256)",
 10270  	"aa271e1a": "isMinter(address)",
 10271  	"8f32d59b": "isOwner()",
 10272  	"40c10f19": "mint(address,uint256)",
 10273  	"06fdde03": "name()",
 10274  	"4273ca16": "onApprove(address,address,uint256,bytes)",
 10275  	"8da5cb5b": "owner()",
 10276  	"98650275": "renounceMinter()",
 10277  	"5f112c68": "renounceMinter(address)",
 10278  	"715018a6": "renounceOwnership()",
 10279  	"38bf3cfa": "renounceOwnership(address)",
 10280  	"41eb24bb": "renouncePauser(address)",
 10281  	"6fb7f558": "seigManager()",
 10282  	"7657f20a": "setSeigManager(address)",
 10283  	"01ffc9a7": "supportsInterface(bytes4)",
 10284  	"e34869d7": "swapFromTON(uint256)",
 10285  	"588420b7": "swapFromTONAndTransfer(address,uint256)",
 10286  	"f53fe70f": "swapToTON(uint256)",
 10287  	"e3b99e85": "swapToTONAndTransfer(address,uint256)",
 10288  	"95d89b41": "symbol()",
 10289  	"cc48b947": "ton()",
 10290  	"18160ddd": "totalSupply()",
 10291  	"a9059cbb": "transfer(address,uint256)",
 10292  	"23b872dd": "transferFrom(address,address,uint256)",
 10293  	"f2fde38b": "transferOwnership(address)",
 10294  	"6d435421": "transferOwnership(address,address)",
 10295  }
 10296  
 10297  // WTONBin is the compiled bytecode used for deploying new contracts.
 10298  var WTONBin = "0x60806040523480156200001157600080fd5b5060405162002dd338038062002dd3833981810160405260208110156200003757600080fd5b5051604080518082018252600b81527f5772617070656420544f4e0000000000000000000000000000000000000000006020828101919091528251808401909352600483527f57544f4e00000000000000000000000000000000000000000000000000000000908301526000805460ff1916600117905590601b620000d7620000c86001600160e01b03620002d616565b6001600160e01b03620002db16565b6000620000ec6001600160e01b03620002d616565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35082516200014f90600690602086019062000526565b5081516200016590600790602085019062000526565b506008805460ff191660ff9290921691909117905550620001a890507f01ffc9a7000000000000000000000000000000000000000000000000000000006200032d565b620001d6604051808062002d896028913960405190819003602801902090506001600160e01b036200032d16565b806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021057600080fd5b505afa15801562000225573d6000803e3d6000fd5b505050506040513d60208110156200023c57600080fd5b505160ff16601214620002b057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f57544f4e3a20646563696d616c73206f6620544f4e206d757374206265203138604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055620005c8565b335b90565b620002f6816004620003fc60201b62001f5f1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620003bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600960205260409020805460ff19166001179055565b6200041182826001600160e01b03620004a316565b156200047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b03821662000506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062002db16022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200056957805160ff191683800117855562000599565b8280016001018555821562000599579182015b82811115620005995782518255916020019190600101906200057c565b50620005a7929150620005ab565b5090565b620002d891905b80821115620005a75760008155600101620005b2565b6127b180620005d86000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063715018a611610125578063a9059cbb116100ad578063dd62ed3e1161007c578063dd62ed3e14610796578063e34869d7146107c4578063e3b99e85146107e1578063f2fde38b1461080d578063f53fe70f146108335761021c565b8063a9059cbb14610681578063aa271e1a146106ad578063cae9ca51146106d3578063cc48b9471461078e5761021c565b80638f32d59b116100f45780638f32d59b1461061757806395d89b411461061f578063983b2d5614610627578063986502751461064d578063a457c2d7146106555761021c565b8063715018a6146105b55780637657f20a146105bd57806379cc6790146105e35780638da5cb5b1461060f5761021c565b806341eb24bb116101a85780635f112c68116101775780635f112c68146104f25780636cd28f9a146105185780636d4354211461053d5780636fb7f5581461056b57806370a082311461058f5761021c565b806341eb24bb146103f35780634273ca161461041957806342966c68146104a9578063588420b7146104c65761021c565b806323b872dd116101ef57806323b872dd1461031f578063313ce5671461035557806338bf3cfa14610373578063395093511461039b57806340c10f19146103c75761021c565b806301ffc9a71461022157806306fdde031461025c578063095ea7b3146102d957806318160ddd14610305575b600080fd5b6102486004803603602081101561023757600080fd5b50356001600160e01b031916610850565b604080519115158252519081900360200190f35b61026461086f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029e578181015183820152602001610286565b50505050905090810190601f1680156102cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610248600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610905565b61030d610922565b60408051918252519081900360200190f35b6102486004803603606081101561033557600080fd5b506001600160a01b03813581169160208101359091169060400135610928565b61035d6109b6565b6040805160ff9092168252519081900360200190f35b6103996004803603602081101561038957600080fd5b50356001600160a01b03166109bf565b005b610248600480360360408110156103b157600080fd5b506001600160a01b038135169060200135610a5c565b610248600480360360408110156103dd57600080fd5b506001600160a01b038135169060200135610ab0565b6103996004803603602081101561040957600080fd5b50356001600160a01b0316610b07565b6102486004803603608081101561042f57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561046a57600080fd5b82018360208201111561047c57600080fd5b8035906020019184600183028401116401000000008311171561049e57600080fd5b509092509050610b89565b610399600480360360208110156104bf57600080fd5b5035610c68565b610248600480360360408110156104dc57600080fd5b506001600160a01b038135169060200135610c7c565b6103996004803603602081101561050857600080fd5b50356001600160a01b0316610cec565b610520610d6e565b604080516001600160e01b03199092168252519081900360200190f35b6103996004803603604081101561055357600080fd5b506001600160a01b0381358116916020013516610d89565b610573610e44565b604080516001600160a01b039092168252519081900360200190f35b61030d600480360360208110156105a557600080fd5b50356001600160a01b0316610e58565b610399610e73565b610399600480360360208110156105d357600080fd5b50356001600160a01b0316610f04565b610399600480360360408110156105f957600080fd5b506001600160a01b038135169060200135610f73565b610573610f9e565b610248610fad565b610264610fd3565b6103996004803603602081101561063d57600080fd5b50356001600160a01b0316611034565b610399611083565b6102486004803603604081101561066b57600080fd5b506001600160a01b038135169060200135611095565b6102486004803603604081101561069757600080fd5b506001600160a01b038135169060200135611103565b610248600480360360208110156106c357600080fd5b50356001600160a01b0316611117565b610248600480360360608110156106e957600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561071957600080fd5b82018360208201111561072b57600080fd5b8035906020019184600183028401116401000000008311171561074d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611130945050505050565b610573611151565b61030d600480360360408110156107ac57600080fd5b506001600160a01b0381358116916020013516611160565b610248600480360360208110156107da57600080fd5b503561118b565b610248600480360360408110156107f757600080fd5b506001600160a01b0381351690602001356111fa565b6103996004803603602081101561082357600080fd5b50356001600160a01b0316611255565b6102486004803603602081101561084957600080fd5b50356112a5565b6001600160e01b03191660009081526009602052604090205460ff1690565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b5050505050905090565b6000610919610912611300565b8484611304565b50600192915050565b60035490565b60006109358484846113f0565b6109ab84610941611300565b6109a685604051806060016040528060288152602001612610602891396001600160a01b038a1660009081526002602052604081209061097f611300565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61145a16565b611304565b5060015b9392505050565b60085460ff1690565b6109c7610fad565b610a06576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4157600080fd5b505af1158015610a55573d6000803e3d6000fd5b5050505050565b6000610919610a69611300565b846109a68560026000610a7a611300565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114f116565b6000610ac2610abd611300565b611117565b610afd5760405162461bcd60e51b81526004018080602001828103825260308152602001806125bf6030913960400191505060405180910390fd5b610919838361154b565b610b0f610fad565b610b4e576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b806001600160a01b0316636ef8d66d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4157600080fd5b600a546000906001600160a01b03163314610bd55760405162461bcd60e51b81526004018080602001828103825260268152602001806127086026913960400191505060405180910390fd5b610be0868786611555565b506000610bec85611587565b9050600080610c3086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159092505050565b91509150610c3f898385611304565b6060610c4a826115b2565b9050610c588a8486846115dc565b5060019998505050505050505050565b610c79610c73611300565b82611832565b50565b6000805460ff16610cc2576040805162461bcd60e51b815260206004820152601f6024820152600080516020612486833981519152604482015290519081900360640190fd5b6000805460ff19169055610cd7338484611555565b90506000805460ff1916600117905592915050565b610cf4610fad565b610d33576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4157600080fd5b60405180602861256782396028019050604051809103902081565b610d91610fad565b610dd0576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050505050565b60085461010090046001600160a01b031681565b6001600160a01b031660009081526001602052604090205490565b610e7b610fad565b610eba576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b610f0c610fad565b610f4b576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b610f7c33611117565b15610f9057610f8b8282611832565b610f9a565b610f9a828261183c565b5050565b6005546001600160a01b031690565b6005546000906001600160a01b0316610fc4611300565b6001600160a01b031614905090565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108fb5780601f106108d0576101008083540402835291602001916108fb565b61103f610abd611300565b61107a5760405162461bcd60e51b81526004018080602001828103825260308152602001806125bf6030913960400191505060405180910390fd5b610c7981611846565b61109361108e611300565b61188e565b565b60006109196110a2611300565b846109a68560405180606001604052806025815260200161275860259139600260006110cc611300565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61145a16565b6000610919611110611300565b84846113f0565b600061112a60048363ffffffff6118d616565b92915050565b600061113c8484610905565b61114557600080fd5b6109af338585856115dc565b600a546001600160a01b031681565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000805460ff166111d1576040805162461bcd60e51b815260206004820152601f6024820152600080516020612486833981519152604482015290519081900360640190fd5b6000805460ff191690556111e6338084611555565b90506000805460ff19166001179055919050565b6000805460ff16611240576040805162461bcd60e51b815260206004820152601f6024820152600080516020612486833981519152604482015290519081900360640190fd5b6000805460ff19169055610cd783338461193d565b61125d610fad565b61129c576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b610c7981611aa2565b6000805460ff166112eb576040805162461bcd60e51b815260206004820152601f6024820152600080516020612486833981519152604482015290519081900360640190fd5b6000805460ff191690556111e633808461193d565b3390565b6001600160a01b0383166113495760405162461bcd60e51b81526004018080602001828103825260248152602001806126e46024913960400191505060405180910390fd5b6001600160a01b03821661138e5760405162461bcd60e51b81526004018080602001828103825260228152602001806124ee6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b336001600160a01b038416148061140f5750336001600160a01b038316145b61144a5760405162461bcd60e51b815260040180806020018281038252603081526020018061258f6030913960400191505060405180910390fd5b611455838383611b43565b505050565b600081848411156114e95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114ae578181015183820152602001611496565b50505050905090810190601f1680156114db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156109af576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b610f9a8282611ca1565b60006115698361156484611587565b61154b565b600a546109ab906001600160a01b031685308563ffffffff611d9316565b633b9aca000290565b60008082516040146115a157600080fd5b505060208101516040909101519091565b60408051602080825281830190925260609160208201818038833950505060208101929092525090565b6115fe8360405180806125676028913960280190506040518091039020611df3565b6116395760405162461bcd60e51b81526004018080602001828103825260318152602001806125106031913960400191505060405180910390fd5b60006060846001600160a01b0316604051808061256760289139602801905060405180910390208787878760405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116da5781810151838201526020016116c2565b50505050905090810190601f1680156117075780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b6020831061176f5780518252601f199092019160209182019101611750565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117d1576040519150601f19603f3d011682016040523d82523d6000602084013e6117d6565b606091505b50915091508181906118295760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114ae578181015183820152602001611496565b50505050505050565b610f9a8282611e0f565b610f9a8282611f0b565b61185760048263ffffffff611f5f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61189f60048263ffffffff611fe016565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661191d5760405162461bcd60e51b81526004018080602001828103825260228152602001806126586022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60006119498383611832565b600061195483612047565b600a54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119a557600080fd5b505afa1580156119b9573d6000803e3d6000fd5b505050506040513d60208110156119cf57600080fd5b5051905081811015611a7957600a546001600160a01b03166340c10f19306119fd858563ffffffff61205116565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611a4c57600080fd5b505af1158015611a60573d6000803e3d6000fd5b505050506040513d6020811015611a7657600080fd5b50505b600a54611a96906001600160a01b0316878463ffffffff61209316565b50600195945050505050565b6001600160a01b038116611ae75760405162461bcd60e51b81526004018080602001828103825260268152602001806124c86026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b885760405162461bcd60e51b81526004018080602001828103825260258152602001806126bf6025913960400191505060405180910390fd5b6001600160a01b038216611bcd5760405162461bcd60e51b81526004018080602001828103825260238152602001806124636023913960400191505060405180910390fd5b611c1081604051806060016040528060268152602001612541602691396001600160a01b038616600090815260016020526040902054919063ffffffff61145a16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611c45908263ffffffff6114f116565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b038216611cfc576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611d0f908263ffffffff6114f116565b6003556001600160a01b038216600090815260016020526040902054611d3b908263ffffffff6114f116565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611ded9085906120e1565b50505050565b6000611dfe83612299565b80156109af57506109af83836122cc565b6001600160a01b038216611e545760405162461bcd60e51b815260040180806020018281038252602181526020018061269e6021913960400191505060405180910390fd5b611e97816040518060600160405280602281526020016124a6602291396001600160a01b038516600090815260016020526040902054919063ffffffff61145a16565b6001600160a01b038316600090815260016020526040902055600354611ec3908263ffffffff61205116565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611f158282611832565b610f9a82611f21611300565b6109a68460405180606001604052806024815260200161267a602491396001600160a01b03881660009081526002602052604081209061097f611300565b611f6982826118d6565b15611fbb576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611fea82826118d6565b6120255760405162461bcd60e51b81526004018080602001828103825260218152602001806125ef6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b633b9aca00900490565b60006109af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061145a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114559084905b6120f3826001600160a01b03166122f2565b612144576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121825780518252601f199092019160209182019101612163565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146121e4576040519150601f19603f3d011682016040523d82523d6000602084013e6121e9565b606091505b509150915081612240576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611ded5780806020019051602081101561225c57600080fd5b5051611ded5760405162461bcd60e51b815260040180806020018281038252602a81526020018061272e602a913960400191505060405180910390fd5b60006122ac826301ffc9a760e01b6122cc565b801561112a57506122c5826001600160e01b03196122cc565b1592915050565b60008060006122db858561232e565b915091508180156122e95750805b95945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061232657508115155b949350505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b602083106123b65780518252601f199092019160209182019101612397565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d8060008114612417576040519150601f19603f3d011682016040523d82523d6000602084013e61241c565b606091505b509150915060208151101561243a576000809450945050505061245b565b8181806020019051602081101561245057600080fd5b505190955093505050505b925092905056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735265656e7472616e637947756172643a207265656e7472616e742063616c6c0045524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332304f6e417070726f76653a207370656e64657220646f65736e277420737570706f7274206f6e417070726f766545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f6e417070726f766528616464726573732c616464726573732c75696e743235362c62797465732953656967546f6b656e3a206f6e6c792073656e646572206f7220726563697069656e742063616e207472616e736665724d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357544f4e3a206f6e6c792061636365707420544f4e20617070726f76652063616c6c6261636b5361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158202bfe31d10b317d00b331127684b94dbdcf8eb8656dc5af1f2f15bd57a3cd166664736f6c634300050c00326f6e417070726f766528616464726573732c616464726573732c75696e743235362c627974657329526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
 10299  
 10300  // DeployWTON deploys a new Ethereum contract, binding an instance of WTON to it.
 10301  func DeployWTON(auth *bind.TransactOpts, backend bind.ContractBackend, _ton common.Address) (common.Address, *types.Transaction, *WTON, error) {
 10302  	parsed, err := abi.JSON(strings.NewReader(WTONABI))
 10303  	if err != nil {
 10304  		return common.Address{}, nil, nil, err
 10305  	}
 10306  
 10307  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(WTONBin), backend, _ton)
 10308  	if err != nil {
 10309  		return common.Address{}, nil, nil, err
 10310  	}
 10311  	return address, tx, &WTON{WTONCaller: WTONCaller{contract: contract}, WTONTransactor: WTONTransactor{contract: contract}, WTONFilterer: WTONFilterer{contract: contract}}, nil
 10312  }
 10313  
 10314  // WTON is an auto generated Go binding around an Ethereum contract.
 10315  type WTON struct {
 10316  	WTONCaller     // Read-only binding to the contract
 10317  	WTONTransactor // Write-only binding to the contract
 10318  	WTONFilterer   // Log filterer for contract events
 10319  }
 10320  
 10321  // WTONCaller is an auto generated read-only Go binding around an Ethereum contract.
 10322  type WTONCaller struct {
 10323  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10324  }
 10325  
 10326  // WTONTransactor is an auto generated write-only Go binding around an Ethereum contract.
 10327  type WTONTransactor struct {
 10328  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10329  }
 10330  
 10331  // WTONFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 10332  type WTONFilterer struct {
 10333  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10334  }
 10335  
 10336  // WTONSession is an auto generated Go binding around an Ethereum contract,
 10337  // with pre-set call and transact options.
 10338  type WTONSession struct {
 10339  	Contract     *WTON             // Generic contract binding to set the session for
 10340  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 10341  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10342  }
 10343  
 10344  // WTONCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 10345  // with pre-set call options.
 10346  type WTONCallerSession struct {
 10347  	Contract *WTONCaller   // Generic contract caller binding to set the session for
 10348  	CallOpts bind.CallOpts // Call options to use throughout this session
 10349  }
 10350  
 10351  // WTONTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 10352  // with pre-set transact options.
 10353  type WTONTransactorSession struct {
 10354  	Contract     *WTONTransactor   // Generic contract transactor binding to set the session for
 10355  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10356  }
 10357  
 10358  // WTONRaw is an auto generated low-level Go binding around an Ethereum contract.
 10359  type WTONRaw struct {
 10360  	Contract *WTON // Generic contract binding to access the raw methods on
 10361  }
 10362  
 10363  // WTONCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 10364  type WTONCallerRaw struct {
 10365  	Contract *WTONCaller // Generic read-only contract binding to access the raw methods on
 10366  }
 10367  
 10368  // WTONTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 10369  type WTONTransactorRaw struct {
 10370  	Contract *WTONTransactor // Generic write-only contract binding to access the raw methods on
 10371  }
 10372  
 10373  // NewWTON creates a new instance of WTON, bound to a specific deployed contract.
 10374  func NewWTON(address common.Address, backend bind.ContractBackend) (*WTON, error) {
 10375  	contract, err := bindWTON(address, backend, backend, backend)
 10376  	if err != nil {
 10377  		return nil, err
 10378  	}
 10379  	return &WTON{WTONCaller: WTONCaller{contract: contract}, WTONTransactor: WTONTransactor{contract: contract}, WTONFilterer: WTONFilterer{contract: contract}}, nil
 10380  }
 10381  
 10382  // NewWTONCaller creates a new read-only instance of WTON, bound to a specific deployed contract.
 10383  func NewWTONCaller(address common.Address, caller bind.ContractCaller) (*WTONCaller, error) {
 10384  	contract, err := bindWTON(address, caller, nil, nil)
 10385  	if err != nil {
 10386  		return nil, err
 10387  	}
 10388  	return &WTONCaller{contract: contract}, nil
 10389  }
 10390  
 10391  // NewWTONTransactor creates a new write-only instance of WTON, bound to a specific deployed contract.
 10392  func NewWTONTransactor(address common.Address, transactor bind.ContractTransactor) (*WTONTransactor, error) {
 10393  	contract, err := bindWTON(address, nil, transactor, nil)
 10394  	if err != nil {
 10395  		return nil, err
 10396  	}
 10397  	return &WTONTransactor{contract: contract}, nil
 10398  }
 10399  
 10400  // NewWTONFilterer creates a new log filterer instance of WTON, bound to a specific deployed contract.
 10401  func NewWTONFilterer(address common.Address, filterer bind.ContractFilterer) (*WTONFilterer, error) {
 10402  	contract, err := bindWTON(address, nil, nil, filterer)
 10403  	if err != nil {
 10404  		return nil, err
 10405  	}
 10406  	return &WTONFilterer{contract: contract}, nil
 10407  }
 10408  
 10409  // bindWTON binds a generic wrapper to an already deployed contract.
 10410  func bindWTON(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 10411  	parsed, err := abi.JSON(strings.NewReader(WTONABI))
 10412  	if err != nil {
 10413  		return nil, err
 10414  	}
 10415  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 10416  }
 10417  
 10418  // Call invokes the (constant) contract method with params as input values and
 10419  // sets the output to result. The result type might be a single field for simple
 10420  // returns, a slice of interfaces for anonymous returns and a struct for named
 10421  // returns.
 10422  func (_WTON *WTONRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10423  	return _WTON.Contract.WTONCaller.contract.Call(opts, result, method, params...)
 10424  }
 10425  
 10426  // Transfer initiates a plain transaction to move funds to the contract, calling
 10427  // its default method if one is available.
 10428  func (_WTON *WTONRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10429  	return _WTON.Contract.WTONTransactor.contract.Transfer(opts)
 10430  }
 10431  
 10432  // Transact invokes the (paid) contract method with params as input values.
 10433  func (_WTON *WTONRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10434  	return _WTON.Contract.WTONTransactor.contract.Transact(opts, method, params...)
 10435  }
 10436  
 10437  // Call invokes the (constant) contract method with params as input values and
 10438  // sets the output to result. The result type might be a single field for simple
 10439  // returns, a slice of interfaces for anonymous returns and a struct for named
 10440  // returns.
 10441  func (_WTON *WTONCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10442  	return _WTON.Contract.contract.Call(opts, result, method, params...)
 10443  }
 10444  
 10445  // Transfer initiates a plain transaction to move funds to the contract, calling
 10446  // its default method if one is available.
 10447  func (_WTON *WTONTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10448  	return _WTON.Contract.contract.Transfer(opts)
 10449  }
 10450  
 10451  // Transact invokes the (paid) contract method with params as input values.
 10452  func (_WTON *WTONTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10453  	return _WTON.Contract.contract.Transact(opts, method, params...)
 10454  }
 10455  
 10456  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 10457  //
 10458  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 10459  func (_WTON *WTONCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
 10460  	var (
 10461  		ret0 = new([4]byte)
 10462  	)
 10463  	out := ret0
 10464  	err := _WTON.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
 10465  	return *ret0, err
 10466  }
 10467  
 10468  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 10469  //
 10470  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 10471  func (_WTON *WTONSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
 10472  	return _WTON.Contract.INTERFACEIDONAPPROVE(&_WTON.CallOpts)
 10473  }
 10474  
 10475  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 10476  //
 10477  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 10478  func (_WTON *WTONCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
 10479  	return _WTON.Contract.INTERFACEIDONAPPROVE(&_WTON.CallOpts)
 10480  }
 10481  
 10482  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 10483  //
 10484  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 10485  func (_WTON *WTONCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 10486  	var (
 10487  		ret0 = new(*big.Int)
 10488  	)
 10489  	out := ret0
 10490  	err := _WTON.contract.Call(opts, out, "allowance", owner, spender)
 10491  	return *ret0, err
 10492  }
 10493  
 10494  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 10495  //
 10496  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 10497  func (_WTON *WTONSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 10498  	return _WTON.Contract.Allowance(&_WTON.CallOpts, owner, spender)
 10499  }
 10500  
 10501  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 10502  //
 10503  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 10504  func (_WTON *WTONCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 10505  	return _WTON.Contract.Allowance(&_WTON.CallOpts, owner, spender)
 10506  }
 10507  
 10508  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10509  //
 10510  // Solidity: function balanceOf(address account) constant returns(uint256)
 10511  func (_WTON *WTONCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 10512  	var (
 10513  		ret0 = new(*big.Int)
 10514  	)
 10515  	out := ret0
 10516  	err := _WTON.contract.Call(opts, out, "balanceOf", account)
 10517  	return *ret0, err
 10518  }
 10519  
 10520  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10521  //
 10522  // Solidity: function balanceOf(address account) constant returns(uint256)
 10523  func (_WTON *WTONSession) BalanceOf(account common.Address) (*big.Int, error) {
 10524  	return _WTON.Contract.BalanceOf(&_WTON.CallOpts, account)
 10525  }
 10526  
 10527  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10528  //
 10529  // Solidity: function balanceOf(address account) constant returns(uint256)
 10530  func (_WTON *WTONCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 10531  	return _WTON.Contract.BalanceOf(&_WTON.CallOpts, account)
 10532  }
 10533  
 10534  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
 10535  //
 10536  // Solidity: function decimals() constant returns(uint8)
 10537  func (_WTON *WTONCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
 10538  	var (
 10539  		ret0 = new(uint8)
 10540  	)
 10541  	out := ret0
 10542  	err := _WTON.contract.Call(opts, out, "decimals")
 10543  	return *ret0, err
 10544  }
 10545  
 10546  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
 10547  //
 10548  // Solidity: function decimals() constant returns(uint8)
 10549  func (_WTON *WTONSession) Decimals() (uint8, error) {
 10550  	return _WTON.Contract.Decimals(&_WTON.CallOpts)
 10551  }
 10552  
 10553  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
 10554  //
 10555  // Solidity: function decimals() constant returns(uint8)
 10556  func (_WTON *WTONCallerSession) Decimals() (uint8, error) {
 10557  	return _WTON.Contract.Decimals(&_WTON.CallOpts)
 10558  }
 10559  
 10560  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 10561  //
 10562  // Solidity: function isMinter(address account) constant returns(bool)
 10563  func (_WTON *WTONCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 10564  	var (
 10565  		ret0 = new(bool)
 10566  	)
 10567  	out := ret0
 10568  	err := _WTON.contract.Call(opts, out, "isMinter", account)
 10569  	return *ret0, err
 10570  }
 10571  
 10572  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 10573  //
 10574  // Solidity: function isMinter(address account) constant returns(bool)
 10575  func (_WTON *WTONSession) IsMinter(account common.Address) (bool, error) {
 10576  	return _WTON.Contract.IsMinter(&_WTON.CallOpts, account)
 10577  }
 10578  
 10579  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 10580  //
 10581  // Solidity: function isMinter(address account) constant returns(bool)
 10582  func (_WTON *WTONCallerSession) IsMinter(account common.Address) (bool, error) {
 10583  	return _WTON.Contract.IsMinter(&_WTON.CallOpts, account)
 10584  }
 10585  
 10586  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 10587  //
 10588  // Solidity: function isOwner() constant returns(bool)
 10589  func (_WTON *WTONCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 10590  	var (
 10591  		ret0 = new(bool)
 10592  	)
 10593  	out := ret0
 10594  	err := _WTON.contract.Call(opts, out, "isOwner")
 10595  	return *ret0, err
 10596  }
 10597  
 10598  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 10599  //
 10600  // Solidity: function isOwner() constant returns(bool)
 10601  func (_WTON *WTONSession) IsOwner() (bool, error) {
 10602  	return _WTON.Contract.IsOwner(&_WTON.CallOpts)
 10603  }
 10604  
 10605  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 10606  //
 10607  // Solidity: function isOwner() constant returns(bool)
 10608  func (_WTON *WTONCallerSession) IsOwner() (bool, error) {
 10609  	return _WTON.Contract.IsOwner(&_WTON.CallOpts)
 10610  }
 10611  
 10612  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10613  //
 10614  // Solidity: function name() constant returns(string)
 10615  func (_WTON *WTONCaller) Name(opts *bind.CallOpts) (string, error) {
 10616  	var (
 10617  		ret0 = new(string)
 10618  	)
 10619  	out := ret0
 10620  	err := _WTON.contract.Call(opts, out, "name")
 10621  	return *ret0, err
 10622  }
 10623  
 10624  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10625  //
 10626  // Solidity: function name() constant returns(string)
 10627  func (_WTON *WTONSession) Name() (string, error) {
 10628  	return _WTON.Contract.Name(&_WTON.CallOpts)
 10629  }
 10630  
 10631  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10632  //
 10633  // Solidity: function name() constant returns(string)
 10634  func (_WTON *WTONCallerSession) Name() (string, error) {
 10635  	return _WTON.Contract.Name(&_WTON.CallOpts)
 10636  }
 10637  
 10638  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 10639  //
 10640  // Solidity: function owner() constant returns(address)
 10641  func (_WTON *WTONCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 10642  	var (
 10643  		ret0 = new(common.Address)
 10644  	)
 10645  	out := ret0
 10646  	err := _WTON.contract.Call(opts, out, "owner")
 10647  	return *ret0, err
 10648  }
 10649  
 10650  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 10651  //
 10652  // Solidity: function owner() constant returns(address)
 10653  func (_WTON *WTONSession) Owner() (common.Address, error) {
 10654  	return _WTON.Contract.Owner(&_WTON.CallOpts)
 10655  }
 10656  
 10657  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 10658  //
 10659  // Solidity: function owner() constant returns(address)
 10660  func (_WTON *WTONCallerSession) Owner() (common.Address, error) {
 10661  	return _WTON.Contract.Owner(&_WTON.CallOpts)
 10662  }
 10663  
 10664  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 10665  //
 10666  // Solidity: function seigManager() constant returns(address)
 10667  func (_WTON *WTONCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
 10668  	var (
 10669  		ret0 = new(common.Address)
 10670  	)
 10671  	out := ret0
 10672  	err := _WTON.contract.Call(opts, out, "seigManager")
 10673  	return *ret0, err
 10674  }
 10675  
 10676  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 10677  //
 10678  // Solidity: function seigManager() constant returns(address)
 10679  func (_WTON *WTONSession) SeigManager() (common.Address, error) {
 10680  	return _WTON.Contract.SeigManager(&_WTON.CallOpts)
 10681  }
 10682  
 10683  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 10684  //
 10685  // Solidity: function seigManager() constant returns(address)
 10686  func (_WTON *WTONCallerSession) SeigManager() (common.Address, error) {
 10687  	return _WTON.Contract.SeigManager(&_WTON.CallOpts)
 10688  }
 10689  
 10690  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10691  //
 10692  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
 10693  func (_WTON *WTONCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 10694  	var (
 10695  		ret0 = new(bool)
 10696  	)
 10697  	out := ret0
 10698  	err := _WTON.contract.Call(opts, out, "supportsInterface", interfaceId)
 10699  	return *ret0, err
 10700  }
 10701  
 10702  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10703  //
 10704  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
 10705  func (_WTON *WTONSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 10706  	return _WTON.Contract.SupportsInterface(&_WTON.CallOpts, interfaceId)
 10707  }
 10708  
 10709  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10710  //
 10711  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
 10712  func (_WTON *WTONCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 10713  	return _WTON.Contract.SupportsInterface(&_WTON.CallOpts, interfaceId)
 10714  }
 10715  
 10716  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10717  //
 10718  // Solidity: function symbol() constant returns(string)
 10719  func (_WTON *WTONCaller) Symbol(opts *bind.CallOpts) (string, error) {
 10720  	var (
 10721  		ret0 = new(string)
 10722  	)
 10723  	out := ret0
 10724  	err := _WTON.contract.Call(opts, out, "symbol")
 10725  	return *ret0, err
 10726  }
 10727  
 10728  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10729  //
 10730  // Solidity: function symbol() constant returns(string)
 10731  func (_WTON *WTONSession) Symbol() (string, error) {
 10732  	return _WTON.Contract.Symbol(&_WTON.CallOpts)
 10733  }
 10734  
 10735  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10736  //
 10737  // Solidity: function symbol() constant returns(string)
 10738  func (_WTON *WTONCallerSession) Symbol() (string, error) {
 10739  	return _WTON.Contract.Symbol(&_WTON.CallOpts)
 10740  }
 10741  
 10742  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 10743  //
 10744  // Solidity: function ton() constant returns(address)
 10745  func (_WTON *WTONCaller) Ton(opts *bind.CallOpts) (common.Address, error) {
 10746  	var (
 10747  		ret0 = new(common.Address)
 10748  	)
 10749  	out := ret0
 10750  	err := _WTON.contract.Call(opts, out, "ton")
 10751  	return *ret0, err
 10752  }
 10753  
 10754  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 10755  //
 10756  // Solidity: function ton() constant returns(address)
 10757  func (_WTON *WTONSession) Ton() (common.Address, error) {
 10758  	return _WTON.Contract.Ton(&_WTON.CallOpts)
 10759  }
 10760  
 10761  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 10762  //
 10763  // Solidity: function ton() constant returns(address)
 10764  func (_WTON *WTONCallerSession) Ton() (common.Address, error) {
 10765  	return _WTON.Contract.Ton(&_WTON.CallOpts)
 10766  }
 10767  
 10768  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 10769  //
 10770  // Solidity: function totalSupply() constant returns(uint256)
 10771  func (_WTON *WTONCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 10772  	var (
 10773  		ret0 = new(*big.Int)
 10774  	)
 10775  	out := ret0
 10776  	err := _WTON.contract.Call(opts, out, "totalSupply")
 10777  	return *ret0, err
 10778  }
 10779  
 10780  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 10781  //
 10782  // Solidity: function totalSupply() constant returns(uint256)
 10783  func (_WTON *WTONSession) TotalSupply() (*big.Int, error) {
 10784  	return _WTON.Contract.TotalSupply(&_WTON.CallOpts)
 10785  }
 10786  
 10787  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 10788  //
 10789  // Solidity: function totalSupply() constant returns(uint256)
 10790  func (_WTON *WTONCallerSession) TotalSupply() (*big.Int, error) {
 10791  	return _WTON.Contract.TotalSupply(&_WTON.CallOpts)
 10792  }
 10793  
 10794  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 10795  //
 10796  // Solidity: function addMinter(address account) returns()
 10797  func (_WTON *WTONTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 10798  	return _WTON.contract.Transact(opts, "addMinter", account)
 10799  }
 10800  
 10801  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 10802  //
 10803  // Solidity: function addMinter(address account) returns()
 10804  func (_WTON *WTONSession) AddMinter(account common.Address) (*types.Transaction, error) {
 10805  	return _WTON.Contract.AddMinter(&_WTON.TransactOpts, account)
 10806  }
 10807  
 10808  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 10809  //
 10810  // Solidity: function addMinter(address account) returns()
 10811  func (_WTON *WTONTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 10812  	return _WTON.Contract.AddMinter(&_WTON.TransactOpts, account)
 10813  }
 10814  
 10815  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10816  //
 10817  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 10818  func (_WTON *WTONTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
 10819  	return _WTON.contract.Transact(opts, "approve", spender, amount)
 10820  }
 10821  
 10822  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10823  //
 10824  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 10825  func (_WTON *WTONSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 10826  	return _WTON.Contract.Approve(&_WTON.TransactOpts, spender, amount)
 10827  }
 10828  
 10829  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10830  //
 10831  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 10832  func (_WTON *WTONTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 10833  	return _WTON.Contract.Approve(&_WTON.TransactOpts, spender, amount)
 10834  }
 10835  
 10836  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 10837  //
 10838  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 10839  func (_WTON *WTONTransactor) ApproveAndCall(opts *bind.TransactOpts, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 10840  	return _WTON.contract.Transact(opts, "approveAndCall", spender, amount, data)
 10841  }
 10842  
 10843  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 10844  //
 10845  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 10846  func (_WTON *WTONSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 10847  	return _WTON.Contract.ApproveAndCall(&_WTON.TransactOpts, spender, amount, data)
 10848  }
 10849  
 10850  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 10851  //
 10852  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 10853  func (_WTON *WTONTransactorSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 10854  	return _WTON.Contract.ApproveAndCall(&_WTON.TransactOpts, spender, amount, data)
 10855  }
 10856  
 10857  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 10858  //
 10859  // Solidity: function burn(uint256 amount) returns()
 10860  func (_WTON *WTONTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
 10861  	return _WTON.contract.Transact(opts, "burn", amount)
 10862  }
 10863  
 10864  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 10865  //
 10866  // Solidity: function burn(uint256 amount) returns()
 10867  func (_WTON *WTONSession) Burn(amount *big.Int) (*types.Transaction, error) {
 10868  	return _WTON.Contract.Burn(&_WTON.TransactOpts, amount)
 10869  }
 10870  
 10871  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 10872  //
 10873  // Solidity: function burn(uint256 amount) returns()
 10874  func (_WTON *WTONTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
 10875  	return _WTON.Contract.Burn(&_WTON.TransactOpts, amount)
 10876  }
 10877  
 10878  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 10879  //
 10880  // Solidity: function burnFrom(address account, uint256 amount) returns()
 10881  func (_WTON *WTONTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
 10882  	return _WTON.contract.Transact(opts, "burnFrom", account, amount)
 10883  }
 10884  
 10885  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 10886  //
 10887  // Solidity: function burnFrom(address account, uint256 amount) returns()
 10888  func (_WTON *WTONSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
 10889  	return _WTON.Contract.BurnFrom(&_WTON.TransactOpts, account, amount)
 10890  }
 10891  
 10892  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 10893  //
 10894  // Solidity: function burnFrom(address account, uint256 amount) returns()
 10895  func (_WTON *WTONTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
 10896  	return _WTON.Contract.BurnFrom(&_WTON.TransactOpts, account, amount)
 10897  }
 10898  
 10899  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 10900  //
 10901  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 10902  func (_WTON *WTONTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 10903  	return _WTON.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 10904  }
 10905  
 10906  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 10907  //
 10908  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 10909  func (_WTON *WTONSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 10910  	return _WTON.Contract.DecreaseAllowance(&_WTON.TransactOpts, spender, subtractedValue)
 10911  }
 10912  
 10913  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 10914  //
 10915  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 10916  func (_WTON *WTONTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 10917  	return _WTON.Contract.DecreaseAllowance(&_WTON.TransactOpts, spender, subtractedValue)
 10918  }
 10919  
 10920  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 10921  //
 10922  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 10923  func (_WTON *WTONTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 10924  	return _WTON.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 10925  }
 10926  
 10927  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 10928  //
 10929  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 10930  func (_WTON *WTONSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 10931  	return _WTON.Contract.IncreaseAllowance(&_WTON.TransactOpts, spender, addedValue)
 10932  }
 10933  
 10934  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 10935  //
 10936  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 10937  func (_WTON *WTONTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 10938  	return _WTON.Contract.IncreaseAllowance(&_WTON.TransactOpts, spender, addedValue)
 10939  }
 10940  
 10941  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 10942  //
 10943  // Solidity: function mint(address account, uint256 amount) returns(bool)
 10944  func (_WTON *WTONTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
 10945  	return _WTON.contract.Transact(opts, "mint", account, amount)
 10946  }
 10947  
 10948  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 10949  //
 10950  // Solidity: function mint(address account, uint256 amount) returns(bool)
 10951  func (_WTON *WTONSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
 10952  	return _WTON.Contract.Mint(&_WTON.TransactOpts, account, amount)
 10953  }
 10954  
 10955  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 10956  //
 10957  // Solidity: function mint(address account, uint256 amount) returns(bool)
 10958  func (_WTON *WTONTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
 10959  	return _WTON.Contract.Mint(&_WTON.TransactOpts, account, amount)
 10960  }
 10961  
 10962  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
 10963  //
 10964  // Solidity: function onApprove(address owner, address spender, uint256 tonAmount, bytes data) returns(bool)
 10965  func (_WTON *WTONTransactor) OnApprove(opts *bind.TransactOpts, owner common.Address, spender common.Address, tonAmount *big.Int, data []byte) (*types.Transaction, error) {
 10966  	return _WTON.contract.Transact(opts, "onApprove", owner, spender, tonAmount, data)
 10967  }
 10968  
 10969  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
 10970  //
 10971  // Solidity: function onApprove(address owner, address spender, uint256 tonAmount, bytes data) returns(bool)
 10972  func (_WTON *WTONSession) OnApprove(owner common.Address, spender common.Address, tonAmount *big.Int, data []byte) (*types.Transaction, error) {
 10973  	return _WTON.Contract.OnApprove(&_WTON.TransactOpts, owner, spender, tonAmount, data)
 10974  }
 10975  
 10976  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
 10977  //
 10978  // Solidity: function onApprove(address owner, address spender, uint256 tonAmount, bytes data) returns(bool)
 10979  func (_WTON *WTONTransactorSession) OnApprove(owner common.Address, spender common.Address, tonAmount *big.Int, data []byte) (*types.Transaction, error) {
 10980  	return _WTON.Contract.OnApprove(&_WTON.TransactOpts, owner, spender, tonAmount, data)
 10981  }
 10982  
 10983  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10984  //
 10985  // Solidity: function renounceMinter(address target) returns()
 10986  func (_WTON *WTONTransactor) RenounceMinter(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 10987  	return _WTON.contract.Transact(opts, "renounceMinter", target)
 10988  }
 10989  
 10990  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10991  //
 10992  // Solidity: function renounceMinter(address target) returns()
 10993  func (_WTON *WTONSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
 10994  	return _WTON.Contract.RenounceMinter(&_WTON.TransactOpts, target)
 10995  }
 10996  
 10997  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10998  //
 10999  // Solidity: function renounceMinter(address target) returns()
 11000  func (_WTON *WTONTransactorSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
 11001  	return _WTON.Contract.RenounceMinter(&_WTON.TransactOpts, target)
 11002  }
 11003  
 11004  // RenounceMinter0 is a paid mutator transaction binding the contract method 0x98650275.
 11005  //
 11006  // Solidity: function renounceMinter() returns()
 11007  func (_WTON *WTONTransactor) RenounceMinter0(opts *bind.TransactOpts) (*types.Transaction, error) {
 11008  	return _WTON.contract.Transact(opts, "renounceMinter0")
 11009  }
 11010  
 11011  // RenounceMinter0 is a paid mutator transaction binding the contract method 0x98650275.
 11012  //
 11013  // Solidity: function renounceMinter() returns()
 11014  func (_WTON *WTONSession) RenounceMinter0() (*types.Transaction, error) {
 11015  	return _WTON.Contract.RenounceMinter0(&_WTON.TransactOpts)
 11016  }
 11017  
 11018  // RenounceMinter0 is a paid mutator transaction binding the contract method 0x98650275.
 11019  //
 11020  // Solidity: function renounceMinter() returns()
 11021  func (_WTON *WTONTransactorSession) RenounceMinter0() (*types.Transaction, error) {
 11022  	return _WTON.Contract.RenounceMinter0(&_WTON.TransactOpts)
 11023  }
 11024  
 11025  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 11026  //
 11027  // Solidity: function renounceOwnership(address target) returns()
 11028  func (_WTON *WTONTransactor) RenounceOwnership(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 11029  	return _WTON.contract.Transact(opts, "renounceOwnership", target)
 11030  }
 11031  
 11032  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 11033  //
 11034  // Solidity: function renounceOwnership(address target) returns()
 11035  func (_WTON *WTONSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
 11036  	return _WTON.Contract.RenounceOwnership(&_WTON.TransactOpts, target)
 11037  }
 11038  
 11039  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 11040  //
 11041  // Solidity: function renounceOwnership(address target) returns()
 11042  func (_WTON *WTONTransactorSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
 11043  	return _WTON.Contract.RenounceOwnership(&_WTON.TransactOpts, target)
 11044  }
 11045  
 11046  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 11047  //
 11048  // Solidity: function renounceOwnership() returns()
 11049  func (_WTON *WTONTransactor) RenounceOwnership0(opts *bind.TransactOpts) (*types.Transaction, error) {
 11050  	return _WTON.contract.Transact(opts, "renounceOwnership0")
 11051  }
 11052  
 11053  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 11054  //
 11055  // Solidity: function renounceOwnership() returns()
 11056  func (_WTON *WTONSession) RenounceOwnership0() (*types.Transaction, error) {
 11057  	return _WTON.Contract.RenounceOwnership0(&_WTON.TransactOpts)
 11058  }
 11059  
 11060  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 11061  //
 11062  // Solidity: function renounceOwnership() returns()
 11063  func (_WTON *WTONTransactorSession) RenounceOwnership0() (*types.Transaction, error) {
 11064  	return _WTON.Contract.RenounceOwnership0(&_WTON.TransactOpts)
 11065  }
 11066  
 11067  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 11068  //
 11069  // Solidity: function renouncePauser(address target) returns()
 11070  func (_WTON *WTONTransactor) RenouncePauser(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 11071  	return _WTON.contract.Transact(opts, "renouncePauser", target)
 11072  }
 11073  
 11074  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 11075  //
 11076  // Solidity: function renouncePauser(address target) returns()
 11077  func (_WTON *WTONSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
 11078  	return _WTON.Contract.RenouncePauser(&_WTON.TransactOpts, target)
 11079  }
 11080  
 11081  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 11082  //
 11083  // Solidity: function renouncePauser(address target) returns()
 11084  func (_WTON *WTONTransactorSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
 11085  	return _WTON.Contract.RenouncePauser(&_WTON.TransactOpts, target)
 11086  }
 11087  
 11088  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 11089  //
 11090  // Solidity: function setSeigManager(address _seigManager) returns()
 11091  func (_WTON *WTONTransactor) SetSeigManager(opts *bind.TransactOpts, _seigManager common.Address) (*types.Transaction, error) {
 11092  	return _WTON.contract.Transact(opts, "setSeigManager", _seigManager)
 11093  }
 11094  
 11095  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 11096  //
 11097  // Solidity: function setSeigManager(address _seigManager) returns()
 11098  func (_WTON *WTONSession) SetSeigManager(_seigManager common.Address) (*types.Transaction, error) {
 11099  	return _WTON.Contract.SetSeigManager(&_WTON.TransactOpts, _seigManager)
 11100  }
 11101  
 11102  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 11103  //
 11104  // Solidity: function setSeigManager(address _seigManager) returns()
 11105  func (_WTON *WTONTransactorSession) SetSeigManager(_seigManager common.Address) (*types.Transaction, error) {
 11106  	return _WTON.Contract.SetSeigManager(&_WTON.TransactOpts, _seigManager)
 11107  }
 11108  
 11109  // SwapFromTON is a paid mutator transaction binding the contract method 0xe34869d7.
 11110  //
 11111  // Solidity: function swapFromTON(uint256 tonAmount) returns(bool)
 11112  func (_WTON *WTONTransactor) SwapFromTON(opts *bind.TransactOpts, tonAmount *big.Int) (*types.Transaction, error) {
 11113  	return _WTON.contract.Transact(opts, "swapFromTON", tonAmount)
 11114  }
 11115  
 11116  // SwapFromTON is a paid mutator transaction binding the contract method 0xe34869d7.
 11117  //
 11118  // Solidity: function swapFromTON(uint256 tonAmount) returns(bool)
 11119  func (_WTON *WTONSession) SwapFromTON(tonAmount *big.Int) (*types.Transaction, error) {
 11120  	return _WTON.Contract.SwapFromTON(&_WTON.TransactOpts, tonAmount)
 11121  }
 11122  
 11123  // SwapFromTON is a paid mutator transaction binding the contract method 0xe34869d7.
 11124  //
 11125  // Solidity: function swapFromTON(uint256 tonAmount) returns(bool)
 11126  func (_WTON *WTONTransactorSession) SwapFromTON(tonAmount *big.Int) (*types.Transaction, error) {
 11127  	return _WTON.Contract.SwapFromTON(&_WTON.TransactOpts, tonAmount)
 11128  }
 11129  
 11130  // SwapFromTONAndTransfer is a paid mutator transaction binding the contract method 0x588420b7.
 11131  //
 11132  // Solidity: function swapFromTONAndTransfer(address to, uint256 tonAmount) returns(bool)
 11133  func (_WTON *WTONTransactor) SwapFromTONAndTransfer(opts *bind.TransactOpts, to common.Address, tonAmount *big.Int) (*types.Transaction, error) {
 11134  	return _WTON.contract.Transact(opts, "swapFromTONAndTransfer", to, tonAmount)
 11135  }
 11136  
 11137  // SwapFromTONAndTransfer is a paid mutator transaction binding the contract method 0x588420b7.
 11138  //
 11139  // Solidity: function swapFromTONAndTransfer(address to, uint256 tonAmount) returns(bool)
 11140  func (_WTON *WTONSession) SwapFromTONAndTransfer(to common.Address, tonAmount *big.Int) (*types.Transaction, error) {
 11141  	return _WTON.Contract.SwapFromTONAndTransfer(&_WTON.TransactOpts, to, tonAmount)
 11142  }
 11143  
 11144  // SwapFromTONAndTransfer is a paid mutator transaction binding the contract method 0x588420b7.
 11145  //
 11146  // Solidity: function swapFromTONAndTransfer(address to, uint256 tonAmount) returns(bool)
 11147  func (_WTON *WTONTransactorSession) SwapFromTONAndTransfer(to common.Address, tonAmount *big.Int) (*types.Transaction, error) {
 11148  	return _WTON.Contract.SwapFromTONAndTransfer(&_WTON.TransactOpts, to, tonAmount)
 11149  }
 11150  
 11151  // SwapToTON is a paid mutator transaction binding the contract method 0xf53fe70f.
 11152  //
 11153  // Solidity: function swapToTON(uint256 wtonAmount) returns(bool)
 11154  func (_WTON *WTONTransactor) SwapToTON(opts *bind.TransactOpts, wtonAmount *big.Int) (*types.Transaction, error) {
 11155  	return _WTON.contract.Transact(opts, "swapToTON", wtonAmount)
 11156  }
 11157  
 11158  // SwapToTON is a paid mutator transaction binding the contract method 0xf53fe70f.
 11159  //
 11160  // Solidity: function swapToTON(uint256 wtonAmount) returns(bool)
 11161  func (_WTON *WTONSession) SwapToTON(wtonAmount *big.Int) (*types.Transaction, error) {
 11162  	return _WTON.Contract.SwapToTON(&_WTON.TransactOpts, wtonAmount)
 11163  }
 11164  
 11165  // SwapToTON is a paid mutator transaction binding the contract method 0xf53fe70f.
 11166  //
 11167  // Solidity: function swapToTON(uint256 wtonAmount) returns(bool)
 11168  func (_WTON *WTONTransactorSession) SwapToTON(wtonAmount *big.Int) (*types.Transaction, error) {
 11169  	return _WTON.Contract.SwapToTON(&_WTON.TransactOpts, wtonAmount)
 11170  }
 11171  
 11172  // SwapToTONAndTransfer is a paid mutator transaction binding the contract method 0xe3b99e85.
 11173  //
 11174  // Solidity: function swapToTONAndTransfer(address to, uint256 wtonAmount) returns(bool)
 11175  func (_WTON *WTONTransactor) SwapToTONAndTransfer(opts *bind.TransactOpts, to common.Address, wtonAmount *big.Int) (*types.Transaction, error) {
 11176  	return _WTON.contract.Transact(opts, "swapToTONAndTransfer", to, wtonAmount)
 11177  }
 11178  
 11179  // SwapToTONAndTransfer is a paid mutator transaction binding the contract method 0xe3b99e85.
 11180  //
 11181  // Solidity: function swapToTONAndTransfer(address to, uint256 wtonAmount) returns(bool)
 11182  func (_WTON *WTONSession) SwapToTONAndTransfer(to common.Address, wtonAmount *big.Int) (*types.Transaction, error) {
 11183  	return _WTON.Contract.SwapToTONAndTransfer(&_WTON.TransactOpts, to, wtonAmount)
 11184  }
 11185  
 11186  // SwapToTONAndTransfer is a paid mutator transaction binding the contract method 0xe3b99e85.
 11187  //
 11188  // Solidity: function swapToTONAndTransfer(address to, uint256 wtonAmount) returns(bool)
 11189  func (_WTON *WTONTransactorSession) SwapToTONAndTransfer(to common.Address, wtonAmount *big.Int) (*types.Transaction, error) {
 11190  	return _WTON.Contract.SwapToTONAndTransfer(&_WTON.TransactOpts, to, wtonAmount)
 11191  }
 11192  
 11193  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 11194  //
 11195  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 11196  func (_WTON *WTONTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11197  	return _WTON.contract.Transact(opts, "transfer", recipient, amount)
 11198  }
 11199  
 11200  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 11201  //
 11202  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 11203  func (_WTON *WTONSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11204  	return _WTON.Contract.Transfer(&_WTON.TransactOpts, recipient, amount)
 11205  }
 11206  
 11207  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 11208  //
 11209  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 11210  func (_WTON *WTONTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11211  	return _WTON.Contract.Transfer(&_WTON.TransactOpts, recipient, amount)
 11212  }
 11213  
 11214  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11215  //
 11216  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 11217  func (_WTON *WTONTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11218  	return _WTON.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 11219  }
 11220  
 11221  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11222  //
 11223  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 11224  func (_WTON *WTONSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11225  	return _WTON.Contract.TransferFrom(&_WTON.TransactOpts, sender, recipient, amount)
 11226  }
 11227  
 11228  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11229  //
 11230  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 11231  func (_WTON *WTONTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11232  	return _WTON.Contract.TransferFrom(&_WTON.TransactOpts, sender, recipient, amount)
 11233  }
 11234  
 11235  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 11236  //
 11237  // Solidity: function transferOwnership(address target, address newOwner) returns()
 11238  func (_WTON *WTONTransactor) TransferOwnership(opts *bind.TransactOpts, target common.Address, newOwner common.Address) (*types.Transaction, error) {
 11239  	return _WTON.contract.Transact(opts, "transferOwnership", target, newOwner)
 11240  }
 11241  
 11242  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 11243  //
 11244  // Solidity: function transferOwnership(address target, address newOwner) returns()
 11245  func (_WTON *WTONSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
 11246  	return _WTON.Contract.TransferOwnership(&_WTON.TransactOpts, target, newOwner)
 11247  }
 11248  
 11249  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 11250  //
 11251  // Solidity: function transferOwnership(address target, address newOwner) returns()
 11252  func (_WTON *WTONTransactorSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
 11253  	return _WTON.Contract.TransferOwnership(&_WTON.TransactOpts, target, newOwner)
 11254  }
 11255  
 11256  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 11257  //
 11258  // Solidity: function transferOwnership(address newOwner) returns()
 11259  func (_WTON *WTONTransactor) TransferOwnership0(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 11260  	return _WTON.contract.Transact(opts, "transferOwnership0", newOwner)
 11261  }
 11262  
 11263  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 11264  //
 11265  // Solidity: function transferOwnership(address newOwner) returns()
 11266  func (_WTON *WTONSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
 11267  	return _WTON.Contract.TransferOwnership0(&_WTON.TransactOpts, newOwner)
 11268  }
 11269  
 11270  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 11271  //
 11272  // Solidity: function transferOwnership(address newOwner) returns()
 11273  func (_WTON *WTONTransactorSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
 11274  	return _WTON.Contract.TransferOwnership0(&_WTON.TransactOpts, newOwner)
 11275  }
 11276  
 11277  // WTONApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the WTON contract.
 11278  type WTONApprovalIterator struct {
 11279  	Event *WTONApproval // Event containing the contract specifics and raw log
 11280  
 11281  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11282  	event    string              // Event name to use for unpacking event data
 11283  
 11284  	logs chan types.Log        // Log channel receiving the found contract events
 11285  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11286  	done bool                  // Whether the subscription completed delivering logs
 11287  	fail error                 // Occurred error to stop iteration
 11288  }
 11289  
 11290  // Next advances the iterator to the subsequent event, returning whether there
 11291  // are any more events found. In case of a retrieval or parsing error, false is
 11292  // returned and Error() can be queried for the exact failure.
 11293  func (it *WTONApprovalIterator) Next() bool {
 11294  	// If the iterator failed, stop iterating
 11295  	if it.fail != nil {
 11296  		return false
 11297  	}
 11298  	// If the iterator completed, deliver directly whatever's available
 11299  	if it.done {
 11300  		select {
 11301  		case log := <-it.logs:
 11302  			it.Event = new(WTONApproval)
 11303  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11304  				it.fail = err
 11305  				return false
 11306  			}
 11307  			it.Event.Raw = log
 11308  			return true
 11309  
 11310  		default:
 11311  			return false
 11312  		}
 11313  	}
 11314  	// Iterator still in progress, wait for either a data or an error event
 11315  	select {
 11316  	case log := <-it.logs:
 11317  		it.Event = new(WTONApproval)
 11318  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11319  			it.fail = err
 11320  			return false
 11321  		}
 11322  		it.Event.Raw = log
 11323  		return true
 11324  
 11325  	case err := <-it.sub.Err():
 11326  		it.done = true
 11327  		it.fail = err
 11328  		return it.Next()
 11329  	}
 11330  }
 11331  
 11332  // Error returns any retrieval or parsing error occurred during filtering.
 11333  func (it *WTONApprovalIterator) Error() error {
 11334  	return it.fail
 11335  }
 11336  
 11337  // Close terminates the iteration process, releasing any pending underlying
 11338  // resources.
 11339  func (it *WTONApprovalIterator) Close() error {
 11340  	it.sub.Unsubscribe()
 11341  	return nil
 11342  }
 11343  
 11344  // WTONApproval represents a Approval event raised by the WTON contract.
 11345  type WTONApproval struct {
 11346  	Owner   common.Address
 11347  	Spender common.Address
 11348  	Value   *big.Int
 11349  	Raw     types.Log // Blockchain specific contextual infos
 11350  }
 11351  
 11352  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11353  //
 11354  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 11355  func (_WTON *WTONFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*WTONApprovalIterator, error) {
 11356  
 11357  	var ownerRule []interface{}
 11358  	for _, ownerItem := range owner {
 11359  		ownerRule = append(ownerRule, ownerItem)
 11360  	}
 11361  	var spenderRule []interface{}
 11362  	for _, spenderItem := range spender {
 11363  		spenderRule = append(spenderRule, spenderItem)
 11364  	}
 11365  
 11366  	logs, sub, err := _WTON.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 11367  	if err != nil {
 11368  		return nil, err
 11369  	}
 11370  	return &WTONApprovalIterator{contract: _WTON.contract, event: "Approval", logs: logs, sub: sub}, nil
 11371  }
 11372  
 11373  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11374  //
 11375  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 11376  func (_WTON *WTONFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *WTONApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 11377  
 11378  	var ownerRule []interface{}
 11379  	for _, ownerItem := range owner {
 11380  		ownerRule = append(ownerRule, ownerItem)
 11381  	}
 11382  	var spenderRule []interface{}
 11383  	for _, spenderItem := range spender {
 11384  		spenderRule = append(spenderRule, spenderItem)
 11385  	}
 11386  
 11387  	logs, sub, err := _WTON.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 11388  	if err != nil {
 11389  		return nil, err
 11390  	}
 11391  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11392  		defer sub.Unsubscribe()
 11393  		for {
 11394  			select {
 11395  			case log := <-logs:
 11396  				// New log arrived, parse the event and forward to the user
 11397  				event := new(WTONApproval)
 11398  				if err := _WTON.contract.UnpackLog(event, "Approval", log); err != nil {
 11399  					return err
 11400  				}
 11401  				event.Raw = log
 11402  
 11403  				select {
 11404  				case sink <- event:
 11405  				case err := <-sub.Err():
 11406  					return err
 11407  				case <-quit:
 11408  					return nil
 11409  				}
 11410  			case err := <-sub.Err():
 11411  				return err
 11412  			case <-quit:
 11413  				return nil
 11414  			}
 11415  		}
 11416  	}), nil
 11417  }
 11418  
 11419  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11420  //
 11421  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 11422  func (_WTON *WTONFilterer) ParseApproval(log types.Log) (*WTONApproval, error) {
 11423  	event := new(WTONApproval)
 11424  	if err := _WTON.contract.UnpackLog(event, "Approval", log); err != nil {
 11425  		return nil, err
 11426  	}
 11427  	return event, nil
 11428  }
 11429  
 11430  // WTONMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the WTON contract.
 11431  type WTONMinterAddedIterator struct {
 11432  	Event *WTONMinterAdded // Event containing the contract specifics and raw log
 11433  
 11434  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11435  	event    string              // Event name to use for unpacking event data
 11436  
 11437  	logs chan types.Log        // Log channel receiving the found contract events
 11438  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11439  	done bool                  // Whether the subscription completed delivering logs
 11440  	fail error                 // Occurred error to stop iteration
 11441  }
 11442  
 11443  // Next advances the iterator to the subsequent event, returning whether there
 11444  // are any more events found. In case of a retrieval or parsing error, false is
 11445  // returned and Error() can be queried for the exact failure.
 11446  func (it *WTONMinterAddedIterator) Next() bool {
 11447  	// If the iterator failed, stop iterating
 11448  	if it.fail != nil {
 11449  		return false
 11450  	}
 11451  	// If the iterator completed, deliver directly whatever's available
 11452  	if it.done {
 11453  		select {
 11454  		case log := <-it.logs:
 11455  			it.Event = new(WTONMinterAdded)
 11456  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11457  				it.fail = err
 11458  				return false
 11459  			}
 11460  			it.Event.Raw = log
 11461  			return true
 11462  
 11463  		default:
 11464  			return false
 11465  		}
 11466  	}
 11467  	// Iterator still in progress, wait for either a data or an error event
 11468  	select {
 11469  	case log := <-it.logs:
 11470  		it.Event = new(WTONMinterAdded)
 11471  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11472  			it.fail = err
 11473  			return false
 11474  		}
 11475  		it.Event.Raw = log
 11476  		return true
 11477  
 11478  	case err := <-it.sub.Err():
 11479  		it.done = true
 11480  		it.fail = err
 11481  		return it.Next()
 11482  	}
 11483  }
 11484  
 11485  // Error returns any retrieval or parsing error occurred during filtering.
 11486  func (it *WTONMinterAddedIterator) Error() error {
 11487  	return it.fail
 11488  }
 11489  
 11490  // Close terminates the iteration process, releasing any pending underlying
 11491  // resources.
 11492  func (it *WTONMinterAddedIterator) Close() error {
 11493  	it.sub.Unsubscribe()
 11494  	return nil
 11495  }
 11496  
 11497  // WTONMinterAdded represents a MinterAdded event raised by the WTON contract.
 11498  type WTONMinterAdded struct {
 11499  	Account common.Address
 11500  	Raw     types.Log // Blockchain specific contextual infos
 11501  }
 11502  
 11503  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 11504  //
 11505  // Solidity: event MinterAdded(address indexed account)
 11506  func (_WTON *WTONFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*WTONMinterAddedIterator, error) {
 11507  
 11508  	var accountRule []interface{}
 11509  	for _, accountItem := range account {
 11510  		accountRule = append(accountRule, accountItem)
 11511  	}
 11512  
 11513  	logs, sub, err := _WTON.contract.FilterLogs(opts, "MinterAdded", accountRule)
 11514  	if err != nil {
 11515  		return nil, err
 11516  	}
 11517  	return &WTONMinterAddedIterator{contract: _WTON.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 11518  }
 11519  
 11520  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 11521  //
 11522  // Solidity: event MinterAdded(address indexed account)
 11523  func (_WTON *WTONFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *WTONMinterAdded, account []common.Address) (event.Subscription, error) {
 11524  
 11525  	var accountRule []interface{}
 11526  	for _, accountItem := range account {
 11527  		accountRule = append(accountRule, accountItem)
 11528  	}
 11529  
 11530  	logs, sub, err := _WTON.contract.WatchLogs(opts, "MinterAdded", accountRule)
 11531  	if err != nil {
 11532  		return nil, err
 11533  	}
 11534  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11535  		defer sub.Unsubscribe()
 11536  		for {
 11537  			select {
 11538  			case log := <-logs:
 11539  				// New log arrived, parse the event and forward to the user
 11540  				event := new(WTONMinterAdded)
 11541  				if err := _WTON.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 11542  					return err
 11543  				}
 11544  				event.Raw = log
 11545  
 11546  				select {
 11547  				case sink <- event:
 11548  				case err := <-sub.Err():
 11549  					return err
 11550  				case <-quit:
 11551  					return nil
 11552  				}
 11553  			case err := <-sub.Err():
 11554  				return err
 11555  			case <-quit:
 11556  				return nil
 11557  			}
 11558  		}
 11559  	}), nil
 11560  }
 11561  
 11562  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 11563  //
 11564  // Solidity: event MinterAdded(address indexed account)
 11565  func (_WTON *WTONFilterer) ParseMinterAdded(log types.Log) (*WTONMinterAdded, error) {
 11566  	event := new(WTONMinterAdded)
 11567  	if err := _WTON.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 11568  		return nil, err
 11569  	}
 11570  	return event, nil
 11571  }
 11572  
 11573  // WTONMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the WTON contract.
 11574  type WTONMinterRemovedIterator struct {
 11575  	Event *WTONMinterRemoved // Event containing the contract specifics and raw log
 11576  
 11577  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11578  	event    string              // Event name to use for unpacking event data
 11579  
 11580  	logs chan types.Log        // Log channel receiving the found contract events
 11581  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11582  	done bool                  // Whether the subscription completed delivering logs
 11583  	fail error                 // Occurred error to stop iteration
 11584  }
 11585  
 11586  // Next advances the iterator to the subsequent event, returning whether there
 11587  // are any more events found. In case of a retrieval or parsing error, false is
 11588  // returned and Error() can be queried for the exact failure.
 11589  func (it *WTONMinterRemovedIterator) Next() bool {
 11590  	// If the iterator failed, stop iterating
 11591  	if it.fail != nil {
 11592  		return false
 11593  	}
 11594  	// If the iterator completed, deliver directly whatever's available
 11595  	if it.done {
 11596  		select {
 11597  		case log := <-it.logs:
 11598  			it.Event = new(WTONMinterRemoved)
 11599  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11600  				it.fail = err
 11601  				return false
 11602  			}
 11603  			it.Event.Raw = log
 11604  			return true
 11605  
 11606  		default:
 11607  			return false
 11608  		}
 11609  	}
 11610  	// Iterator still in progress, wait for either a data or an error event
 11611  	select {
 11612  	case log := <-it.logs:
 11613  		it.Event = new(WTONMinterRemoved)
 11614  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11615  			it.fail = err
 11616  			return false
 11617  		}
 11618  		it.Event.Raw = log
 11619  		return true
 11620  
 11621  	case err := <-it.sub.Err():
 11622  		it.done = true
 11623  		it.fail = err
 11624  		return it.Next()
 11625  	}
 11626  }
 11627  
 11628  // Error returns any retrieval or parsing error occurred during filtering.
 11629  func (it *WTONMinterRemovedIterator) Error() error {
 11630  	return it.fail
 11631  }
 11632  
 11633  // Close terminates the iteration process, releasing any pending underlying
 11634  // resources.
 11635  func (it *WTONMinterRemovedIterator) Close() error {
 11636  	it.sub.Unsubscribe()
 11637  	return nil
 11638  }
 11639  
 11640  // WTONMinterRemoved represents a MinterRemoved event raised by the WTON contract.
 11641  type WTONMinterRemoved struct {
 11642  	Account common.Address
 11643  	Raw     types.Log // Blockchain specific contextual infos
 11644  }
 11645  
 11646  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 11647  //
 11648  // Solidity: event MinterRemoved(address indexed account)
 11649  func (_WTON *WTONFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*WTONMinterRemovedIterator, error) {
 11650  
 11651  	var accountRule []interface{}
 11652  	for _, accountItem := range account {
 11653  		accountRule = append(accountRule, accountItem)
 11654  	}
 11655  
 11656  	logs, sub, err := _WTON.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 11657  	if err != nil {
 11658  		return nil, err
 11659  	}
 11660  	return &WTONMinterRemovedIterator{contract: _WTON.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 11661  }
 11662  
 11663  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 11664  //
 11665  // Solidity: event MinterRemoved(address indexed account)
 11666  func (_WTON *WTONFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *WTONMinterRemoved, account []common.Address) (event.Subscription, error) {
 11667  
 11668  	var accountRule []interface{}
 11669  	for _, accountItem := range account {
 11670  		accountRule = append(accountRule, accountItem)
 11671  	}
 11672  
 11673  	logs, sub, err := _WTON.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 11674  	if err != nil {
 11675  		return nil, err
 11676  	}
 11677  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11678  		defer sub.Unsubscribe()
 11679  		for {
 11680  			select {
 11681  			case log := <-logs:
 11682  				// New log arrived, parse the event and forward to the user
 11683  				event := new(WTONMinterRemoved)
 11684  				if err := _WTON.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 11685  					return err
 11686  				}
 11687  				event.Raw = log
 11688  
 11689  				select {
 11690  				case sink <- event:
 11691  				case err := <-sub.Err():
 11692  					return err
 11693  				case <-quit:
 11694  					return nil
 11695  				}
 11696  			case err := <-sub.Err():
 11697  				return err
 11698  			case <-quit:
 11699  				return nil
 11700  			}
 11701  		}
 11702  	}), nil
 11703  }
 11704  
 11705  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 11706  //
 11707  // Solidity: event MinterRemoved(address indexed account)
 11708  func (_WTON *WTONFilterer) ParseMinterRemoved(log types.Log) (*WTONMinterRemoved, error) {
 11709  	event := new(WTONMinterRemoved)
 11710  	if err := _WTON.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 11711  		return nil, err
 11712  	}
 11713  	return event, nil
 11714  }
 11715  
 11716  // WTONOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the WTON contract.
 11717  type WTONOwnershipTransferredIterator struct {
 11718  	Event *WTONOwnershipTransferred // Event containing the contract specifics and raw log
 11719  
 11720  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11721  	event    string              // Event name to use for unpacking event data
 11722  
 11723  	logs chan types.Log        // Log channel receiving the found contract events
 11724  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11725  	done bool                  // Whether the subscription completed delivering logs
 11726  	fail error                 // Occurred error to stop iteration
 11727  }
 11728  
 11729  // Next advances the iterator to the subsequent event, returning whether there
 11730  // are any more events found. In case of a retrieval or parsing error, false is
 11731  // returned and Error() can be queried for the exact failure.
 11732  func (it *WTONOwnershipTransferredIterator) Next() bool {
 11733  	// If the iterator failed, stop iterating
 11734  	if it.fail != nil {
 11735  		return false
 11736  	}
 11737  	// If the iterator completed, deliver directly whatever's available
 11738  	if it.done {
 11739  		select {
 11740  		case log := <-it.logs:
 11741  			it.Event = new(WTONOwnershipTransferred)
 11742  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11743  				it.fail = err
 11744  				return false
 11745  			}
 11746  			it.Event.Raw = log
 11747  			return true
 11748  
 11749  		default:
 11750  			return false
 11751  		}
 11752  	}
 11753  	// Iterator still in progress, wait for either a data or an error event
 11754  	select {
 11755  	case log := <-it.logs:
 11756  		it.Event = new(WTONOwnershipTransferred)
 11757  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11758  			it.fail = err
 11759  			return false
 11760  		}
 11761  		it.Event.Raw = log
 11762  		return true
 11763  
 11764  	case err := <-it.sub.Err():
 11765  		it.done = true
 11766  		it.fail = err
 11767  		return it.Next()
 11768  	}
 11769  }
 11770  
 11771  // Error returns any retrieval or parsing error occurred during filtering.
 11772  func (it *WTONOwnershipTransferredIterator) Error() error {
 11773  	return it.fail
 11774  }
 11775  
 11776  // Close terminates the iteration process, releasing any pending underlying
 11777  // resources.
 11778  func (it *WTONOwnershipTransferredIterator) Close() error {
 11779  	it.sub.Unsubscribe()
 11780  	return nil
 11781  }
 11782  
 11783  // WTONOwnershipTransferred represents a OwnershipTransferred event raised by the WTON contract.
 11784  type WTONOwnershipTransferred struct {
 11785  	PreviousOwner common.Address
 11786  	NewOwner      common.Address
 11787  	Raw           types.Log // Blockchain specific contextual infos
 11788  }
 11789  
 11790  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 11791  //
 11792  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 11793  func (_WTON *WTONFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*WTONOwnershipTransferredIterator, error) {
 11794  
 11795  	var previousOwnerRule []interface{}
 11796  	for _, previousOwnerItem := range previousOwner {
 11797  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 11798  	}
 11799  	var newOwnerRule []interface{}
 11800  	for _, newOwnerItem := range newOwner {
 11801  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 11802  	}
 11803  
 11804  	logs, sub, err := _WTON.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 11805  	if err != nil {
 11806  		return nil, err
 11807  	}
 11808  	return &WTONOwnershipTransferredIterator{contract: _WTON.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 11809  }
 11810  
 11811  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 11812  //
 11813  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 11814  func (_WTON *WTONFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *WTONOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 11815  
 11816  	var previousOwnerRule []interface{}
 11817  	for _, previousOwnerItem := range previousOwner {
 11818  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 11819  	}
 11820  	var newOwnerRule []interface{}
 11821  	for _, newOwnerItem := range newOwner {
 11822  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 11823  	}
 11824  
 11825  	logs, sub, err := _WTON.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 11826  	if err != nil {
 11827  		return nil, err
 11828  	}
 11829  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11830  		defer sub.Unsubscribe()
 11831  		for {
 11832  			select {
 11833  			case log := <-logs:
 11834  				// New log arrived, parse the event and forward to the user
 11835  				event := new(WTONOwnershipTransferred)
 11836  				if err := _WTON.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 11837  					return err
 11838  				}
 11839  				event.Raw = log
 11840  
 11841  				select {
 11842  				case sink <- event:
 11843  				case err := <-sub.Err():
 11844  					return err
 11845  				case <-quit:
 11846  					return nil
 11847  				}
 11848  			case err := <-sub.Err():
 11849  				return err
 11850  			case <-quit:
 11851  				return nil
 11852  			}
 11853  		}
 11854  	}), nil
 11855  }
 11856  
 11857  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 11858  //
 11859  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 11860  func (_WTON *WTONFilterer) ParseOwnershipTransferred(log types.Log) (*WTONOwnershipTransferred, error) {
 11861  	event := new(WTONOwnershipTransferred)
 11862  	if err := _WTON.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 11863  		return nil, err
 11864  	}
 11865  	return event, nil
 11866  }
 11867  
 11868  // WTONTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the WTON contract.
 11869  type WTONTransferIterator struct {
 11870  	Event *WTONTransfer // Event containing the contract specifics and raw log
 11871  
 11872  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11873  	event    string              // Event name to use for unpacking event data
 11874  
 11875  	logs chan types.Log        // Log channel receiving the found contract events
 11876  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11877  	done bool                  // Whether the subscription completed delivering logs
 11878  	fail error                 // Occurred error to stop iteration
 11879  }
 11880  
 11881  // Next advances the iterator to the subsequent event, returning whether there
 11882  // are any more events found. In case of a retrieval or parsing error, false is
 11883  // returned and Error() can be queried for the exact failure.
 11884  func (it *WTONTransferIterator) Next() bool {
 11885  	// If the iterator failed, stop iterating
 11886  	if it.fail != nil {
 11887  		return false
 11888  	}
 11889  	// If the iterator completed, deliver directly whatever's available
 11890  	if it.done {
 11891  		select {
 11892  		case log := <-it.logs:
 11893  			it.Event = new(WTONTransfer)
 11894  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11895  				it.fail = err
 11896  				return false
 11897  			}
 11898  			it.Event.Raw = log
 11899  			return true
 11900  
 11901  		default:
 11902  			return false
 11903  		}
 11904  	}
 11905  	// Iterator still in progress, wait for either a data or an error event
 11906  	select {
 11907  	case log := <-it.logs:
 11908  		it.Event = new(WTONTransfer)
 11909  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11910  			it.fail = err
 11911  			return false
 11912  		}
 11913  		it.Event.Raw = log
 11914  		return true
 11915  
 11916  	case err := <-it.sub.Err():
 11917  		it.done = true
 11918  		it.fail = err
 11919  		return it.Next()
 11920  	}
 11921  }
 11922  
 11923  // Error returns any retrieval or parsing error occurred during filtering.
 11924  func (it *WTONTransferIterator) Error() error {
 11925  	return it.fail
 11926  }
 11927  
 11928  // Close terminates the iteration process, releasing any pending underlying
 11929  // resources.
 11930  func (it *WTONTransferIterator) Close() error {
 11931  	it.sub.Unsubscribe()
 11932  	return nil
 11933  }
 11934  
 11935  // WTONTransfer represents a Transfer event raised by the WTON contract.
 11936  type WTONTransfer struct {
 11937  	From  common.Address
 11938  	To    common.Address
 11939  	Value *big.Int
 11940  	Raw   types.Log // Blockchain specific contextual infos
 11941  }
 11942  
 11943  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11944  //
 11945  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 11946  func (_WTON *WTONFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*WTONTransferIterator, error) {
 11947  
 11948  	var fromRule []interface{}
 11949  	for _, fromItem := range from {
 11950  		fromRule = append(fromRule, fromItem)
 11951  	}
 11952  	var toRule []interface{}
 11953  	for _, toItem := range to {
 11954  		toRule = append(toRule, toItem)
 11955  	}
 11956  
 11957  	logs, sub, err := _WTON.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 11958  	if err != nil {
 11959  		return nil, err
 11960  	}
 11961  	return &WTONTransferIterator{contract: _WTON.contract, event: "Transfer", logs: logs, sub: sub}, nil
 11962  }
 11963  
 11964  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11965  //
 11966  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 11967  func (_WTON *WTONFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *WTONTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 11968  
 11969  	var fromRule []interface{}
 11970  	for _, fromItem := range from {
 11971  		fromRule = append(fromRule, fromItem)
 11972  	}
 11973  	var toRule []interface{}
 11974  	for _, toItem := range to {
 11975  		toRule = append(toRule, toItem)
 11976  	}
 11977  
 11978  	logs, sub, err := _WTON.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 11979  	if err != nil {
 11980  		return nil, err
 11981  	}
 11982  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11983  		defer sub.Unsubscribe()
 11984  		for {
 11985  			select {
 11986  			case log := <-logs:
 11987  				// New log arrived, parse the event and forward to the user
 11988  				event := new(WTONTransfer)
 11989  				if err := _WTON.contract.UnpackLog(event, "Transfer", log); err != nil {
 11990  					return err
 11991  				}
 11992  				event.Raw = log
 11993  
 11994  				select {
 11995  				case sink <- event:
 11996  				case err := <-sub.Err():
 11997  					return err
 11998  				case <-quit:
 11999  					return nil
 12000  				}
 12001  			case err := <-sub.Err():
 12002  				return err
 12003  			case <-quit:
 12004  				return nil
 12005  			}
 12006  		}
 12007  	}), nil
 12008  }
 12009  
 12010  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 12011  //
 12012  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 12013  func (_WTON *WTONFilterer) ParseTransfer(log types.Log) (*WTONTransfer, error) {
 12014  	event := new(WTONTransfer)
 12015  	if err := _WTON.contract.UnpackLog(event, "Transfer", log); err != nil {
 12016  		return nil, err
 12017  	}
 12018  	return event, nil
 12019  }