github.com/status-im/status-go@v1.1.0/contracts/snt/snt.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 snt
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // ApproveAndCallFallBackABI is the input ABI used to generate the binding from.
    30  const ApproveAndCallFallBackABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"receiveApproval\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
    31  
    32  // ApproveAndCallFallBackFuncSigs maps the 4-byte function signature to its string representation.
    33  var ApproveAndCallFallBackFuncSigs = map[string]string{
    34  	"8f4ffcb1": "receiveApproval(address,uint256,address,bytes)",
    35  }
    36  
    37  // ApproveAndCallFallBack is an auto generated Go binding around an Ethereum contract.
    38  type ApproveAndCallFallBack struct {
    39  	ApproveAndCallFallBackCaller     // Read-only binding to the contract
    40  	ApproveAndCallFallBackTransactor // Write-only binding to the contract
    41  	ApproveAndCallFallBackFilterer   // Log filterer for contract events
    42  }
    43  
    44  // ApproveAndCallFallBackCaller is an auto generated read-only Go binding around an Ethereum contract.
    45  type ApproveAndCallFallBackCaller struct {
    46  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    47  }
    48  
    49  // ApproveAndCallFallBackTransactor is an auto generated write-only Go binding around an Ethereum contract.
    50  type ApproveAndCallFallBackTransactor struct {
    51  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    52  }
    53  
    54  // ApproveAndCallFallBackFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    55  type ApproveAndCallFallBackFilterer struct {
    56  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    57  }
    58  
    59  // ApproveAndCallFallBackSession is an auto generated Go binding around an Ethereum contract,
    60  // with pre-set call and transact options.
    61  type ApproveAndCallFallBackSession struct {
    62  	Contract     *ApproveAndCallFallBack // Generic contract binding to set the session for
    63  	CallOpts     bind.CallOpts           // Call options to use throughout this session
    64  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
    65  }
    66  
    67  // ApproveAndCallFallBackCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    68  // with pre-set call options.
    69  type ApproveAndCallFallBackCallerSession struct {
    70  	Contract *ApproveAndCallFallBackCaller // Generic contract caller binding to set the session for
    71  	CallOpts bind.CallOpts                 // Call options to use throughout this session
    72  }
    73  
    74  // ApproveAndCallFallBackTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    75  // with pre-set transact options.
    76  type ApproveAndCallFallBackTransactorSession struct {
    77  	Contract     *ApproveAndCallFallBackTransactor // Generic contract transactor binding to set the session for
    78  	TransactOpts bind.TransactOpts                 // Transaction auth options to use throughout this session
    79  }
    80  
    81  // ApproveAndCallFallBackRaw is an auto generated low-level Go binding around an Ethereum contract.
    82  type ApproveAndCallFallBackRaw struct {
    83  	Contract *ApproveAndCallFallBack // Generic contract binding to access the raw methods on
    84  }
    85  
    86  // ApproveAndCallFallBackCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    87  type ApproveAndCallFallBackCallerRaw struct {
    88  	Contract *ApproveAndCallFallBackCaller // Generic read-only contract binding to access the raw methods on
    89  }
    90  
    91  // ApproveAndCallFallBackTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    92  type ApproveAndCallFallBackTransactorRaw struct {
    93  	Contract *ApproveAndCallFallBackTransactor // Generic write-only contract binding to access the raw methods on
    94  }
    95  
    96  // NewApproveAndCallFallBack creates a new instance of ApproveAndCallFallBack, bound to a specific deployed contract.
    97  func NewApproveAndCallFallBack(address common.Address, backend bind.ContractBackend) (*ApproveAndCallFallBack, error) {
    98  	contract, err := bindApproveAndCallFallBack(address, backend, backend, backend)
    99  	if err != nil {
   100  		return nil, err
   101  	}
   102  	return &ApproveAndCallFallBack{ApproveAndCallFallBackCaller: ApproveAndCallFallBackCaller{contract: contract}, ApproveAndCallFallBackTransactor: ApproveAndCallFallBackTransactor{contract: contract}, ApproveAndCallFallBackFilterer: ApproveAndCallFallBackFilterer{contract: contract}}, nil
   103  }
   104  
   105  // NewApproveAndCallFallBackCaller creates a new read-only instance of ApproveAndCallFallBack, bound to a specific deployed contract.
   106  func NewApproveAndCallFallBackCaller(address common.Address, caller bind.ContractCaller) (*ApproveAndCallFallBackCaller, error) {
   107  	contract, err := bindApproveAndCallFallBack(address, caller, nil, nil)
   108  	if err != nil {
   109  		return nil, err
   110  	}
   111  	return &ApproveAndCallFallBackCaller{contract: contract}, nil
   112  }
   113  
   114  // NewApproveAndCallFallBackTransactor creates a new write-only instance of ApproveAndCallFallBack, bound to a specific deployed contract.
   115  func NewApproveAndCallFallBackTransactor(address common.Address, transactor bind.ContractTransactor) (*ApproveAndCallFallBackTransactor, error) {
   116  	contract, err := bindApproveAndCallFallBack(address, nil, transactor, nil)
   117  	if err != nil {
   118  		return nil, err
   119  	}
   120  	return &ApproveAndCallFallBackTransactor{contract: contract}, nil
   121  }
   122  
   123  // NewApproveAndCallFallBackFilterer creates a new log filterer instance of ApproveAndCallFallBack, bound to a specific deployed contract.
   124  func NewApproveAndCallFallBackFilterer(address common.Address, filterer bind.ContractFilterer) (*ApproveAndCallFallBackFilterer, error) {
   125  	contract, err := bindApproveAndCallFallBack(address, nil, nil, filterer)
   126  	if err != nil {
   127  		return nil, err
   128  	}
   129  	return &ApproveAndCallFallBackFilterer{contract: contract}, nil
   130  }
   131  
   132  // bindApproveAndCallFallBack binds a generic wrapper to an already deployed contract.
   133  func bindApproveAndCallFallBack(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   134  	parsed, err := abi.JSON(strings.NewReader(ApproveAndCallFallBackABI))
   135  	if err != nil {
   136  		return nil, err
   137  	}
   138  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   139  }
   140  
   141  // Call invokes the (constant) contract method with params as input values and
   142  // sets the output to result. The result type might be a single field for simple
   143  // returns, a slice of interfaces for anonymous returns and a struct for named
   144  // returns.
   145  func (_ApproveAndCallFallBack *ApproveAndCallFallBackRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   146  	return _ApproveAndCallFallBack.Contract.ApproveAndCallFallBackCaller.contract.Call(opts, result, method, params...)
   147  }
   148  
   149  // Transfer initiates a plain transaction to move funds to the contract, calling
   150  // its default method if one is available.
   151  func (_ApproveAndCallFallBack *ApproveAndCallFallBackRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   152  	return _ApproveAndCallFallBack.Contract.ApproveAndCallFallBackTransactor.contract.Transfer(opts)
   153  }
   154  
   155  // Transact invokes the (paid) contract method with params as input values.
   156  func (_ApproveAndCallFallBack *ApproveAndCallFallBackRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   157  	return _ApproveAndCallFallBack.Contract.ApproveAndCallFallBackTransactor.contract.Transact(opts, method, params...)
   158  }
   159  
   160  // Call invokes the (constant) contract method with params as input values and
   161  // sets the output to result. The result type might be a single field for simple
   162  // returns, a slice of interfaces for anonymous returns and a struct for named
   163  // returns.
   164  func (_ApproveAndCallFallBack *ApproveAndCallFallBackCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   165  	return _ApproveAndCallFallBack.Contract.contract.Call(opts, result, method, params...)
   166  }
   167  
   168  // Transfer initiates a plain transaction to move funds to the contract, calling
   169  // its default method if one is available.
   170  func (_ApproveAndCallFallBack *ApproveAndCallFallBackTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   171  	return _ApproveAndCallFallBack.Contract.contract.Transfer(opts)
   172  }
   173  
   174  // Transact invokes the (paid) contract method with params as input values.
   175  func (_ApproveAndCallFallBack *ApproveAndCallFallBackTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   176  	return _ApproveAndCallFallBack.Contract.contract.Transact(opts, method, params...)
   177  }
   178  
   179  // ReceiveApproval is a paid mutator transaction binding the contract method 0x8f4ffcb1.
   180  //
   181  // Solidity: function receiveApproval(address from, uint256 _amount, address _token, bytes _data) returns()
   182  func (_ApproveAndCallFallBack *ApproveAndCallFallBackTransactor) ReceiveApproval(opts *bind.TransactOpts, from common.Address, _amount *big.Int, _token common.Address, _data []byte) (*types.Transaction, error) {
   183  	return _ApproveAndCallFallBack.contract.Transact(opts, "receiveApproval", from, _amount, _token, _data)
   184  }
   185  
   186  // ReceiveApproval is a paid mutator transaction binding the contract method 0x8f4ffcb1.
   187  //
   188  // Solidity: function receiveApproval(address from, uint256 _amount, address _token, bytes _data) returns()
   189  func (_ApproveAndCallFallBack *ApproveAndCallFallBackSession) ReceiveApproval(from common.Address, _amount *big.Int, _token common.Address, _data []byte) (*types.Transaction, error) {
   190  	return _ApproveAndCallFallBack.Contract.ReceiveApproval(&_ApproveAndCallFallBack.TransactOpts, from, _amount, _token, _data)
   191  }
   192  
   193  // ReceiveApproval is a paid mutator transaction binding the contract method 0x8f4ffcb1.
   194  //
   195  // Solidity: function receiveApproval(address from, uint256 _amount, address _token, bytes _data) returns()
   196  func (_ApproveAndCallFallBack *ApproveAndCallFallBackTransactorSession) ReceiveApproval(from common.Address, _amount *big.Int, _token common.Address, _data []byte) (*types.Transaction, error) {
   197  	return _ApproveAndCallFallBack.Contract.ReceiveApproval(&_ApproveAndCallFallBack.TransactOpts, from, _amount, _token, _data)
   198  }
   199  
   200  // ControlledABI is the input ABI used to generate the binding from.
   201  const ControlledABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_newController\",\"type\":\"address\"}],\"name\":\"changeController\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controller\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
   202  
   203  // ControlledFuncSigs maps the 4-byte function signature to its string representation.
   204  var ControlledFuncSigs = map[string]string{
   205  	"3cebb823": "changeController(address)",
   206  	"f77c4791": "controller()",
   207  }
   208  
   209  // ControlledBin is the compiled bytecode used for deploying new contracts.
   210  var ControlledBin = "0x608060405234801561001057600080fd5b50610100806100206000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633cebb8238114604d578063f77c479114607a575b600080fd5b348015605857600080fd5b50607873ffffffffffffffffffffffffffffffffffffffff6004351660b5565b005b348015608557600080fd5b50608c60b8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b50565b60005473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820fe8e3aeccba397cd6ed181c46c148a5ce1f4c75e6b15416b622abe4b1cf81a3d0029"
   211  
   212  // DeployControlled deploys a new Ethereum contract, binding an instance of Controlled to it.
   213  func DeployControlled(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Controlled, error) {
   214  	parsed, err := abi.JSON(strings.NewReader(ControlledABI))
   215  	if err != nil {
   216  		return common.Address{}, nil, nil, err
   217  	}
   218  
   219  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ControlledBin), backend)
   220  	if err != nil {
   221  		return common.Address{}, nil, nil, err
   222  	}
   223  	return address, tx, &Controlled{ControlledCaller: ControlledCaller{contract: contract}, ControlledTransactor: ControlledTransactor{contract: contract}, ControlledFilterer: ControlledFilterer{contract: contract}}, nil
   224  }
   225  
   226  // Controlled is an auto generated Go binding around an Ethereum contract.
   227  type Controlled struct {
   228  	ControlledCaller     // Read-only binding to the contract
   229  	ControlledTransactor // Write-only binding to the contract
   230  	ControlledFilterer   // Log filterer for contract events
   231  }
   232  
   233  // ControlledCaller is an auto generated read-only Go binding around an Ethereum contract.
   234  type ControlledCaller struct {
   235  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   236  }
   237  
   238  // ControlledTransactor is an auto generated write-only Go binding around an Ethereum contract.
   239  type ControlledTransactor struct {
   240  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   241  }
   242  
   243  // ControlledFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   244  type ControlledFilterer struct {
   245  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   246  }
   247  
   248  // ControlledSession is an auto generated Go binding around an Ethereum contract,
   249  // with pre-set call and transact options.
   250  type ControlledSession struct {
   251  	Contract     *Controlled       // Generic contract binding to set the session for
   252  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   253  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   254  }
   255  
   256  // ControlledCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   257  // with pre-set call options.
   258  type ControlledCallerSession struct {
   259  	Contract *ControlledCaller // Generic contract caller binding to set the session for
   260  	CallOpts bind.CallOpts     // Call options to use throughout this session
   261  }
   262  
   263  // ControlledTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   264  // with pre-set transact options.
   265  type ControlledTransactorSession struct {
   266  	Contract     *ControlledTransactor // Generic contract transactor binding to set the session for
   267  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
   268  }
   269  
   270  // ControlledRaw is an auto generated low-level Go binding around an Ethereum contract.
   271  type ControlledRaw struct {
   272  	Contract *Controlled // Generic contract binding to access the raw methods on
   273  }
   274  
   275  // ControlledCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   276  type ControlledCallerRaw struct {
   277  	Contract *ControlledCaller // Generic read-only contract binding to access the raw methods on
   278  }
   279  
   280  // ControlledTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   281  type ControlledTransactorRaw struct {
   282  	Contract *ControlledTransactor // Generic write-only contract binding to access the raw methods on
   283  }
   284  
   285  // NewControlled creates a new instance of Controlled, bound to a specific deployed contract.
   286  func NewControlled(address common.Address, backend bind.ContractBackend) (*Controlled, error) {
   287  	contract, err := bindControlled(address, backend, backend, backend)
   288  	if err != nil {
   289  		return nil, err
   290  	}
   291  	return &Controlled{ControlledCaller: ControlledCaller{contract: contract}, ControlledTransactor: ControlledTransactor{contract: contract}, ControlledFilterer: ControlledFilterer{contract: contract}}, nil
   292  }
   293  
   294  // NewControlledCaller creates a new read-only instance of Controlled, bound to a specific deployed contract.
   295  func NewControlledCaller(address common.Address, caller bind.ContractCaller) (*ControlledCaller, error) {
   296  	contract, err := bindControlled(address, caller, nil, nil)
   297  	if err != nil {
   298  		return nil, err
   299  	}
   300  	return &ControlledCaller{contract: contract}, nil
   301  }
   302  
   303  // NewControlledTransactor creates a new write-only instance of Controlled, bound to a specific deployed contract.
   304  func NewControlledTransactor(address common.Address, transactor bind.ContractTransactor) (*ControlledTransactor, error) {
   305  	contract, err := bindControlled(address, nil, transactor, nil)
   306  	if err != nil {
   307  		return nil, err
   308  	}
   309  	return &ControlledTransactor{contract: contract}, nil
   310  }
   311  
   312  // NewControlledFilterer creates a new log filterer instance of Controlled, bound to a specific deployed contract.
   313  func NewControlledFilterer(address common.Address, filterer bind.ContractFilterer) (*ControlledFilterer, error) {
   314  	contract, err := bindControlled(address, nil, nil, filterer)
   315  	if err != nil {
   316  		return nil, err
   317  	}
   318  	return &ControlledFilterer{contract: contract}, nil
   319  }
   320  
   321  // bindControlled binds a generic wrapper to an already deployed contract.
   322  func bindControlled(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   323  	parsed, err := abi.JSON(strings.NewReader(ControlledABI))
   324  	if err != nil {
   325  		return nil, err
   326  	}
   327  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   328  }
   329  
   330  // Call invokes the (constant) contract method with params as input values and
   331  // sets the output to result. The result type might be a single field for simple
   332  // returns, a slice of interfaces for anonymous returns and a struct for named
   333  // returns.
   334  func (_Controlled *ControlledRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   335  	return _Controlled.Contract.ControlledCaller.contract.Call(opts, result, method, params...)
   336  }
   337  
   338  // Transfer initiates a plain transaction to move funds to the contract, calling
   339  // its default method if one is available.
   340  func (_Controlled *ControlledRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   341  	return _Controlled.Contract.ControlledTransactor.contract.Transfer(opts)
   342  }
   343  
   344  // Transact invokes the (paid) contract method with params as input values.
   345  func (_Controlled *ControlledRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   346  	return _Controlled.Contract.ControlledTransactor.contract.Transact(opts, method, params...)
   347  }
   348  
   349  // Call invokes the (constant) contract method with params as input values and
   350  // sets the output to result. The result type might be a single field for simple
   351  // returns, a slice of interfaces for anonymous returns and a struct for named
   352  // returns.
   353  func (_Controlled *ControlledCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   354  	return _Controlled.Contract.contract.Call(opts, result, method, params...)
   355  }
   356  
   357  // Transfer initiates a plain transaction to move funds to the contract, calling
   358  // its default method if one is available.
   359  func (_Controlled *ControlledTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   360  	return _Controlled.Contract.contract.Transfer(opts)
   361  }
   362  
   363  // Transact invokes the (paid) contract method with params as input values.
   364  func (_Controlled *ControlledTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   365  	return _Controlled.Contract.contract.Transact(opts, method, params...)
   366  }
   367  
   368  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
   369  //
   370  // Solidity: function controller() view returns(address)
   371  func (_Controlled *ControlledCaller) Controller(opts *bind.CallOpts) (common.Address, error) {
   372  	var out []interface{}
   373  	err := _Controlled.contract.Call(opts, &out, "controller")
   374  
   375  	if err != nil {
   376  		return *new(common.Address), err
   377  	}
   378  
   379  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   380  
   381  	return out0, err
   382  
   383  }
   384  
   385  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
   386  //
   387  // Solidity: function controller() view returns(address)
   388  func (_Controlled *ControlledSession) Controller() (common.Address, error) {
   389  	return _Controlled.Contract.Controller(&_Controlled.CallOpts)
   390  }
   391  
   392  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
   393  //
   394  // Solidity: function controller() view returns(address)
   395  func (_Controlled *ControlledCallerSession) Controller() (common.Address, error) {
   396  	return _Controlled.Contract.Controller(&_Controlled.CallOpts)
   397  }
   398  
   399  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
   400  //
   401  // Solidity: function changeController(address _newController) returns()
   402  func (_Controlled *ControlledTransactor) ChangeController(opts *bind.TransactOpts, _newController common.Address) (*types.Transaction, error) {
   403  	return _Controlled.contract.Transact(opts, "changeController", _newController)
   404  }
   405  
   406  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
   407  //
   408  // Solidity: function changeController(address _newController) returns()
   409  func (_Controlled *ControlledSession) ChangeController(_newController common.Address) (*types.Transaction, error) {
   410  	return _Controlled.Contract.ChangeController(&_Controlled.TransactOpts, _newController)
   411  }
   412  
   413  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
   414  //
   415  // Solidity: function changeController(address _newController) returns()
   416  func (_Controlled *ControlledTransactorSession) ChangeController(_newController common.Address) (*types.Transaction, error) {
   417  	return _Controlled.Contract.ChangeController(&_Controlled.TransactOpts, _newController)
   418  }
   419  
   420  // ERC20TokenABI is the input ABI used to generate the binding from.
   421  const ERC20TokenABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"
   422  
   423  // ERC20TokenFuncSigs maps the 4-byte function signature to its string representation.
   424  var ERC20TokenFuncSigs = map[string]string{
   425  	"dd62ed3e": "allowance(address,address)",
   426  	"095ea7b3": "approve(address,uint256)",
   427  	"70a08231": "balanceOf(address)",
   428  	"18160ddd": "totalSupply()",
   429  	"a9059cbb": "transfer(address,uint256)",
   430  	"23b872dd": "transferFrom(address,address,uint256)",
   431  }
   432  
   433  // ERC20Token is an auto generated Go binding around an Ethereum contract.
   434  type ERC20Token struct {
   435  	ERC20TokenCaller     // Read-only binding to the contract
   436  	ERC20TokenTransactor // Write-only binding to the contract
   437  	ERC20TokenFilterer   // Log filterer for contract events
   438  }
   439  
   440  // ERC20TokenCaller is an auto generated read-only Go binding around an Ethereum contract.
   441  type ERC20TokenCaller struct {
   442  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   443  }
   444  
   445  // ERC20TokenTransactor is an auto generated write-only Go binding around an Ethereum contract.
   446  type ERC20TokenTransactor struct {
   447  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   448  }
   449  
   450  // ERC20TokenFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   451  type ERC20TokenFilterer struct {
   452  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   453  }
   454  
   455  // ERC20TokenSession is an auto generated Go binding around an Ethereum contract,
   456  // with pre-set call and transact options.
   457  type ERC20TokenSession struct {
   458  	Contract     *ERC20Token       // Generic contract binding to set the session for
   459  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   460  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   461  }
   462  
   463  // ERC20TokenCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   464  // with pre-set call options.
   465  type ERC20TokenCallerSession struct {
   466  	Contract *ERC20TokenCaller // Generic contract caller binding to set the session for
   467  	CallOpts bind.CallOpts     // Call options to use throughout this session
   468  }
   469  
   470  // ERC20TokenTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   471  // with pre-set transact options.
   472  type ERC20TokenTransactorSession struct {
   473  	Contract     *ERC20TokenTransactor // Generic contract transactor binding to set the session for
   474  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
   475  }
   476  
   477  // ERC20TokenRaw is an auto generated low-level Go binding around an Ethereum contract.
   478  type ERC20TokenRaw struct {
   479  	Contract *ERC20Token // Generic contract binding to access the raw methods on
   480  }
   481  
   482  // ERC20TokenCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   483  type ERC20TokenCallerRaw struct {
   484  	Contract *ERC20TokenCaller // Generic read-only contract binding to access the raw methods on
   485  }
   486  
   487  // ERC20TokenTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   488  type ERC20TokenTransactorRaw struct {
   489  	Contract *ERC20TokenTransactor // Generic write-only contract binding to access the raw methods on
   490  }
   491  
   492  // NewERC20Token creates a new instance of ERC20Token, bound to a specific deployed contract.
   493  func NewERC20Token(address common.Address, backend bind.ContractBackend) (*ERC20Token, error) {
   494  	contract, err := bindERC20Token(address, backend, backend, backend)
   495  	if err != nil {
   496  		return nil, err
   497  	}
   498  	return &ERC20Token{ERC20TokenCaller: ERC20TokenCaller{contract: contract}, ERC20TokenTransactor: ERC20TokenTransactor{contract: contract}, ERC20TokenFilterer: ERC20TokenFilterer{contract: contract}}, nil
   499  }
   500  
   501  // NewERC20TokenCaller creates a new read-only instance of ERC20Token, bound to a specific deployed contract.
   502  func NewERC20TokenCaller(address common.Address, caller bind.ContractCaller) (*ERC20TokenCaller, error) {
   503  	contract, err := bindERC20Token(address, caller, nil, nil)
   504  	if err != nil {
   505  		return nil, err
   506  	}
   507  	return &ERC20TokenCaller{contract: contract}, nil
   508  }
   509  
   510  // NewERC20TokenTransactor creates a new write-only instance of ERC20Token, bound to a specific deployed contract.
   511  func NewERC20TokenTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20TokenTransactor, error) {
   512  	contract, err := bindERC20Token(address, nil, transactor, nil)
   513  	if err != nil {
   514  		return nil, err
   515  	}
   516  	return &ERC20TokenTransactor{contract: contract}, nil
   517  }
   518  
   519  // NewERC20TokenFilterer creates a new log filterer instance of ERC20Token, bound to a specific deployed contract.
   520  func NewERC20TokenFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20TokenFilterer, error) {
   521  	contract, err := bindERC20Token(address, nil, nil, filterer)
   522  	if err != nil {
   523  		return nil, err
   524  	}
   525  	return &ERC20TokenFilterer{contract: contract}, nil
   526  }
   527  
   528  // bindERC20Token binds a generic wrapper to an already deployed contract.
   529  func bindERC20Token(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   530  	parsed, err := abi.JSON(strings.NewReader(ERC20TokenABI))
   531  	if err != nil {
   532  		return nil, err
   533  	}
   534  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   535  }
   536  
   537  // Call invokes the (constant) contract method with params as input values and
   538  // sets the output to result. The result type might be a single field for simple
   539  // returns, a slice of interfaces for anonymous returns and a struct for named
   540  // returns.
   541  func (_ERC20Token *ERC20TokenRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   542  	return _ERC20Token.Contract.ERC20TokenCaller.contract.Call(opts, result, method, params...)
   543  }
   544  
   545  // Transfer initiates a plain transaction to move funds to the contract, calling
   546  // its default method if one is available.
   547  func (_ERC20Token *ERC20TokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   548  	return _ERC20Token.Contract.ERC20TokenTransactor.contract.Transfer(opts)
   549  }
   550  
   551  // Transact invokes the (paid) contract method with params as input values.
   552  func (_ERC20Token *ERC20TokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   553  	return _ERC20Token.Contract.ERC20TokenTransactor.contract.Transact(opts, method, params...)
   554  }
   555  
   556  // Call invokes the (constant) contract method with params as input values and
   557  // sets the output to result. The result type might be a single field for simple
   558  // returns, a slice of interfaces for anonymous returns and a struct for named
   559  // returns.
   560  func (_ERC20Token *ERC20TokenCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   561  	return _ERC20Token.Contract.contract.Call(opts, result, method, params...)
   562  }
   563  
   564  // Transfer initiates a plain transaction to move funds to the contract, calling
   565  // its default method if one is available.
   566  func (_ERC20Token *ERC20TokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   567  	return _ERC20Token.Contract.contract.Transfer(opts)
   568  }
   569  
   570  // Transact invokes the (paid) contract method with params as input values.
   571  func (_ERC20Token *ERC20TokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   572  	return _ERC20Token.Contract.contract.Transact(opts, method, params...)
   573  }
   574  
   575  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   576  //
   577  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
   578  func (_ERC20Token *ERC20TokenCaller) Allowance(opts *bind.CallOpts, _owner common.Address, _spender common.Address) (*big.Int, error) {
   579  	var out []interface{}
   580  	err := _ERC20Token.contract.Call(opts, &out, "allowance", _owner, _spender)
   581  
   582  	if err != nil {
   583  		return *new(*big.Int), err
   584  	}
   585  
   586  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   587  
   588  	return out0, err
   589  
   590  }
   591  
   592  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   593  //
   594  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
   595  func (_ERC20Token *ERC20TokenSession) Allowance(_owner common.Address, _spender common.Address) (*big.Int, error) {
   596  	return _ERC20Token.Contract.Allowance(&_ERC20Token.CallOpts, _owner, _spender)
   597  }
   598  
   599  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   600  //
   601  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
   602  func (_ERC20Token *ERC20TokenCallerSession) Allowance(_owner common.Address, _spender common.Address) (*big.Int, error) {
   603  	return _ERC20Token.Contract.Allowance(&_ERC20Token.CallOpts, _owner, _spender)
   604  }
   605  
   606  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   607  //
   608  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
   609  func (_ERC20Token *ERC20TokenCaller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) {
   610  	var out []interface{}
   611  	err := _ERC20Token.contract.Call(opts, &out, "balanceOf", _owner)
   612  
   613  	if err != nil {
   614  		return *new(*big.Int), err
   615  	}
   616  
   617  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   618  
   619  	return out0, err
   620  
   621  }
   622  
   623  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   624  //
   625  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
   626  func (_ERC20Token *ERC20TokenSession) BalanceOf(_owner common.Address) (*big.Int, error) {
   627  	return _ERC20Token.Contract.BalanceOf(&_ERC20Token.CallOpts, _owner)
   628  }
   629  
   630  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   631  //
   632  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
   633  func (_ERC20Token *ERC20TokenCallerSession) BalanceOf(_owner common.Address) (*big.Int, error) {
   634  	return _ERC20Token.Contract.BalanceOf(&_ERC20Token.CallOpts, _owner)
   635  }
   636  
   637  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   638  //
   639  // Solidity: function totalSupply() view returns(uint256)
   640  func (_ERC20Token *ERC20TokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
   641  	var out []interface{}
   642  	err := _ERC20Token.contract.Call(opts, &out, "totalSupply")
   643  
   644  	if err != nil {
   645  		return *new(*big.Int), err
   646  	}
   647  
   648  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   649  
   650  	return out0, err
   651  
   652  }
   653  
   654  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   655  //
   656  // Solidity: function totalSupply() view returns(uint256)
   657  func (_ERC20Token *ERC20TokenSession) TotalSupply() (*big.Int, error) {
   658  	return _ERC20Token.Contract.TotalSupply(&_ERC20Token.CallOpts)
   659  }
   660  
   661  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   662  //
   663  // Solidity: function totalSupply() view returns(uint256)
   664  func (_ERC20Token *ERC20TokenCallerSession) TotalSupply() (*big.Int, error) {
   665  	return _ERC20Token.Contract.TotalSupply(&_ERC20Token.CallOpts)
   666  }
   667  
   668  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   669  //
   670  // Solidity: function approve(address _spender, uint256 _value) returns(bool success)
   671  func (_ERC20Token *ERC20TokenTransactor) Approve(opts *bind.TransactOpts, _spender common.Address, _value *big.Int) (*types.Transaction, error) {
   672  	return _ERC20Token.contract.Transact(opts, "approve", _spender, _value)
   673  }
   674  
   675  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   676  //
   677  // Solidity: function approve(address _spender, uint256 _value) returns(bool success)
   678  func (_ERC20Token *ERC20TokenSession) Approve(_spender common.Address, _value *big.Int) (*types.Transaction, error) {
   679  	return _ERC20Token.Contract.Approve(&_ERC20Token.TransactOpts, _spender, _value)
   680  }
   681  
   682  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   683  //
   684  // Solidity: function approve(address _spender, uint256 _value) returns(bool success)
   685  func (_ERC20Token *ERC20TokenTransactorSession) Approve(_spender common.Address, _value *big.Int) (*types.Transaction, error) {
   686  	return _ERC20Token.Contract.Approve(&_ERC20Token.TransactOpts, _spender, _value)
   687  }
   688  
   689  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
   690  //
   691  // Solidity: function transfer(address _to, uint256 _value) returns(bool success)
   692  func (_ERC20Token *ERC20TokenTransactor) Transfer(opts *bind.TransactOpts, _to common.Address, _value *big.Int) (*types.Transaction, error) {
   693  	return _ERC20Token.contract.Transact(opts, "transfer", _to, _value)
   694  }
   695  
   696  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
   697  //
   698  // Solidity: function transfer(address _to, uint256 _value) returns(bool success)
   699  func (_ERC20Token *ERC20TokenSession) Transfer(_to common.Address, _value *big.Int) (*types.Transaction, error) {
   700  	return _ERC20Token.Contract.Transfer(&_ERC20Token.TransactOpts, _to, _value)
   701  }
   702  
   703  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
   704  //
   705  // Solidity: function transfer(address _to, uint256 _value) returns(bool success)
   706  func (_ERC20Token *ERC20TokenTransactorSession) Transfer(_to common.Address, _value *big.Int) (*types.Transaction, error) {
   707  	return _ERC20Token.Contract.Transfer(&_ERC20Token.TransactOpts, _to, _value)
   708  }
   709  
   710  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   711  //
   712  // Solidity: function transferFrom(address _from, address _to, uint256 _value) returns(bool success)
   713  func (_ERC20Token *ERC20TokenTransactor) TransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int) (*types.Transaction, error) {
   714  	return _ERC20Token.contract.Transact(opts, "transferFrom", _from, _to, _value)
   715  }
   716  
   717  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   718  //
   719  // Solidity: function transferFrom(address _from, address _to, uint256 _value) returns(bool success)
   720  func (_ERC20Token *ERC20TokenSession) TransferFrom(_from common.Address, _to common.Address, _value *big.Int) (*types.Transaction, error) {
   721  	return _ERC20Token.Contract.TransferFrom(&_ERC20Token.TransactOpts, _from, _to, _value)
   722  }
   723  
   724  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   725  //
   726  // Solidity: function transferFrom(address _from, address _to, uint256 _value) returns(bool success)
   727  func (_ERC20Token *ERC20TokenTransactorSession) TransferFrom(_from common.Address, _to common.Address, _value *big.Int) (*types.Transaction, error) {
   728  	return _ERC20Token.Contract.TransferFrom(&_ERC20Token.TransactOpts, _from, _to, _value)
   729  }
   730  
   731  // ERC20TokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Token contract.
   732  type ERC20TokenApprovalIterator struct {
   733  	Event *ERC20TokenApproval // Event containing the contract specifics and raw log
   734  
   735  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   736  	event    string              // Event name to use for unpacking event data
   737  
   738  	logs chan types.Log        // Log channel receiving the found contract events
   739  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   740  	done bool                  // Whether the subscription completed delivering logs
   741  	fail error                 // Occurred error to stop iteration
   742  }
   743  
   744  // Next advances the iterator to the subsequent event, returning whether there
   745  // are any more events found. In case of a retrieval or parsing error, false is
   746  // returned and Error() can be queried for the exact failure.
   747  func (it *ERC20TokenApprovalIterator) Next() bool {
   748  	// If the iterator failed, stop iterating
   749  	if it.fail != nil {
   750  		return false
   751  	}
   752  	// If the iterator completed, deliver directly whatever's available
   753  	if it.done {
   754  		select {
   755  		case log := <-it.logs:
   756  			it.Event = new(ERC20TokenApproval)
   757  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   758  				it.fail = err
   759  				return false
   760  			}
   761  			it.Event.Raw = log
   762  			return true
   763  
   764  		default:
   765  			return false
   766  		}
   767  	}
   768  	// Iterator still in progress, wait for either a data or an error event
   769  	select {
   770  	case log := <-it.logs:
   771  		it.Event = new(ERC20TokenApproval)
   772  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   773  			it.fail = err
   774  			return false
   775  		}
   776  		it.Event.Raw = log
   777  		return true
   778  
   779  	case err := <-it.sub.Err():
   780  		it.done = true
   781  		it.fail = err
   782  		return it.Next()
   783  	}
   784  }
   785  
   786  // Error returns any retrieval or parsing error occurred during filtering.
   787  func (it *ERC20TokenApprovalIterator) Error() error {
   788  	return it.fail
   789  }
   790  
   791  // Close terminates the iteration process, releasing any pending underlying
   792  // resources.
   793  func (it *ERC20TokenApprovalIterator) Close() error {
   794  	it.sub.Unsubscribe()
   795  	return nil
   796  }
   797  
   798  // ERC20TokenApproval represents a Approval event raised by the ERC20Token contract.
   799  type ERC20TokenApproval struct {
   800  	Owner   common.Address
   801  	Spender common.Address
   802  	Value   *big.Int
   803  	Raw     types.Log // Blockchain specific contextual infos
   804  }
   805  
   806  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   807  //
   808  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _value)
   809  func (_ERC20Token *ERC20TokenFilterer) FilterApproval(opts *bind.FilterOpts, _owner []common.Address, _spender []common.Address) (*ERC20TokenApprovalIterator, error) {
   810  
   811  	var _ownerRule []interface{}
   812  	for _, _ownerItem := range _owner {
   813  		_ownerRule = append(_ownerRule, _ownerItem)
   814  	}
   815  	var _spenderRule []interface{}
   816  	for _, _spenderItem := range _spender {
   817  		_spenderRule = append(_spenderRule, _spenderItem)
   818  	}
   819  
   820  	logs, sub, err := _ERC20Token.contract.FilterLogs(opts, "Approval", _ownerRule, _spenderRule)
   821  	if err != nil {
   822  		return nil, err
   823  	}
   824  	return &ERC20TokenApprovalIterator{contract: _ERC20Token.contract, event: "Approval", logs: logs, sub: sub}, nil
   825  }
   826  
   827  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   828  //
   829  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _value)
   830  func (_ERC20Token *ERC20TokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20TokenApproval, _owner []common.Address, _spender []common.Address) (event.Subscription, error) {
   831  
   832  	var _ownerRule []interface{}
   833  	for _, _ownerItem := range _owner {
   834  		_ownerRule = append(_ownerRule, _ownerItem)
   835  	}
   836  	var _spenderRule []interface{}
   837  	for _, _spenderItem := range _spender {
   838  		_spenderRule = append(_spenderRule, _spenderItem)
   839  	}
   840  
   841  	logs, sub, err := _ERC20Token.contract.WatchLogs(opts, "Approval", _ownerRule, _spenderRule)
   842  	if err != nil {
   843  		return nil, err
   844  	}
   845  	return event.NewSubscription(func(quit <-chan struct{}) error {
   846  		defer sub.Unsubscribe()
   847  		for {
   848  			select {
   849  			case log := <-logs:
   850  				// New log arrived, parse the event and forward to the user
   851  				event := new(ERC20TokenApproval)
   852  				if err := _ERC20Token.contract.UnpackLog(event, "Approval", log); err != nil {
   853  					return err
   854  				}
   855  				event.Raw = log
   856  
   857  				select {
   858  				case sink <- event:
   859  				case err := <-sub.Err():
   860  					return err
   861  				case <-quit:
   862  					return nil
   863  				}
   864  			case err := <-sub.Err():
   865  				return err
   866  			case <-quit:
   867  				return nil
   868  			}
   869  		}
   870  	}), nil
   871  }
   872  
   873  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   874  //
   875  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _value)
   876  func (_ERC20Token *ERC20TokenFilterer) ParseApproval(log types.Log) (*ERC20TokenApproval, error) {
   877  	event := new(ERC20TokenApproval)
   878  	if err := _ERC20Token.contract.UnpackLog(event, "Approval", log); err != nil {
   879  		return nil, err
   880  	}
   881  	event.Raw = log
   882  	return event, nil
   883  }
   884  
   885  // ERC20TokenTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Token contract.
   886  type ERC20TokenTransferIterator struct {
   887  	Event *ERC20TokenTransfer // Event containing the contract specifics and raw log
   888  
   889  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   890  	event    string              // Event name to use for unpacking event data
   891  
   892  	logs chan types.Log        // Log channel receiving the found contract events
   893  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   894  	done bool                  // Whether the subscription completed delivering logs
   895  	fail error                 // Occurred error to stop iteration
   896  }
   897  
   898  // Next advances the iterator to the subsequent event, returning whether there
   899  // are any more events found. In case of a retrieval or parsing error, false is
   900  // returned and Error() can be queried for the exact failure.
   901  func (it *ERC20TokenTransferIterator) Next() bool {
   902  	// If the iterator failed, stop iterating
   903  	if it.fail != nil {
   904  		return false
   905  	}
   906  	// If the iterator completed, deliver directly whatever's available
   907  	if it.done {
   908  		select {
   909  		case log := <-it.logs:
   910  			it.Event = new(ERC20TokenTransfer)
   911  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   912  				it.fail = err
   913  				return false
   914  			}
   915  			it.Event.Raw = log
   916  			return true
   917  
   918  		default:
   919  			return false
   920  		}
   921  	}
   922  	// Iterator still in progress, wait for either a data or an error event
   923  	select {
   924  	case log := <-it.logs:
   925  		it.Event = new(ERC20TokenTransfer)
   926  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   927  			it.fail = err
   928  			return false
   929  		}
   930  		it.Event.Raw = log
   931  		return true
   932  
   933  	case err := <-it.sub.Err():
   934  		it.done = true
   935  		it.fail = err
   936  		return it.Next()
   937  	}
   938  }
   939  
   940  // Error returns any retrieval or parsing error occurred during filtering.
   941  func (it *ERC20TokenTransferIterator) Error() error {
   942  	return it.fail
   943  }
   944  
   945  // Close terminates the iteration process, releasing any pending underlying
   946  // resources.
   947  func (it *ERC20TokenTransferIterator) Close() error {
   948  	it.sub.Unsubscribe()
   949  	return nil
   950  }
   951  
   952  // ERC20TokenTransfer represents a Transfer event raised by the ERC20Token contract.
   953  type ERC20TokenTransfer struct {
   954  	From  common.Address
   955  	To    common.Address
   956  	Value *big.Int
   957  	Raw   types.Log // Blockchain specific contextual infos
   958  }
   959  
   960  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
   961  //
   962  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _value)
   963  func (_ERC20Token *ERC20TokenFilterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address) (*ERC20TokenTransferIterator, error) {
   964  
   965  	var _fromRule []interface{}
   966  	for _, _fromItem := range _from {
   967  		_fromRule = append(_fromRule, _fromItem)
   968  	}
   969  	var _toRule []interface{}
   970  	for _, _toItem := range _to {
   971  		_toRule = append(_toRule, _toItem)
   972  	}
   973  
   974  	logs, sub, err := _ERC20Token.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule)
   975  	if err != nil {
   976  		return nil, err
   977  	}
   978  	return &ERC20TokenTransferIterator{contract: _ERC20Token.contract, event: "Transfer", logs: logs, sub: sub}, nil
   979  }
   980  
   981  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
   982  //
   983  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _value)
   984  func (_ERC20Token *ERC20TokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20TokenTransfer, _from []common.Address, _to []common.Address) (event.Subscription, error) {
   985  
   986  	var _fromRule []interface{}
   987  	for _, _fromItem := range _from {
   988  		_fromRule = append(_fromRule, _fromItem)
   989  	}
   990  	var _toRule []interface{}
   991  	for _, _toItem := range _to {
   992  		_toRule = append(_toRule, _toItem)
   993  	}
   994  
   995  	logs, sub, err := _ERC20Token.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule)
   996  	if err != nil {
   997  		return nil, err
   998  	}
   999  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1000  		defer sub.Unsubscribe()
  1001  		for {
  1002  			select {
  1003  			case log := <-logs:
  1004  				// New log arrived, parse the event and forward to the user
  1005  				event := new(ERC20TokenTransfer)
  1006  				if err := _ERC20Token.contract.UnpackLog(event, "Transfer", log); err != nil {
  1007  					return err
  1008  				}
  1009  				event.Raw = log
  1010  
  1011  				select {
  1012  				case sink <- event:
  1013  				case err := <-sub.Err():
  1014  					return err
  1015  				case <-quit:
  1016  					return nil
  1017  				}
  1018  			case err := <-sub.Err():
  1019  				return err
  1020  			case <-quit:
  1021  				return nil
  1022  			}
  1023  		}
  1024  	}), nil
  1025  }
  1026  
  1027  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1028  //
  1029  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _value)
  1030  func (_ERC20Token *ERC20TokenFilterer) ParseTransfer(log types.Log) (*ERC20TokenTransfer, error) {
  1031  	event := new(ERC20TokenTransfer)
  1032  	if err := _ERC20Token.contract.UnpackLog(event, "Transfer", log); err != nil {
  1033  		return nil, err
  1034  	}
  1035  	event.Raw = log
  1036  	return event, nil
  1037  }
  1038  
  1039  // MiniMeTokenABI is the input ABI used to generate the binding from.
  1040  const MiniMeTokenABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"creationBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newController\",\"type\":\"address\"}],\"name\":\"changeController\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"balanceOfAt\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cloneTokenName\",\"type\":\"string\"},{\"name\":\"_cloneDecimalUnits\",\"type\":\"uint8\"},{\"name\":\"_cloneTokenSymbol\",\"type\":\"string\"},{\"name\":\"_snapshotBlock\",\"type\":\"uint256\"},{\"name\":\"_transfersEnabled\",\"type\":\"bool\"}],\"name\":\"createCloneToken\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"parentToken\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"generateTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"totalSupplyAt\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transfersEnabled\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"parentSnapShotBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"destroyTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"claimTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenFactory\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_transfersEnabled\",\"type\":\"bool\"}],\"name\":\"enableTransfers\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controller\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_tokenFactory\",\"type\":\"address\"},{\"name\":\"_parentToken\",\"type\":\"address\"},{\"name\":\"_parentSnapShotBlock\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"},{\"name\":\"_transfersEnabled\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_controller\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ClaimedTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_cloneToken\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_snapshotBlock\",\"type\":\"uint256\"}],\"name\":\"NewCloneToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"
  1041  
  1042  // MiniMeTokenFuncSigs maps the 4-byte function signature to its string representation.
  1043  var MiniMeTokenFuncSigs = map[string]string{
  1044  	"dd62ed3e": "allowance(address,address)",
  1045  	"095ea7b3": "approve(address,uint256)",
  1046  	"cae9ca51": "approveAndCall(address,uint256,bytes)",
  1047  	"70a08231": "balanceOf(address)",
  1048  	"4ee2cd7e": "balanceOfAt(address,uint256)",
  1049  	"3cebb823": "changeController(address)",
  1050  	"df8de3e7": "claimTokens(address)",
  1051  	"f77c4791": "controller()",
  1052  	"6638c087": "createCloneToken(string,uint8,string,uint256,bool)",
  1053  	"17634514": "creationBlock()",
  1054  	"313ce567": "decimals()",
  1055  	"d3ce77fe": "destroyTokens(address,uint256)",
  1056  	"f41e60c5": "enableTransfers(bool)",
  1057  	"827f32c0": "generateTokens(address,uint256)",
  1058  	"06fdde03": "name()",
  1059  	"c5bcc4f1": "parentSnapShotBlock()",
  1060  	"80a54001": "parentToken()",
  1061  	"95d89b41": "symbol()",
  1062  	"e77772fe": "tokenFactory()",
  1063  	"18160ddd": "totalSupply()",
  1064  	"981b24d0": "totalSupplyAt(uint256)",
  1065  	"a9059cbb": "transfer(address,uint256)",
  1066  	"23b872dd": "transferFrom(address,address,uint256)",
  1067  	"bef97c87": "transfersEnabled()",
  1068  	"54fd4d50": "version()",
  1069  }
  1070  
  1071  // MiniMeTokenBin is the compiled bytecode used for deploying new contracts.
  1072  var MiniMeTokenBin = "0x60c0604052600760808190527f4d4d545f302e310000000000000000000000000000000000000000000000000060a090815261003e9160049190610063565b5034801561004b57600080fd5b506040516108113803806108118339016040526100fe565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a457805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d15782518255916020019190600101906100b6565b506100dd9291506100e1565b5090565b6100fb91905b808211156100dd57600081556001016100e7565b90565b6107048061010d6000396000f3006080604052600436106101485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461014a578063095ea7b3146101d4578063176345141461020c57806318160ddd1461023357806323b872dd14610248578063313ce567146102725780633cebb8231461029d5780634ee2cd7e146102be57806354fd4d50146102e25780636638c087146102f757806370a08231146103ba57806380a54001146103db578063827f32c0146101d457806395d89b41146103f0578063981b24d014610405578063a9059cbb146101d4578063bef97c871461041d578063c5bcc4f114610432578063cae9ca5114610447578063d3ce77fe146101d4578063dd62ed3e146104b0578063df8de3e71461029d578063e77772fe146104d7578063f41e60c5146104ec578063f77c479114610506575b005b34801561015657600080fd5b5061015f61051b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610199578181015183820152602001610181565b50505050905090810190601f1680156101c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e057600080fd5b506101f8600160a060020a03600435166024356105a8565b604080519115158252519081900360200190f35b34801561021857600080fd5b506102216105b0565b60408051918252519081900360200190f35b34801561023f57600080fd5b506102216105b6565b34801561025457600080fd5b506101f8600160a060020a03600435811690602435166044356105bb565b34801561027e57600080fd5b506102876105c4565b6040805160ff9092168252519081900360200190f35b3480156102a957600080fd5b50610148600160a060020a03600435166105cd565b3480156102ca57600080fd5b50610221600160a060020a03600435166024356105a8565b3480156102ee57600080fd5b5061015f6105d0565b34801561030357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261039e94369492936024939284019190819084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b60ff8b35169b909a90999401975091955091820193509150819084018382808284375094975050843595505050505060200135151561062b565b60408051600160a060020a039092168252519081900360200190f35b3480156103c657600080fd5b50610221600160a060020a0360043516610636565b3480156103e757600080fd5b5061039e61063c565b3480156103fc57600080fd5b5061015f61064b565b34801561041157600080fd5b50610221600435610636565b34801561042957600080fd5b506101f86106a6565b34801561043e57600080fd5b506102216106af565b34801561045357600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101f8948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506105bb9650505050505050565b3480156104bc57600080fd5b50610221600160a060020a03600435811690602435166105a8565b3480156104e357600080fd5b5061039e6106b5565b3480156104f857600080fd5b5061014860043515156105cd565b34801561051257600080fd5b5061039e6106c9565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105a05780601f10610575576101008083540402835291602001916105a0565b820191906000526020600020905b81548152906001019060200180831161058357829003601f168201915b505050505081565b600092915050565b60075481565b600090565b60009392505050565b60025460ff1681565b50565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105a05780601f10610575576101008083540402835291602001916105a0565b600095945050505050565b50600090565b600554600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105a05780601f10610575576101008083540402835291602001916105a0565b600b5460ff1681565b60065481565b600b546101009004600160a060020a031681565b600054600160a060020a0316815600a165627a7a723058207f52ec28ddd26f36564d70817f98768042227de89c606c567120b8e1562a11fb0029"
  1073  
  1074  // DeployMiniMeToken deploys a new Ethereum contract, binding an instance of MiniMeToken to it.
  1075  func DeployMiniMeToken(auth *bind.TransactOpts, backend bind.ContractBackend, _tokenFactory common.Address, _parentToken common.Address, _parentSnapShotBlock *big.Int, _tokenName string, _decimalUnits uint8, _tokenSymbol string, _transfersEnabled bool) (common.Address, *types.Transaction, *MiniMeToken, error) {
  1076  	parsed, err := abi.JSON(strings.NewReader(MiniMeTokenABI))
  1077  	if err != nil {
  1078  		return common.Address{}, nil, nil, err
  1079  	}
  1080  
  1081  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(MiniMeTokenBin), backend, _tokenFactory, _parentToken, _parentSnapShotBlock, _tokenName, _decimalUnits, _tokenSymbol, _transfersEnabled)
  1082  	if err != nil {
  1083  		return common.Address{}, nil, nil, err
  1084  	}
  1085  	return address, tx, &MiniMeToken{MiniMeTokenCaller: MiniMeTokenCaller{contract: contract}, MiniMeTokenTransactor: MiniMeTokenTransactor{contract: contract}, MiniMeTokenFilterer: MiniMeTokenFilterer{contract: contract}}, nil
  1086  }
  1087  
  1088  // MiniMeToken is an auto generated Go binding around an Ethereum contract.
  1089  type MiniMeToken struct {
  1090  	MiniMeTokenCaller     // Read-only binding to the contract
  1091  	MiniMeTokenTransactor // Write-only binding to the contract
  1092  	MiniMeTokenFilterer   // Log filterer for contract events
  1093  }
  1094  
  1095  // MiniMeTokenCaller is an auto generated read-only Go binding around an Ethereum contract.
  1096  type MiniMeTokenCaller struct {
  1097  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1098  }
  1099  
  1100  // MiniMeTokenTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1101  type MiniMeTokenTransactor struct {
  1102  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1103  }
  1104  
  1105  // MiniMeTokenFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1106  type MiniMeTokenFilterer struct {
  1107  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1108  }
  1109  
  1110  // MiniMeTokenSession is an auto generated Go binding around an Ethereum contract,
  1111  // with pre-set call and transact options.
  1112  type MiniMeTokenSession struct {
  1113  	Contract     *MiniMeToken      // Generic contract binding to set the session for
  1114  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1115  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1116  }
  1117  
  1118  // MiniMeTokenCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1119  // with pre-set call options.
  1120  type MiniMeTokenCallerSession struct {
  1121  	Contract *MiniMeTokenCaller // Generic contract caller binding to set the session for
  1122  	CallOpts bind.CallOpts      // Call options to use throughout this session
  1123  }
  1124  
  1125  // MiniMeTokenTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1126  // with pre-set transact options.
  1127  type MiniMeTokenTransactorSession struct {
  1128  	Contract     *MiniMeTokenTransactor // Generic contract transactor binding to set the session for
  1129  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
  1130  }
  1131  
  1132  // MiniMeTokenRaw is an auto generated low-level Go binding around an Ethereum contract.
  1133  type MiniMeTokenRaw struct {
  1134  	Contract *MiniMeToken // Generic contract binding to access the raw methods on
  1135  }
  1136  
  1137  // MiniMeTokenCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1138  type MiniMeTokenCallerRaw struct {
  1139  	Contract *MiniMeTokenCaller // Generic read-only contract binding to access the raw methods on
  1140  }
  1141  
  1142  // MiniMeTokenTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1143  type MiniMeTokenTransactorRaw struct {
  1144  	Contract *MiniMeTokenTransactor // Generic write-only contract binding to access the raw methods on
  1145  }
  1146  
  1147  // NewMiniMeToken creates a new instance of MiniMeToken, bound to a specific deployed contract.
  1148  func NewMiniMeToken(address common.Address, backend bind.ContractBackend) (*MiniMeToken, error) {
  1149  	contract, err := bindMiniMeToken(address, backend, backend, backend)
  1150  	if err != nil {
  1151  		return nil, err
  1152  	}
  1153  	return &MiniMeToken{MiniMeTokenCaller: MiniMeTokenCaller{contract: contract}, MiniMeTokenTransactor: MiniMeTokenTransactor{contract: contract}, MiniMeTokenFilterer: MiniMeTokenFilterer{contract: contract}}, nil
  1154  }
  1155  
  1156  // NewMiniMeTokenCaller creates a new read-only instance of MiniMeToken, bound to a specific deployed contract.
  1157  func NewMiniMeTokenCaller(address common.Address, caller bind.ContractCaller) (*MiniMeTokenCaller, error) {
  1158  	contract, err := bindMiniMeToken(address, caller, nil, nil)
  1159  	if err != nil {
  1160  		return nil, err
  1161  	}
  1162  	return &MiniMeTokenCaller{contract: contract}, nil
  1163  }
  1164  
  1165  // NewMiniMeTokenTransactor creates a new write-only instance of MiniMeToken, bound to a specific deployed contract.
  1166  func NewMiniMeTokenTransactor(address common.Address, transactor bind.ContractTransactor) (*MiniMeTokenTransactor, error) {
  1167  	contract, err := bindMiniMeToken(address, nil, transactor, nil)
  1168  	if err != nil {
  1169  		return nil, err
  1170  	}
  1171  	return &MiniMeTokenTransactor{contract: contract}, nil
  1172  }
  1173  
  1174  // NewMiniMeTokenFilterer creates a new log filterer instance of MiniMeToken, bound to a specific deployed contract.
  1175  func NewMiniMeTokenFilterer(address common.Address, filterer bind.ContractFilterer) (*MiniMeTokenFilterer, error) {
  1176  	contract, err := bindMiniMeToken(address, nil, nil, filterer)
  1177  	if err != nil {
  1178  		return nil, err
  1179  	}
  1180  	return &MiniMeTokenFilterer{contract: contract}, nil
  1181  }
  1182  
  1183  // bindMiniMeToken binds a generic wrapper to an already deployed contract.
  1184  func bindMiniMeToken(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1185  	parsed, err := abi.JSON(strings.NewReader(MiniMeTokenABI))
  1186  	if err != nil {
  1187  		return nil, err
  1188  	}
  1189  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1190  }
  1191  
  1192  // Call invokes the (constant) contract method with params as input values and
  1193  // sets the output to result. The result type might be a single field for simple
  1194  // returns, a slice of interfaces for anonymous returns and a struct for named
  1195  // returns.
  1196  func (_MiniMeToken *MiniMeTokenRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1197  	return _MiniMeToken.Contract.MiniMeTokenCaller.contract.Call(opts, result, method, params...)
  1198  }
  1199  
  1200  // Transfer initiates a plain transaction to move funds to the contract, calling
  1201  // its default method if one is available.
  1202  func (_MiniMeToken *MiniMeTokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1203  	return _MiniMeToken.Contract.MiniMeTokenTransactor.contract.Transfer(opts)
  1204  }
  1205  
  1206  // Transact invokes the (paid) contract method with params as input values.
  1207  func (_MiniMeToken *MiniMeTokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1208  	return _MiniMeToken.Contract.MiniMeTokenTransactor.contract.Transact(opts, method, params...)
  1209  }
  1210  
  1211  // Call invokes the (constant) contract method with params as input values and
  1212  // sets the output to result. The result type might be a single field for simple
  1213  // returns, a slice of interfaces for anonymous returns and a struct for named
  1214  // returns.
  1215  func (_MiniMeToken *MiniMeTokenCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1216  	return _MiniMeToken.Contract.contract.Call(opts, result, method, params...)
  1217  }
  1218  
  1219  // Transfer initiates a plain transaction to move funds to the contract, calling
  1220  // its default method if one is available.
  1221  func (_MiniMeToken *MiniMeTokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1222  	return _MiniMeToken.Contract.contract.Transfer(opts)
  1223  }
  1224  
  1225  // Transact invokes the (paid) contract method with params as input values.
  1226  func (_MiniMeToken *MiniMeTokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1227  	return _MiniMeToken.Contract.contract.Transact(opts, method, params...)
  1228  }
  1229  
  1230  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1231  //
  1232  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
  1233  func (_MiniMeToken *MiniMeTokenCaller) Allowance(opts *bind.CallOpts, _owner common.Address, _spender common.Address) (*big.Int, error) {
  1234  	var out []interface{}
  1235  	err := _MiniMeToken.contract.Call(opts, &out, "allowance", _owner, _spender)
  1236  
  1237  	if err != nil {
  1238  		return *new(*big.Int), err
  1239  	}
  1240  
  1241  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1242  
  1243  	return out0, err
  1244  
  1245  }
  1246  
  1247  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1248  //
  1249  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
  1250  func (_MiniMeToken *MiniMeTokenSession) Allowance(_owner common.Address, _spender common.Address) (*big.Int, error) {
  1251  	return _MiniMeToken.Contract.Allowance(&_MiniMeToken.CallOpts, _owner, _spender)
  1252  }
  1253  
  1254  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1255  //
  1256  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
  1257  func (_MiniMeToken *MiniMeTokenCallerSession) Allowance(_owner common.Address, _spender common.Address) (*big.Int, error) {
  1258  	return _MiniMeToken.Contract.Allowance(&_MiniMeToken.CallOpts, _owner, _spender)
  1259  }
  1260  
  1261  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1262  //
  1263  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
  1264  func (_MiniMeToken *MiniMeTokenCaller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) {
  1265  	var out []interface{}
  1266  	err := _MiniMeToken.contract.Call(opts, &out, "balanceOf", _owner)
  1267  
  1268  	if err != nil {
  1269  		return *new(*big.Int), err
  1270  	}
  1271  
  1272  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1273  
  1274  	return out0, err
  1275  
  1276  }
  1277  
  1278  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1279  //
  1280  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
  1281  func (_MiniMeToken *MiniMeTokenSession) BalanceOf(_owner common.Address) (*big.Int, error) {
  1282  	return _MiniMeToken.Contract.BalanceOf(&_MiniMeToken.CallOpts, _owner)
  1283  }
  1284  
  1285  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1286  //
  1287  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
  1288  func (_MiniMeToken *MiniMeTokenCallerSession) BalanceOf(_owner common.Address) (*big.Int, error) {
  1289  	return _MiniMeToken.Contract.BalanceOf(&_MiniMeToken.CallOpts, _owner)
  1290  }
  1291  
  1292  // BalanceOfAt is a free data retrieval call binding the contract method 0x4ee2cd7e.
  1293  //
  1294  // Solidity: function balanceOfAt(address _owner, uint256 _blockNumber) view returns(uint256)
  1295  func (_MiniMeToken *MiniMeTokenCaller) BalanceOfAt(opts *bind.CallOpts, _owner common.Address, _blockNumber *big.Int) (*big.Int, error) {
  1296  	var out []interface{}
  1297  	err := _MiniMeToken.contract.Call(opts, &out, "balanceOfAt", _owner, _blockNumber)
  1298  
  1299  	if err != nil {
  1300  		return *new(*big.Int), err
  1301  	}
  1302  
  1303  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1304  
  1305  	return out0, err
  1306  
  1307  }
  1308  
  1309  // BalanceOfAt is a free data retrieval call binding the contract method 0x4ee2cd7e.
  1310  //
  1311  // Solidity: function balanceOfAt(address _owner, uint256 _blockNumber) view returns(uint256)
  1312  func (_MiniMeToken *MiniMeTokenSession) BalanceOfAt(_owner common.Address, _blockNumber *big.Int) (*big.Int, error) {
  1313  	return _MiniMeToken.Contract.BalanceOfAt(&_MiniMeToken.CallOpts, _owner, _blockNumber)
  1314  }
  1315  
  1316  // BalanceOfAt is a free data retrieval call binding the contract method 0x4ee2cd7e.
  1317  //
  1318  // Solidity: function balanceOfAt(address _owner, uint256 _blockNumber) view returns(uint256)
  1319  func (_MiniMeToken *MiniMeTokenCallerSession) BalanceOfAt(_owner common.Address, _blockNumber *big.Int) (*big.Int, error) {
  1320  	return _MiniMeToken.Contract.BalanceOfAt(&_MiniMeToken.CallOpts, _owner, _blockNumber)
  1321  }
  1322  
  1323  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
  1324  //
  1325  // Solidity: function controller() view returns(address)
  1326  func (_MiniMeToken *MiniMeTokenCaller) Controller(opts *bind.CallOpts) (common.Address, error) {
  1327  	var out []interface{}
  1328  	err := _MiniMeToken.contract.Call(opts, &out, "controller")
  1329  
  1330  	if err != nil {
  1331  		return *new(common.Address), err
  1332  	}
  1333  
  1334  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1335  
  1336  	return out0, err
  1337  
  1338  }
  1339  
  1340  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
  1341  //
  1342  // Solidity: function controller() view returns(address)
  1343  func (_MiniMeToken *MiniMeTokenSession) Controller() (common.Address, error) {
  1344  	return _MiniMeToken.Contract.Controller(&_MiniMeToken.CallOpts)
  1345  }
  1346  
  1347  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
  1348  //
  1349  // Solidity: function controller() view returns(address)
  1350  func (_MiniMeToken *MiniMeTokenCallerSession) Controller() (common.Address, error) {
  1351  	return _MiniMeToken.Contract.Controller(&_MiniMeToken.CallOpts)
  1352  }
  1353  
  1354  // CreationBlock is a free data retrieval call binding the contract method 0x17634514.
  1355  //
  1356  // Solidity: function creationBlock() view returns(uint256)
  1357  func (_MiniMeToken *MiniMeTokenCaller) CreationBlock(opts *bind.CallOpts) (*big.Int, error) {
  1358  	var out []interface{}
  1359  	err := _MiniMeToken.contract.Call(opts, &out, "creationBlock")
  1360  
  1361  	if err != nil {
  1362  		return *new(*big.Int), err
  1363  	}
  1364  
  1365  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1366  
  1367  	return out0, err
  1368  
  1369  }
  1370  
  1371  // CreationBlock is a free data retrieval call binding the contract method 0x17634514.
  1372  //
  1373  // Solidity: function creationBlock() view returns(uint256)
  1374  func (_MiniMeToken *MiniMeTokenSession) CreationBlock() (*big.Int, error) {
  1375  	return _MiniMeToken.Contract.CreationBlock(&_MiniMeToken.CallOpts)
  1376  }
  1377  
  1378  // CreationBlock is a free data retrieval call binding the contract method 0x17634514.
  1379  //
  1380  // Solidity: function creationBlock() view returns(uint256)
  1381  func (_MiniMeToken *MiniMeTokenCallerSession) CreationBlock() (*big.Int, error) {
  1382  	return _MiniMeToken.Contract.CreationBlock(&_MiniMeToken.CallOpts)
  1383  }
  1384  
  1385  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  1386  //
  1387  // Solidity: function decimals() view returns(uint8)
  1388  func (_MiniMeToken *MiniMeTokenCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
  1389  	var out []interface{}
  1390  	err := _MiniMeToken.contract.Call(opts, &out, "decimals")
  1391  
  1392  	if err != nil {
  1393  		return *new(uint8), err
  1394  	}
  1395  
  1396  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  1397  
  1398  	return out0, err
  1399  
  1400  }
  1401  
  1402  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  1403  //
  1404  // Solidity: function decimals() view returns(uint8)
  1405  func (_MiniMeToken *MiniMeTokenSession) Decimals() (uint8, error) {
  1406  	return _MiniMeToken.Contract.Decimals(&_MiniMeToken.CallOpts)
  1407  }
  1408  
  1409  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  1410  //
  1411  // Solidity: function decimals() view returns(uint8)
  1412  func (_MiniMeToken *MiniMeTokenCallerSession) Decimals() (uint8, error) {
  1413  	return _MiniMeToken.Contract.Decimals(&_MiniMeToken.CallOpts)
  1414  }
  1415  
  1416  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1417  //
  1418  // Solidity: function name() view returns(string)
  1419  func (_MiniMeToken *MiniMeTokenCaller) Name(opts *bind.CallOpts) (string, error) {
  1420  	var out []interface{}
  1421  	err := _MiniMeToken.contract.Call(opts, &out, "name")
  1422  
  1423  	if err != nil {
  1424  		return *new(string), err
  1425  	}
  1426  
  1427  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1428  
  1429  	return out0, err
  1430  
  1431  }
  1432  
  1433  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1434  //
  1435  // Solidity: function name() view returns(string)
  1436  func (_MiniMeToken *MiniMeTokenSession) Name() (string, error) {
  1437  	return _MiniMeToken.Contract.Name(&_MiniMeToken.CallOpts)
  1438  }
  1439  
  1440  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1441  //
  1442  // Solidity: function name() view returns(string)
  1443  func (_MiniMeToken *MiniMeTokenCallerSession) Name() (string, error) {
  1444  	return _MiniMeToken.Contract.Name(&_MiniMeToken.CallOpts)
  1445  }
  1446  
  1447  // ParentSnapShotBlock is a free data retrieval call binding the contract method 0xc5bcc4f1.
  1448  //
  1449  // Solidity: function parentSnapShotBlock() view returns(uint256)
  1450  func (_MiniMeToken *MiniMeTokenCaller) ParentSnapShotBlock(opts *bind.CallOpts) (*big.Int, error) {
  1451  	var out []interface{}
  1452  	err := _MiniMeToken.contract.Call(opts, &out, "parentSnapShotBlock")
  1453  
  1454  	if err != nil {
  1455  		return *new(*big.Int), err
  1456  	}
  1457  
  1458  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1459  
  1460  	return out0, err
  1461  
  1462  }
  1463  
  1464  // ParentSnapShotBlock is a free data retrieval call binding the contract method 0xc5bcc4f1.
  1465  //
  1466  // Solidity: function parentSnapShotBlock() view returns(uint256)
  1467  func (_MiniMeToken *MiniMeTokenSession) ParentSnapShotBlock() (*big.Int, error) {
  1468  	return _MiniMeToken.Contract.ParentSnapShotBlock(&_MiniMeToken.CallOpts)
  1469  }
  1470  
  1471  // ParentSnapShotBlock is a free data retrieval call binding the contract method 0xc5bcc4f1.
  1472  //
  1473  // Solidity: function parentSnapShotBlock() view returns(uint256)
  1474  func (_MiniMeToken *MiniMeTokenCallerSession) ParentSnapShotBlock() (*big.Int, error) {
  1475  	return _MiniMeToken.Contract.ParentSnapShotBlock(&_MiniMeToken.CallOpts)
  1476  }
  1477  
  1478  // ParentToken is a free data retrieval call binding the contract method 0x80a54001.
  1479  //
  1480  // Solidity: function parentToken() view returns(address)
  1481  func (_MiniMeToken *MiniMeTokenCaller) ParentToken(opts *bind.CallOpts) (common.Address, error) {
  1482  	var out []interface{}
  1483  	err := _MiniMeToken.contract.Call(opts, &out, "parentToken")
  1484  
  1485  	if err != nil {
  1486  		return *new(common.Address), err
  1487  	}
  1488  
  1489  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1490  
  1491  	return out0, err
  1492  
  1493  }
  1494  
  1495  // ParentToken is a free data retrieval call binding the contract method 0x80a54001.
  1496  //
  1497  // Solidity: function parentToken() view returns(address)
  1498  func (_MiniMeToken *MiniMeTokenSession) ParentToken() (common.Address, error) {
  1499  	return _MiniMeToken.Contract.ParentToken(&_MiniMeToken.CallOpts)
  1500  }
  1501  
  1502  // ParentToken is a free data retrieval call binding the contract method 0x80a54001.
  1503  //
  1504  // Solidity: function parentToken() view returns(address)
  1505  func (_MiniMeToken *MiniMeTokenCallerSession) ParentToken() (common.Address, error) {
  1506  	return _MiniMeToken.Contract.ParentToken(&_MiniMeToken.CallOpts)
  1507  }
  1508  
  1509  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1510  //
  1511  // Solidity: function symbol() view returns(string)
  1512  func (_MiniMeToken *MiniMeTokenCaller) Symbol(opts *bind.CallOpts) (string, error) {
  1513  	var out []interface{}
  1514  	err := _MiniMeToken.contract.Call(opts, &out, "symbol")
  1515  
  1516  	if err != nil {
  1517  		return *new(string), err
  1518  	}
  1519  
  1520  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1521  
  1522  	return out0, err
  1523  
  1524  }
  1525  
  1526  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1527  //
  1528  // Solidity: function symbol() view returns(string)
  1529  func (_MiniMeToken *MiniMeTokenSession) Symbol() (string, error) {
  1530  	return _MiniMeToken.Contract.Symbol(&_MiniMeToken.CallOpts)
  1531  }
  1532  
  1533  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1534  //
  1535  // Solidity: function symbol() view returns(string)
  1536  func (_MiniMeToken *MiniMeTokenCallerSession) Symbol() (string, error) {
  1537  	return _MiniMeToken.Contract.Symbol(&_MiniMeToken.CallOpts)
  1538  }
  1539  
  1540  // TokenFactory is a free data retrieval call binding the contract method 0xe77772fe.
  1541  //
  1542  // Solidity: function tokenFactory() view returns(address)
  1543  func (_MiniMeToken *MiniMeTokenCaller) TokenFactory(opts *bind.CallOpts) (common.Address, error) {
  1544  	var out []interface{}
  1545  	err := _MiniMeToken.contract.Call(opts, &out, "tokenFactory")
  1546  
  1547  	if err != nil {
  1548  		return *new(common.Address), err
  1549  	}
  1550  
  1551  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1552  
  1553  	return out0, err
  1554  
  1555  }
  1556  
  1557  // TokenFactory is a free data retrieval call binding the contract method 0xe77772fe.
  1558  //
  1559  // Solidity: function tokenFactory() view returns(address)
  1560  func (_MiniMeToken *MiniMeTokenSession) TokenFactory() (common.Address, error) {
  1561  	return _MiniMeToken.Contract.TokenFactory(&_MiniMeToken.CallOpts)
  1562  }
  1563  
  1564  // TokenFactory is a free data retrieval call binding the contract method 0xe77772fe.
  1565  //
  1566  // Solidity: function tokenFactory() view returns(address)
  1567  func (_MiniMeToken *MiniMeTokenCallerSession) TokenFactory() (common.Address, error) {
  1568  	return _MiniMeToken.Contract.TokenFactory(&_MiniMeToken.CallOpts)
  1569  }
  1570  
  1571  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1572  //
  1573  // Solidity: function totalSupply() view returns(uint256)
  1574  func (_MiniMeToken *MiniMeTokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  1575  	var out []interface{}
  1576  	err := _MiniMeToken.contract.Call(opts, &out, "totalSupply")
  1577  
  1578  	if err != nil {
  1579  		return *new(*big.Int), err
  1580  	}
  1581  
  1582  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1583  
  1584  	return out0, err
  1585  
  1586  }
  1587  
  1588  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1589  //
  1590  // Solidity: function totalSupply() view returns(uint256)
  1591  func (_MiniMeToken *MiniMeTokenSession) TotalSupply() (*big.Int, error) {
  1592  	return _MiniMeToken.Contract.TotalSupply(&_MiniMeToken.CallOpts)
  1593  }
  1594  
  1595  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1596  //
  1597  // Solidity: function totalSupply() view returns(uint256)
  1598  func (_MiniMeToken *MiniMeTokenCallerSession) TotalSupply() (*big.Int, error) {
  1599  	return _MiniMeToken.Contract.TotalSupply(&_MiniMeToken.CallOpts)
  1600  }
  1601  
  1602  // TotalSupplyAt is a free data retrieval call binding the contract method 0x981b24d0.
  1603  //
  1604  // Solidity: function totalSupplyAt(uint256 _blockNumber) view returns(uint256)
  1605  func (_MiniMeToken *MiniMeTokenCaller) TotalSupplyAt(opts *bind.CallOpts, _blockNumber *big.Int) (*big.Int, error) {
  1606  	var out []interface{}
  1607  	err := _MiniMeToken.contract.Call(opts, &out, "totalSupplyAt", _blockNumber)
  1608  
  1609  	if err != nil {
  1610  		return *new(*big.Int), err
  1611  	}
  1612  
  1613  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1614  
  1615  	return out0, err
  1616  
  1617  }
  1618  
  1619  // TotalSupplyAt is a free data retrieval call binding the contract method 0x981b24d0.
  1620  //
  1621  // Solidity: function totalSupplyAt(uint256 _blockNumber) view returns(uint256)
  1622  func (_MiniMeToken *MiniMeTokenSession) TotalSupplyAt(_blockNumber *big.Int) (*big.Int, error) {
  1623  	return _MiniMeToken.Contract.TotalSupplyAt(&_MiniMeToken.CallOpts, _blockNumber)
  1624  }
  1625  
  1626  // TotalSupplyAt is a free data retrieval call binding the contract method 0x981b24d0.
  1627  //
  1628  // Solidity: function totalSupplyAt(uint256 _blockNumber) view returns(uint256)
  1629  func (_MiniMeToken *MiniMeTokenCallerSession) TotalSupplyAt(_blockNumber *big.Int) (*big.Int, error) {
  1630  	return _MiniMeToken.Contract.TotalSupplyAt(&_MiniMeToken.CallOpts, _blockNumber)
  1631  }
  1632  
  1633  // TransfersEnabled is a free data retrieval call binding the contract method 0xbef97c87.
  1634  //
  1635  // Solidity: function transfersEnabled() view returns(bool)
  1636  func (_MiniMeToken *MiniMeTokenCaller) TransfersEnabled(opts *bind.CallOpts) (bool, error) {
  1637  	var out []interface{}
  1638  	err := _MiniMeToken.contract.Call(opts, &out, "transfersEnabled")
  1639  
  1640  	if err != nil {
  1641  		return *new(bool), err
  1642  	}
  1643  
  1644  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1645  
  1646  	return out0, err
  1647  
  1648  }
  1649  
  1650  // TransfersEnabled is a free data retrieval call binding the contract method 0xbef97c87.
  1651  //
  1652  // Solidity: function transfersEnabled() view returns(bool)
  1653  func (_MiniMeToken *MiniMeTokenSession) TransfersEnabled() (bool, error) {
  1654  	return _MiniMeToken.Contract.TransfersEnabled(&_MiniMeToken.CallOpts)
  1655  }
  1656  
  1657  // TransfersEnabled is a free data retrieval call binding the contract method 0xbef97c87.
  1658  //
  1659  // Solidity: function transfersEnabled() view returns(bool)
  1660  func (_MiniMeToken *MiniMeTokenCallerSession) TransfersEnabled() (bool, error) {
  1661  	return _MiniMeToken.Contract.TransfersEnabled(&_MiniMeToken.CallOpts)
  1662  }
  1663  
  1664  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  1665  //
  1666  // Solidity: function version() view returns(string)
  1667  func (_MiniMeToken *MiniMeTokenCaller) Version(opts *bind.CallOpts) (string, error) {
  1668  	var out []interface{}
  1669  	err := _MiniMeToken.contract.Call(opts, &out, "version")
  1670  
  1671  	if err != nil {
  1672  		return *new(string), err
  1673  	}
  1674  
  1675  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1676  
  1677  	return out0, err
  1678  
  1679  }
  1680  
  1681  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  1682  //
  1683  // Solidity: function version() view returns(string)
  1684  func (_MiniMeToken *MiniMeTokenSession) Version() (string, error) {
  1685  	return _MiniMeToken.Contract.Version(&_MiniMeToken.CallOpts)
  1686  }
  1687  
  1688  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  1689  //
  1690  // Solidity: function version() view returns(string)
  1691  func (_MiniMeToken *MiniMeTokenCallerSession) Version() (string, error) {
  1692  	return _MiniMeToken.Contract.Version(&_MiniMeToken.CallOpts)
  1693  }
  1694  
  1695  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1696  //
  1697  // Solidity: function approve(address _spender, uint256 _amount) returns(bool success)
  1698  func (_MiniMeToken *MiniMeTokenTransactor) Approve(opts *bind.TransactOpts, _spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  1699  	return _MiniMeToken.contract.Transact(opts, "approve", _spender, _amount)
  1700  }
  1701  
  1702  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1703  //
  1704  // Solidity: function approve(address _spender, uint256 _amount) returns(bool success)
  1705  func (_MiniMeToken *MiniMeTokenSession) Approve(_spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  1706  	return _MiniMeToken.Contract.Approve(&_MiniMeToken.TransactOpts, _spender, _amount)
  1707  }
  1708  
  1709  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1710  //
  1711  // Solidity: function approve(address _spender, uint256 _amount) returns(bool success)
  1712  func (_MiniMeToken *MiniMeTokenTransactorSession) Approve(_spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  1713  	return _MiniMeToken.Contract.Approve(&_MiniMeToken.TransactOpts, _spender, _amount)
  1714  }
  1715  
  1716  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  1717  //
  1718  // Solidity: function approveAndCall(address _spender, uint256 _amount, bytes _extraData) returns(bool success)
  1719  func (_MiniMeToken *MiniMeTokenTransactor) ApproveAndCall(opts *bind.TransactOpts, _spender common.Address, _amount *big.Int, _extraData []byte) (*types.Transaction, error) {
  1720  	return _MiniMeToken.contract.Transact(opts, "approveAndCall", _spender, _amount, _extraData)
  1721  }
  1722  
  1723  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  1724  //
  1725  // Solidity: function approveAndCall(address _spender, uint256 _amount, bytes _extraData) returns(bool success)
  1726  func (_MiniMeToken *MiniMeTokenSession) ApproveAndCall(_spender common.Address, _amount *big.Int, _extraData []byte) (*types.Transaction, error) {
  1727  	return _MiniMeToken.Contract.ApproveAndCall(&_MiniMeToken.TransactOpts, _spender, _amount, _extraData)
  1728  }
  1729  
  1730  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  1731  //
  1732  // Solidity: function approveAndCall(address _spender, uint256 _amount, bytes _extraData) returns(bool success)
  1733  func (_MiniMeToken *MiniMeTokenTransactorSession) ApproveAndCall(_spender common.Address, _amount *big.Int, _extraData []byte) (*types.Transaction, error) {
  1734  	return _MiniMeToken.Contract.ApproveAndCall(&_MiniMeToken.TransactOpts, _spender, _amount, _extraData)
  1735  }
  1736  
  1737  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
  1738  //
  1739  // Solidity: function changeController(address _newController) returns()
  1740  func (_MiniMeToken *MiniMeTokenTransactor) ChangeController(opts *bind.TransactOpts, _newController common.Address) (*types.Transaction, error) {
  1741  	return _MiniMeToken.contract.Transact(opts, "changeController", _newController)
  1742  }
  1743  
  1744  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
  1745  //
  1746  // Solidity: function changeController(address _newController) returns()
  1747  func (_MiniMeToken *MiniMeTokenSession) ChangeController(_newController common.Address) (*types.Transaction, error) {
  1748  	return _MiniMeToken.Contract.ChangeController(&_MiniMeToken.TransactOpts, _newController)
  1749  }
  1750  
  1751  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
  1752  //
  1753  // Solidity: function changeController(address _newController) returns()
  1754  func (_MiniMeToken *MiniMeTokenTransactorSession) ChangeController(_newController common.Address) (*types.Transaction, error) {
  1755  	return _MiniMeToken.Contract.ChangeController(&_MiniMeToken.TransactOpts, _newController)
  1756  }
  1757  
  1758  // ClaimTokens is a paid mutator transaction binding the contract method 0xdf8de3e7.
  1759  //
  1760  // Solidity: function claimTokens(address _token) returns()
  1761  func (_MiniMeToken *MiniMeTokenTransactor) ClaimTokens(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  1762  	return _MiniMeToken.contract.Transact(opts, "claimTokens", _token)
  1763  }
  1764  
  1765  // ClaimTokens is a paid mutator transaction binding the contract method 0xdf8de3e7.
  1766  //
  1767  // Solidity: function claimTokens(address _token) returns()
  1768  func (_MiniMeToken *MiniMeTokenSession) ClaimTokens(_token common.Address) (*types.Transaction, error) {
  1769  	return _MiniMeToken.Contract.ClaimTokens(&_MiniMeToken.TransactOpts, _token)
  1770  }
  1771  
  1772  // ClaimTokens is a paid mutator transaction binding the contract method 0xdf8de3e7.
  1773  //
  1774  // Solidity: function claimTokens(address _token) returns()
  1775  func (_MiniMeToken *MiniMeTokenTransactorSession) ClaimTokens(_token common.Address) (*types.Transaction, error) {
  1776  	return _MiniMeToken.Contract.ClaimTokens(&_MiniMeToken.TransactOpts, _token)
  1777  }
  1778  
  1779  // CreateCloneToken is a paid mutator transaction binding the contract method 0x6638c087.
  1780  //
  1781  // Solidity: function createCloneToken(string _cloneTokenName, uint8 _cloneDecimalUnits, string _cloneTokenSymbol, uint256 _snapshotBlock, bool _transfersEnabled) returns(address)
  1782  func (_MiniMeToken *MiniMeTokenTransactor) CreateCloneToken(opts *bind.TransactOpts, _cloneTokenName string, _cloneDecimalUnits uint8, _cloneTokenSymbol string, _snapshotBlock *big.Int, _transfersEnabled bool) (*types.Transaction, error) {
  1783  	return _MiniMeToken.contract.Transact(opts, "createCloneToken", _cloneTokenName, _cloneDecimalUnits, _cloneTokenSymbol, _snapshotBlock, _transfersEnabled)
  1784  }
  1785  
  1786  // CreateCloneToken is a paid mutator transaction binding the contract method 0x6638c087.
  1787  //
  1788  // Solidity: function createCloneToken(string _cloneTokenName, uint8 _cloneDecimalUnits, string _cloneTokenSymbol, uint256 _snapshotBlock, bool _transfersEnabled) returns(address)
  1789  func (_MiniMeToken *MiniMeTokenSession) CreateCloneToken(_cloneTokenName string, _cloneDecimalUnits uint8, _cloneTokenSymbol string, _snapshotBlock *big.Int, _transfersEnabled bool) (*types.Transaction, error) {
  1790  	return _MiniMeToken.Contract.CreateCloneToken(&_MiniMeToken.TransactOpts, _cloneTokenName, _cloneDecimalUnits, _cloneTokenSymbol, _snapshotBlock, _transfersEnabled)
  1791  }
  1792  
  1793  // CreateCloneToken is a paid mutator transaction binding the contract method 0x6638c087.
  1794  //
  1795  // Solidity: function createCloneToken(string _cloneTokenName, uint8 _cloneDecimalUnits, string _cloneTokenSymbol, uint256 _snapshotBlock, bool _transfersEnabled) returns(address)
  1796  func (_MiniMeToken *MiniMeTokenTransactorSession) CreateCloneToken(_cloneTokenName string, _cloneDecimalUnits uint8, _cloneTokenSymbol string, _snapshotBlock *big.Int, _transfersEnabled bool) (*types.Transaction, error) {
  1797  	return _MiniMeToken.Contract.CreateCloneToken(&_MiniMeToken.TransactOpts, _cloneTokenName, _cloneDecimalUnits, _cloneTokenSymbol, _snapshotBlock, _transfersEnabled)
  1798  }
  1799  
  1800  // DestroyTokens is a paid mutator transaction binding the contract method 0xd3ce77fe.
  1801  //
  1802  // Solidity: function destroyTokens(address _owner, uint256 _amount) returns(bool)
  1803  func (_MiniMeToken *MiniMeTokenTransactor) DestroyTokens(opts *bind.TransactOpts, _owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  1804  	return _MiniMeToken.contract.Transact(opts, "destroyTokens", _owner, _amount)
  1805  }
  1806  
  1807  // DestroyTokens is a paid mutator transaction binding the contract method 0xd3ce77fe.
  1808  //
  1809  // Solidity: function destroyTokens(address _owner, uint256 _amount) returns(bool)
  1810  func (_MiniMeToken *MiniMeTokenSession) DestroyTokens(_owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  1811  	return _MiniMeToken.Contract.DestroyTokens(&_MiniMeToken.TransactOpts, _owner, _amount)
  1812  }
  1813  
  1814  // DestroyTokens is a paid mutator transaction binding the contract method 0xd3ce77fe.
  1815  //
  1816  // Solidity: function destroyTokens(address _owner, uint256 _amount) returns(bool)
  1817  func (_MiniMeToken *MiniMeTokenTransactorSession) DestroyTokens(_owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  1818  	return _MiniMeToken.Contract.DestroyTokens(&_MiniMeToken.TransactOpts, _owner, _amount)
  1819  }
  1820  
  1821  // EnableTransfers is a paid mutator transaction binding the contract method 0xf41e60c5.
  1822  //
  1823  // Solidity: function enableTransfers(bool _transfersEnabled) returns()
  1824  func (_MiniMeToken *MiniMeTokenTransactor) EnableTransfers(opts *bind.TransactOpts, _transfersEnabled bool) (*types.Transaction, error) {
  1825  	return _MiniMeToken.contract.Transact(opts, "enableTransfers", _transfersEnabled)
  1826  }
  1827  
  1828  // EnableTransfers is a paid mutator transaction binding the contract method 0xf41e60c5.
  1829  //
  1830  // Solidity: function enableTransfers(bool _transfersEnabled) returns()
  1831  func (_MiniMeToken *MiniMeTokenSession) EnableTransfers(_transfersEnabled bool) (*types.Transaction, error) {
  1832  	return _MiniMeToken.Contract.EnableTransfers(&_MiniMeToken.TransactOpts, _transfersEnabled)
  1833  }
  1834  
  1835  // EnableTransfers is a paid mutator transaction binding the contract method 0xf41e60c5.
  1836  //
  1837  // Solidity: function enableTransfers(bool _transfersEnabled) returns()
  1838  func (_MiniMeToken *MiniMeTokenTransactorSession) EnableTransfers(_transfersEnabled bool) (*types.Transaction, error) {
  1839  	return _MiniMeToken.Contract.EnableTransfers(&_MiniMeToken.TransactOpts, _transfersEnabled)
  1840  }
  1841  
  1842  // GenerateTokens is a paid mutator transaction binding the contract method 0x827f32c0.
  1843  //
  1844  // Solidity: function generateTokens(address _owner, uint256 _amount) returns(bool)
  1845  func (_MiniMeToken *MiniMeTokenTransactor) GenerateTokens(opts *bind.TransactOpts, _owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  1846  	return _MiniMeToken.contract.Transact(opts, "generateTokens", _owner, _amount)
  1847  }
  1848  
  1849  // GenerateTokens is a paid mutator transaction binding the contract method 0x827f32c0.
  1850  //
  1851  // Solidity: function generateTokens(address _owner, uint256 _amount) returns(bool)
  1852  func (_MiniMeToken *MiniMeTokenSession) GenerateTokens(_owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  1853  	return _MiniMeToken.Contract.GenerateTokens(&_MiniMeToken.TransactOpts, _owner, _amount)
  1854  }
  1855  
  1856  // GenerateTokens is a paid mutator transaction binding the contract method 0x827f32c0.
  1857  //
  1858  // Solidity: function generateTokens(address _owner, uint256 _amount) returns(bool)
  1859  func (_MiniMeToken *MiniMeTokenTransactorSession) GenerateTokens(_owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  1860  	return _MiniMeToken.Contract.GenerateTokens(&_MiniMeToken.TransactOpts, _owner, _amount)
  1861  }
  1862  
  1863  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1864  //
  1865  // Solidity: function transfer(address _to, uint256 _amount) returns(bool success)
  1866  func (_MiniMeToken *MiniMeTokenTransactor) Transfer(opts *bind.TransactOpts, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  1867  	return _MiniMeToken.contract.Transact(opts, "transfer", _to, _amount)
  1868  }
  1869  
  1870  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1871  //
  1872  // Solidity: function transfer(address _to, uint256 _amount) returns(bool success)
  1873  func (_MiniMeToken *MiniMeTokenSession) Transfer(_to common.Address, _amount *big.Int) (*types.Transaction, error) {
  1874  	return _MiniMeToken.Contract.Transfer(&_MiniMeToken.TransactOpts, _to, _amount)
  1875  }
  1876  
  1877  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1878  //
  1879  // Solidity: function transfer(address _to, uint256 _amount) returns(bool success)
  1880  func (_MiniMeToken *MiniMeTokenTransactorSession) Transfer(_to common.Address, _amount *big.Int) (*types.Transaction, error) {
  1881  	return _MiniMeToken.Contract.Transfer(&_MiniMeToken.TransactOpts, _to, _amount)
  1882  }
  1883  
  1884  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1885  //
  1886  // Solidity: function transferFrom(address _from, address _to, uint256 _amount) returns(bool success)
  1887  func (_MiniMeToken *MiniMeTokenTransactor) TransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  1888  	return _MiniMeToken.contract.Transact(opts, "transferFrom", _from, _to, _amount)
  1889  }
  1890  
  1891  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1892  //
  1893  // Solidity: function transferFrom(address _from, address _to, uint256 _amount) returns(bool success)
  1894  func (_MiniMeToken *MiniMeTokenSession) TransferFrom(_from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  1895  	return _MiniMeToken.Contract.TransferFrom(&_MiniMeToken.TransactOpts, _from, _to, _amount)
  1896  }
  1897  
  1898  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1899  //
  1900  // Solidity: function transferFrom(address _from, address _to, uint256 _amount) returns(bool success)
  1901  func (_MiniMeToken *MiniMeTokenTransactorSession) TransferFrom(_from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  1902  	return _MiniMeToken.Contract.TransferFrom(&_MiniMeToken.TransactOpts, _from, _to, _amount)
  1903  }
  1904  
  1905  // Fallback is a paid mutator transaction binding the contract fallback function.
  1906  //
  1907  // Solidity: fallback() payable returns()
  1908  func (_MiniMeToken *MiniMeTokenTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) {
  1909  	return _MiniMeToken.contract.RawTransact(opts, calldata)
  1910  }
  1911  
  1912  // Fallback is a paid mutator transaction binding the contract fallback function.
  1913  //
  1914  // Solidity: fallback() payable returns()
  1915  func (_MiniMeToken *MiniMeTokenSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1916  	return _MiniMeToken.Contract.Fallback(&_MiniMeToken.TransactOpts, calldata)
  1917  }
  1918  
  1919  // Fallback is a paid mutator transaction binding the contract fallback function.
  1920  //
  1921  // Solidity: fallback() payable returns()
  1922  func (_MiniMeToken *MiniMeTokenTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1923  	return _MiniMeToken.Contract.Fallback(&_MiniMeToken.TransactOpts, calldata)
  1924  }
  1925  
  1926  // MiniMeTokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the MiniMeToken contract.
  1927  type MiniMeTokenApprovalIterator struct {
  1928  	Event *MiniMeTokenApproval // Event containing the contract specifics and raw log
  1929  
  1930  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1931  	event    string              // Event name to use for unpacking event data
  1932  
  1933  	logs chan types.Log        // Log channel receiving the found contract events
  1934  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1935  	done bool                  // Whether the subscription completed delivering logs
  1936  	fail error                 // Occurred error to stop iteration
  1937  }
  1938  
  1939  // Next advances the iterator to the subsequent event, returning whether there
  1940  // are any more events found. In case of a retrieval or parsing error, false is
  1941  // returned and Error() can be queried for the exact failure.
  1942  func (it *MiniMeTokenApprovalIterator) Next() bool {
  1943  	// If the iterator failed, stop iterating
  1944  	if it.fail != nil {
  1945  		return false
  1946  	}
  1947  	// If the iterator completed, deliver directly whatever's available
  1948  	if it.done {
  1949  		select {
  1950  		case log := <-it.logs:
  1951  			it.Event = new(MiniMeTokenApproval)
  1952  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1953  				it.fail = err
  1954  				return false
  1955  			}
  1956  			it.Event.Raw = log
  1957  			return true
  1958  
  1959  		default:
  1960  			return false
  1961  		}
  1962  	}
  1963  	// Iterator still in progress, wait for either a data or an error event
  1964  	select {
  1965  	case log := <-it.logs:
  1966  		it.Event = new(MiniMeTokenApproval)
  1967  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1968  			it.fail = err
  1969  			return false
  1970  		}
  1971  		it.Event.Raw = log
  1972  		return true
  1973  
  1974  	case err := <-it.sub.Err():
  1975  		it.done = true
  1976  		it.fail = err
  1977  		return it.Next()
  1978  	}
  1979  }
  1980  
  1981  // Error returns any retrieval or parsing error occurred during filtering.
  1982  func (it *MiniMeTokenApprovalIterator) Error() error {
  1983  	return it.fail
  1984  }
  1985  
  1986  // Close terminates the iteration process, releasing any pending underlying
  1987  // resources.
  1988  func (it *MiniMeTokenApprovalIterator) Close() error {
  1989  	it.sub.Unsubscribe()
  1990  	return nil
  1991  }
  1992  
  1993  // MiniMeTokenApproval represents a Approval event raised by the MiniMeToken contract.
  1994  type MiniMeTokenApproval struct {
  1995  	Owner   common.Address
  1996  	Spender common.Address
  1997  	Amount  *big.Int
  1998  	Raw     types.Log // Blockchain specific contextual infos
  1999  }
  2000  
  2001  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2002  //
  2003  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _amount)
  2004  func (_MiniMeToken *MiniMeTokenFilterer) FilterApproval(opts *bind.FilterOpts, _owner []common.Address, _spender []common.Address) (*MiniMeTokenApprovalIterator, error) {
  2005  
  2006  	var _ownerRule []interface{}
  2007  	for _, _ownerItem := range _owner {
  2008  		_ownerRule = append(_ownerRule, _ownerItem)
  2009  	}
  2010  	var _spenderRule []interface{}
  2011  	for _, _spenderItem := range _spender {
  2012  		_spenderRule = append(_spenderRule, _spenderItem)
  2013  	}
  2014  
  2015  	logs, sub, err := _MiniMeToken.contract.FilterLogs(opts, "Approval", _ownerRule, _spenderRule)
  2016  	if err != nil {
  2017  		return nil, err
  2018  	}
  2019  	return &MiniMeTokenApprovalIterator{contract: _MiniMeToken.contract, event: "Approval", logs: logs, sub: sub}, nil
  2020  }
  2021  
  2022  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2023  //
  2024  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _amount)
  2025  func (_MiniMeToken *MiniMeTokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *MiniMeTokenApproval, _owner []common.Address, _spender []common.Address) (event.Subscription, error) {
  2026  
  2027  	var _ownerRule []interface{}
  2028  	for _, _ownerItem := range _owner {
  2029  		_ownerRule = append(_ownerRule, _ownerItem)
  2030  	}
  2031  	var _spenderRule []interface{}
  2032  	for _, _spenderItem := range _spender {
  2033  		_spenderRule = append(_spenderRule, _spenderItem)
  2034  	}
  2035  
  2036  	logs, sub, err := _MiniMeToken.contract.WatchLogs(opts, "Approval", _ownerRule, _spenderRule)
  2037  	if err != nil {
  2038  		return nil, err
  2039  	}
  2040  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2041  		defer sub.Unsubscribe()
  2042  		for {
  2043  			select {
  2044  			case log := <-logs:
  2045  				// New log arrived, parse the event and forward to the user
  2046  				event := new(MiniMeTokenApproval)
  2047  				if err := _MiniMeToken.contract.UnpackLog(event, "Approval", log); err != nil {
  2048  					return err
  2049  				}
  2050  				event.Raw = log
  2051  
  2052  				select {
  2053  				case sink <- event:
  2054  				case err := <-sub.Err():
  2055  					return err
  2056  				case <-quit:
  2057  					return nil
  2058  				}
  2059  			case err := <-sub.Err():
  2060  				return err
  2061  			case <-quit:
  2062  				return nil
  2063  			}
  2064  		}
  2065  	}), nil
  2066  }
  2067  
  2068  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2069  //
  2070  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _amount)
  2071  func (_MiniMeToken *MiniMeTokenFilterer) ParseApproval(log types.Log) (*MiniMeTokenApproval, error) {
  2072  	event := new(MiniMeTokenApproval)
  2073  	if err := _MiniMeToken.contract.UnpackLog(event, "Approval", log); err != nil {
  2074  		return nil, err
  2075  	}
  2076  	event.Raw = log
  2077  	return event, nil
  2078  }
  2079  
  2080  // MiniMeTokenClaimedTokensIterator is returned from FilterClaimedTokens and is used to iterate over the raw logs and unpacked data for ClaimedTokens events raised by the MiniMeToken contract.
  2081  type MiniMeTokenClaimedTokensIterator struct {
  2082  	Event *MiniMeTokenClaimedTokens // Event containing the contract specifics and raw log
  2083  
  2084  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2085  	event    string              // Event name to use for unpacking event data
  2086  
  2087  	logs chan types.Log        // Log channel receiving the found contract events
  2088  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2089  	done bool                  // Whether the subscription completed delivering logs
  2090  	fail error                 // Occurred error to stop iteration
  2091  }
  2092  
  2093  // Next advances the iterator to the subsequent event, returning whether there
  2094  // are any more events found. In case of a retrieval or parsing error, false is
  2095  // returned and Error() can be queried for the exact failure.
  2096  func (it *MiniMeTokenClaimedTokensIterator) Next() bool {
  2097  	// If the iterator failed, stop iterating
  2098  	if it.fail != nil {
  2099  		return false
  2100  	}
  2101  	// If the iterator completed, deliver directly whatever's available
  2102  	if it.done {
  2103  		select {
  2104  		case log := <-it.logs:
  2105  			it.Event = new(MiniMeTokenClaimedTokens)
  2106  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2107  				it.fail = err
  2108  				return false
  2109  			}
  2110  			it.Event.Raw = log
  2111  			return true
  2112  
  2113  		default:
  2114  			return false
  2115  		}
  2116  	}
  2117  	// Iterator still in progress, wait for either a data or an error event
  2118  	select {
  2119  	case log := <-it.logs:
  2120  		it.Event = new(MiniMeTokenClaimedTokens)
  2121  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2122  			it.fail = err
  2123  			return false
  2124  		}
  2125  		it.Event.Raw = log
  2126  		return true
  2127  
  2128  	case err := <-it.sub.Err():
  2129  		it.done = true
  2130  		it.fail = err
  2131  		return it.Next()
  2132  	}
  2133  }
  2134  
  2135  // Error returns any retrieval or parsing error occurred during filtering.
  2136  func (it *MiniMeTokenClaimedTokensIterator) Error() error {
  2137  	return it.fail
  2138  }
  2139  
  2140  // Close terminates the iteration process, releasing any pending underlying
  2141  // resources.
  2142  func (it *MiniMeTokenClaimedTokensIterator) Close() error {
  2143  	it.sub.Unsubscribe()
  2144  	return nil
  2145  }
  2146  
  2147  // MiniMeTokenClaimedTokens represents a ClaimedTokens event raised by the MiniMeToken contract.
  2148  type MiniMeTokenClaimedTokens struct {
  2149  	Token      common.Address
  2150  	Controller common.Address
  2151  	Amount     *big.Int
  2152  	Raw        types.Log // Blockchain specific contextual infos
  2153  }
  2154  
  2155  // FilterClaimedTokens is a free log retrieval operation binding the contract event 0xf931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c.
  2156  //
  2157  // Solidity: event ClaimedTokens(address indexed _token, address indexed _controller, uint256 _amount)
  2158  func (_MiniMeToken *MiniMeTokenFilterer) FilterClaimedTokens(opts *bind.FilterOpts, _token []common.Address, _controller []common.Address) (*MiniMeTokenClaimedTokensIterator, error) {
  2159  
  2160  	var _tokenRule []interface{}
  2161  	for _, _tokenItem := range _token {
  2162  		_tokenRule = append(_tokenRule, _tokenItem)
  2163  	}
  2164  	var _controllerRule []interface{}
  2165  	for _, _controllerItem := range _controller {
  2166  		_controllerRule = append(_controllerRule, _controllerItem)
  2167  	}
  2168  
  2169  	logs, sub, err := _MiniMeToken.contract.FilterLogs(opts, "ClaimedTokens", _tokenRule, _controllerRule)
  2170  	if err != nil {
  2171  		return nil, err
  2172  	}
  2173  	return &MiniMeTokenClaimedTokensIterator{contract: _MiniMeToken.contract, event: "ClaimedTokens", logs: logs, sub: sub}, nil
  2174  }
  2175  
  2176  // WatchClaimedTokens is a free log subscription operation binding the contract event 0xf931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c.
  2177  //
  2178  // Solidity: event ClaimedTokens(address indexed _token, address indexed _controller, uint256 _amount)
  2179  func (_MiniMeToken *MiniMeTokenFilterer) WatchClaimedTokens(opts *bind.WatchOpts, sink chan<- *MiniMeTokenClaimedTokens, _token []common.Address, _controller []common.Address) (event.Subscription, error) {
  2180  
  2181  	var _tokenRule []interface{}
  2182  	for _, _tokenItem := range _token {
  2183  		_tokenRule = append(_tokenRule, _tokenItem)
  2184  	}
  2185  	var _controllerRule []interface{}
  2186  	for _, _controllerItem := range _controller {
  2187  		_controllerRule = append(_controllerRule, _controllerItem)
  2188  	}
  2189  
  2190  	logs, sub, err := _MiniMeToken.contract.WatchLogs(opts, "ClaimedTokens", _tokenRule, _controllerRule)
  2191  	if err != nil {
  2192  		return nil, err
  2193  	}
  2194  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2195  		defer sub.Unsubscribe()
  2196  		for {
  2197  			select {
  2198  			case log := <-logs:
  2199  				// New log arrived, parse the event and forward to the user
  2200  				event := new(MiniMeTokenClaimedTokens)
  2201  				if err := _MiniMeToken.contract.UnpackLog(event, "ClaimedTokens", log); err != nil {
  2202  					return err
  2203  				}
  2204  				event.Raw = log
  2205  
  2206  				select {
  2207  				case sink <- event:
  2208  				case err := <-sub.Err():
  2209  					return err
  2210  				case <-quit:
  2211  					return nil
  2212  				}
  2213  			case err := <-sub.Err():
  2214  				return err
  2215  			case <-quit:
  2216  				return nil
  2217  			}
  2218  		}
  2219  	}), nil
  2220  }
  2221  
  2222  // ParseClaimedTokens is a log parse operation binding the contract event 0xf931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c.
  2223  //
  2224  // Solidity: event ClaimedTokens(address indexed _token, address indexed _controller, uint256 _amount)
  2225  func (_MiniMeToken *MiniMeTokenFilterer) ParseClaimedTokens(log types.Log) (*MiniMeTokenClaimedTokens, error) {
  2226  	event := new(MiniMeTokenClaimedTokens)
  2227  	if err := _MiniMeToken.contract.UnpackLog(event, "ClaimedTokens", log); err != nil {
  2228  		return nil, err
  2229  	}
  2230  	event.Raw = log
  2231  	return event, nil
  2232  }
  2233  
  2234  // MiniMeTokenNewCloneTokenIterator is returned from FilterNewCloneToken and is used to iterate over the raw logs and unpacked data for NewCloneToken events raised by the MiniMeToken contract.
  2235  type MiniMeTokenNewCloneTokenIterator struct {
  2236  	Event *MiniMeTokenNewCloneToken // Event containing the contract specifics and raw log
  2237  
  2238  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2239  	event    string              // Event name to use for unpacking event data
  2240  
  2241  	logs chan types.Log        // Log channel receiving the found contract events
  2242  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2243  	done bool                  // Whether the subscription completed delivering logs
  2244  	fail error                 // Occurred error to stop iteration
  2245  }
  2246  
  2247  // Next advances the iterator to the subsequent event, returning whether there
  2248  // are any more events found. In case of a retrieval or parsing error, false is
  2249  // returned and Error() can be queried for the exact failure.
  2250  func (it *MiniMeTokenNewCloneTokenIterator) Next() bool {
  2251  	// If the iterator failed, stop iterating
  2252  	if it.fail != nil {
  2253  		return false
  2254  	}
  2255  	// If the iterator completed, deliver directly whatever's available
  2256  	if it.done {
  2257  		select {
  2258  		case log := <-it.logs:
  2259  			it.Event = new(MiniMeTokenNewCloneToken)
  2260  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2261  				it.fail = err
  2262  				return false
  2263  			}
  2264  			it.Event.Raw = log
  2265  			return true
  2266  
  2267  		default:
  2268  			return false
  2269  		}
  2270  	}
  2271  	// Iterator still in progress, wait for either a data or an error event
  2272  	select {
  2273  	case log := <-it.logs:
  2274  		it.Event = new(MiniMeTokenNewCloneToken)
  2275  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2276  			it.fail = err
  2277  			return false
  2278  		}
  2279  		it.Event.Raw = log
  2280  		return true
  2281  
  2282  	case err := <-it.sub.Err():
  2283  		it.done = true
  2284  		it.fail = err
  2285  		return it.Next()
  2286  	}
  2287  }
  2288  
  2289  // Error returns any retrieval or parsing error occurred during filtering.
  2290  func (it *MiniMeTokenNewCloneTokenIterator) Error() error {
  2291  	return it.fail
  2292  }
  2293  
  2294  // Close terminates the iteration process, releasing any pending underlying
  2295  // resources.
  2296  func (it *MiniMeTokenNewCloneTokenIterator) Close() error {
  2297  	it.sub.Unsubscribe()
  2298  	return nil
  2299  }
  2300  
  2301  // MiniMeTokenNewCloneToken represents a NewCloneToken event raised by the MiniMeToken contract.
  2302  type MiniMeTokenNewCloneToken struct {
  2303  	CloneToken    common.Address
  2304  	SnapshotBlock *big.Int
  2305  	Raw           types.Log // Blockchain specific contextual infos
  2306  }
  2307  
  2308  // FilterNewCloneToken is a free log retrieval operation binding the contract event 0x086c875b377f900b07ce03575813022f05dd10ed7640b5282cf6d3c3fc352ade.
  2309  //
  2310  // Solidity: event NewCloneToken(address indexed _cloneToken, uint256 _snapshotBlock)
  2311  func (_MiniMeToken *MiniMeTokenFilterer) FilterNewCloneToken(opts *bind.FilterOpts, _cloneToken []common.Address) (*MiniMeTokenNewCloneTokenIterator, error) {
  2312  
  2313  	var _cloneTokenRule []interface{}
  2314  	for _, _cloneTokenItem := range _cloneToken {
  2315  		_cloneTokenRule = append(_cloneTokenRule, _cloneTokenItem)
  2316  	}
  2317  
  2318  	logs, sub, err := _MiniMeToken.contract.FilterLogs(opts, "NewCloneToken", _cloneTokenRule)
  2319  	if err != nil {
  2320  		return nil, err
  2321  	}
  2322  	return &MiniMeTokenNewCloneTokenIterator{contract: _MiniMeToken.contract, event: "NewCloneToken", logs: logs, sub: sub}, nil
  2323  }
  2324  
  2325  // WatchNewCloneToken is a free log subscription operation binding the contract event 0x086c875b377f900b07ce03575813022f05dd10ed7640b5282cf6d3c3fc352ade.
  2326  //
  2327  // Solidity: event NewCloneToken(address indexed _cloneToken, uint256 _snapshotBlock)
  2328  func (_MiniMeToken *MiniMeTokenFilterer) WatchNewCloneToken(opts *bind.WatchOpts, sink chan<- *MiniMeTokenNewCloneToken, _cloneToken []common.Address) (event.Subscription, error) {
  2329  
  2330  	var _cloneTokenRule []interface{}
  2331  	for _, _cloneTokenItem := range _cloneToken {
  2332  		_cloneTokenRule = append(_cloneTokenRule, _cloneTokenItem)
  2333  	}
  2334  
  2335  	logs, sub, err := _MiniMeToken.contract.WatchLogs(opts, "NewCloneToken", _cloneTokenRule)
  2336  	if err != nil {
  2337  		return nil, err
  2338  	}
  2339  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2340  		defer sub.Unsubscribe()
  2341  		for {
  2342  			select {
  2343  			case log := <-logs:
  2344  				// New log arrived, parse the event and forward to the user
  2345  				event := new(MiniMeTokenNewCloneToken)
  2346  				if err := _MiniMeToken.contract.UnpackLog(event, "NewCloneToken", log); err != nil {
  2347  					return err
  2348  				}
  2349  				event.Raw = log
  2350  
  2351  				select {
  2352  				case sink <- event:
  2353  				case err := <-sub.Err():
  2354  					return err
  2355  				case <-quit:
  2356  					return nil
  2357  				}
  2358  			case err := <-sub.Err():
  2359  				return err
  2360  			case <-quit:
  2361  				return nil
  2362  			}
  2363  		}
  2364  	}), nil
  2365  }
  2366  
  2367  // ParseNewCloneToken is a log parse operation binding the contract event 0x086c875b377f900b07ce03575813022f05dd10ed7640b5282cf6d3c3fc352ade.
  2368  //
  2369  // Solidity: event NewCloneToken(address indexed _cloneToken, uint256 _snapshotBlock)
  2370  func (_MiniMeToken *MiniMeTokenFilterer) ParseNewCloneToken(log types.Log) (*MiniMeTokenNewCloneToken, error) {
  2371  	event := new(MiniMeTokenNewCloneToken)
  2372  	if err := _MiniMeToken.contract.UnpackLog(event, "NewCloneToken", log); err != nil {
  2373  		return nil, err
  2374  	}
  2375  	event.Raw = log
  2376  	return event, nil
  2377  }
  2378  
  2379  // MiniMeTokenTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the MiniMeToken contract.
  2380  type MiniMeTokenTransferIterator struct {
  2381  	Event *MiniMeTokenTransfer // Event containing the contract specifics and raw log
  2382  
  2383  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2384  	event    string              // Event name to use for unpacking event data
  2385  
  2386  	logs chan types.Log        // Log channel receiving the found contract events
  2387  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2388  	done bool                  // Whether the subscription completed delivering logs
  2389  	fail error                 // Occurred error to stop iteration
  2390  }
  2391  
  2392  // Next advances the iterator to the subsequent event, returning whether there
  2393  // are any more events found. In case of a retrieval or parsing error, false is
  2394  // returned and Error() can be queried for the exact failure.
  2395  func (it *MiniMeTokenTransferIterator) Next() bool {
  2396  	// If the iterator failed, stop iterating
  2397  	if it.fail != nil {
  2398  		return false
  2399  	}
  2400  	// If the iterator completed, deliver directly whatever's available
  2401  	if it.done {
  2402  		select {
  2403  		case log := <-it.logs:
  2404  			it.Event = new(MiniMeTokenTransfer)
  2405  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2406  				it.fail = err
  2407  				return false
  2408  			}
  2409  			it.Event.Raw = log
  2410  			return true
  2411  
  2412  		default:
  2413  			return false
  2414  		}
  2415  	}
  2416  	// Iterator still in progress, wait for either a data or an error event
  2417  	select {
  2418  	case log := <-it.logs:
  2419  		it.Event = new(MiniMeTokenTransfer)
  2420  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2421  			it.fail = err
  2422  			return false
  2423  		}
  2424  		it.Event.Raw = log
  2425  		return true
  2426  
  2427  	case err := <-it.sub.Err():
  2428  		it.done = true
  2429  		it.fail = err
  2430  		return it.Next()
  2431  	}
  2432  }
  2433  
  2434  // Error returns any retrieval or parsing error occurred during filtering.
  2435  func (it *MiniMeTokenTransferIterator) Error() error {
  2436  	return it.fail
  2437  }
  2438  
  2439  // Close terminates the iteration process, releasing any pending underlying
  2440  // resources.
  2441  func (it *MiniMeTokenTransferIterator) Close() error {
  2442  	it.sub.Unsubscribe()
  2443  	return nil
  2444  }
  2445  
  2446  // MiniMeTokenTransfer represents a Transfer event raised by the MiniMeToken contract.
  2447  type MiniMeTokenTransfer struct {
  2448  	From   common.Address
  2449  	To     common.Address
  2450  	Amount *big.Int
  2451  	Raw    types.Log // Blockchain specific contextual infos
  2452  }
  2453  
  2454  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2455  //
  2456  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _amount)
  2457  func (_MiniMeToken *MiniMeTokenFilterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address) (*MiniMeTokenTransferIterator, error) {
  2458  
  2459  	var _fromRule []interface{}
  2460  	for _, _fromItem := range _from {
  2461  		_fromRule = append(_fromRule, _fromItem)
  2462  	}
  2463  	var _toRule []interface{}
  2464  	for _, _toItem := range _to {
  2465  		_toRule = append(_toRule, _toItem)
  2466  	}
  2467  
  2468  	logs, sub, err := _MiniMeToken.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule)
  2469  	if err != nil {
  2470  		return nil, err
  2471  	}
  2472  	return &MiniMeTokenTransferIterator{contract: _MiniMeToken.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2473  }
  2474  
  2475  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2476  //
  2477  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _amount)
  2478  func (_MiniMeToken *MiniMeTokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *MiniMeTokenTransfer, _from []common.Address, _to []common.Address) (event.Subscription, error) {
  2479  
  2480  	var _fromRule []interface{}
  2481  	for _, _fromItem := range _from {
  2482  		_fromRule = append(_fromRule, _fromItem)
  2483  	}
  2484  	var _toRule []interface{}
  2485  	for _, _toItem := range _to {
  2486  		_toRule = append(_toRule, _toItem)
  2487  	}
  2488  
  2489  	logs, sub, err := _MiniMeToken.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule)
  2490  	if err != nil {
  2491  		return nil, err
  2492  	}
  2493  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2494  		defer sub.Unsubscribe()
  2495  		for {
  2496  			select {
  2497  			case log := <-logs:
  2498  				// New log arrived, parse the event and forward to the user
  2499  				event := new(MiniMeTokenTransfer)
  2500  				if err := _MiniMeToken.contract.UnpackLog(event, "Transfer", log); err != nil {
  2501  					return err
  2502  				}
  2503  				event.Raw = log
  2504  
  2505  				select {
  2506  				case sink <- event:
  2507  				case err := <-sub.Err():
  2508  					return err
  2509  				case <-quit:
  2510  					return nil
  2511  				}
  2512  			case err := <-sub.Err():
  2513  				return err
  2514  			case <-quit:
  2515  				return nil
  2516  			}
  2517  		}
  2518  	}), nil
  2519  }
  2520  
  2521  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2522  //
  2523  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _amount)
  2524  func (_MiniMeToken *MiniMeTokenFilterer) ParseTransfer(log types.Log) (*MiniMeTokenTransfer, error) {
  2525  	event := new(MiniMeTokenTransfer)
  2526  	if err := _MiniMeToken.contract.UnpackLog(event, "Transfer", log); err != nil {
  2527  		return nil, err
  2528  	}
  2529  	event.Raw = log
  2530  	return event, nil
  2531  }
  2532  
  2533  // MiniMeTokenFactoryABI is the input ABI used to generate the binding from.
  2534  const MiniMeTokenFactoryABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_parentToken\",\"type\":\"address\"},{\"name\":\"_snapshotBlock\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"},{\"name\":\"_transfersEnabled\",\"type\":\"bool\"}],\"name\":\"createCloneToken\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  2535  
  2536  // MiniMeTokenFactoryFuncSigs maps the 4-byte function signature to its string representation.
  2537  var MiniMeTokenFactoryFuncSigs = map[string]string{
  2538  	"5b7b72c1": "createCloneToken(address,uint256,string,uint8,string,bool)",
  2539  }
  2540  
  2541  // MiniMeTokenFactory is an auto generated Go binding around an Ethereum contract.
  2542  type MiniMeTokenFactory struct {
  2543  	MiniMeTokenFactoryCaller     // Read-only binding to the contract
  2544  	MiniMeTokenFactoryTransactor // Write-only binding to the contract
  2545  	MiniMeTokenFactoryFilterer   // Log filterer for contract events
  2546  }
  2547  
  2548  // MiniMeTokenFactoryCaller is an auto generated read-only Go binding around an Ethereum contract.
  2549  type MiniMeTokenFactoryCaller struct {
  2550  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2551  }
  2552  
  2553  // MiniMeTokenFactoryTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2554  type MiniMeTokenFactoryTransactor struct {
  2555  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2556  }
  2557  
  2558  // MiniMeTokenFactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2559  type MiniMeTokenFactoryFilterer struct {
  2560  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2561  }
  2562  
  2563  // MiniMeTokenFactorySession is an auto generated Go binding around an Ethereum contract,
  2564  // with pre-set call and transact options.
  2565  type MiniMeTokenFactorySession struct {
  2566  	Contract     *MiniMeTokenFactory // Generic contract binding to set the session for
  2567  	CallOpts     bind.CallOpts       // Call options to use throughout this session
  2568  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  2569  }
  2570  
  2571  // MiniMeTokenFactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2572  // with pre-set call options.
  2573  type MiniMeTokenFactoryCallerSession struct {
  2574  	Contract *MiniMeTokenFactoryCaller // Generic contract caller binding to set the session for
  2575  	CallOpts bind.CallOpts             // Call options to use throughout this session
  2576  }
  2577  
  2578  // MiniMeTokenFactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2579  // with pre-set transact options.
  2580  type MiniMeTokenFactoryTransactorSession struct {
  2581  	Contract     *MiniMeTokenFactoryTransactor // Generic contract transactor binding to set the session for
  2582  	TransactOpts bind.TransactOpts             // Transaction auth options to use throughout this session
  2583  }
  2584  
  2585  // MiniMeTokenFactoryRaw is an auto generated low-level Go binding around an Ethereum contract.
  2586  type MiniMeTokenFactoryRaw struct {
  2587  	Contract *MiniMeTokenFactory // Generic contract binding to access the raw methods on
  2588  }
  2589  
  2590  // MiniMeTokenFactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2591  type MiniMeTokenFactoryCallerRaw struct {
  2592  	Contract *MiniMeTokenFactoryCaller // Generic read-only contract binding to access the raw methods on
  2593  }
  2594  
  2595  // MiniMeTokenFactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2596  type MiniMeTokenFactoryTransactorRaw struct {
  2597  	Contract *MiniMeTokenFactoryTransactor // Generic write-only contract binding to access the raw methods on
  2598  }
  2599  
  2600  // NewMiniMeTokenFactory creates a new instance of MiniMeTokenFactory, bound to a specific deployed contract.
  2601  func NewMiniMeTokenFactory(address common.Address, backend bind.ContractBackend) (*MiniMeTokenFactory, error) {
  2602  	contract, err := bindMiniMeTokenFactory(address, backend, backend, backend)
  2603  	if err != nil {
  2604  		return nil, err
  2605  	}
  2606  	return &MiniMeTokenFactory{MiniMeTokenFactoryCaller: MiniMeTokenFactoryCaller{contract: contract}, MiniMeTokenFactoryTransactor: MiniMeTokenFactoryTransactor{contract: contract}, MiniMeTokenFactoryFilterer: MiniMeTokenFactoryFilterer{contract: contract}}, nil
  2607  }
  2608  
  2609  // NewMiniMeTokenFactoryCaller creates a new read-only instance of MiniMeTokenFactory, bound to a specific deployed contract.
  2610  func NewMiniMeTokenFactoryCaller(address common.Address, caller bind.ContractCaller) (*MiniMeTokenFactoryCaller, error) {
  2611  	contract, err := bindMiniMeTokenFactory(address, caller, nil, nil)
  2612  	if err != nil {
  2613  		return nil, err
  2614  	}
  2615  	return &MiniMeTokenFactoryCaller{contract: contract}, nil
  2616  }
  2617  
  2618  // NewMiniMeTokenFactoryTransactor creates a new write-only instance of MiniMeTokenFactory, bound to a specific deployed contract.
  2619  func NewMiniMeTokenFactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*MiniMeTokenFactoryTransactor, error) {
  2620  	contract, err := bindMiniMeTokenFactory(address, nil, transactor, nil)
  2621  	if err != nil {
  2622  		return nil, err
  2623  	}
  2624  	return &MiniMeTokenFactoryTransactor{contract: contract}, nil
  2625  }
  2626  
  2627  // NewMiniMeTokenFactoryFilterer creates a new log filterer instance of MiniMeTokenFactory, bound to a specific deployed contract.
  2628  func NewMiniMeTokenFactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*MiniMeTokenFactoryFilterer, error) {
  2629  	contract, err := bindMiniMeTokenFactory(address, nil, nil, filterer)
  2630  	if err != nil {
  2631  		return nil, err
  2632  	}
  2633  	return &MiniMeTokenFactoryFilterer{contract: contract}, nil
  2634  }
  2635  
  2636  // bindMiniMeTokenFactory binds a generic wrapper to an already deployed contract.
  2637  func bindMiniMeTokenFactory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2638  	parsed, err := abi.JSON(strings.NewReader(MiniMeTokenFactoryABI))
  2639  	if err != nil {
  2640  		return nil, err
  2641  	}
  2642  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2643  }
  2644  
  2645  // Call invokes the (constant) contract method with params as input values and
  2646  // sets the output to result. The result type might be a single field for simple
  2647  // returns, a slice of interfaces for anonymous returns and a struct for named
  2648  // returns.
  2649  func (_MiniMeTokenFactory *MiniMeTokenFactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2650  	return _MiniMeTokenFactory.Contract.MiniMeTokenFactoryCaller.contract.Call(opts, result, method, params...)
  2651  }
  2652  
  2653  // Transfer initiates a plain transaction to move funds to the contract, calling
  2654  // its default method if one is available.
  2655  func (_MiniMeTokenFactory *MiniMeTokenFactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2656  	return _MiniMeTokenFactory.Contract.MiniMeTokenFactoryTransactor.contract.Transfer(opts)
  2657  }
  2658  
  2659  // Transact invokes the (paid) contract method with params as input values.
  2660  func (_MiniMeTokenFactory *MiniMeTokenFactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2661  	return _MiniMeTokenFactory.Contract.MiniMeTokenFactoryTransactor.contract.Transact(opts, method, params...)
  2662  }
  2663  
  2664  // Call invokes the (constant) contract method with params as input values and
  2665  // sets the output to result. The result type might be a single field for simple
  2666  // returns, a slice of interfaces for anonymous returns and a struct for named
  2667  // returns.
  2668  func (_MiniMeTokenFactory *MiniMeTokenFactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2669  	return _MiniMeTokenFactory.Contract.contract.Call(opts, result, method, params...)
  2670  }
  2671  
  2672  // Transfer initiates a plain transaction to move funds to the contract, calling
  2673  // its default method if one is available.
  2674  func (_MiniMeTokenFactory *MiniMeTokenFactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2675  	return _MiniMeTokenFactory.Contract.contract.Transfer(opts)
  2676  }
  2677  
  2678  // Transact invokes the (paid) contract method with params as input values.
  2679  func (_MiniMeTokenFactory *MiniMeTokenFactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2680  	return _MiniMeTokenFactory.Contract.contract.Transact(opts, method, params...)
  2681  }
  2682  
  2683  // CreateCloneToken is a paid mutator transaction binding the contract method 0x5b7b72c1.
  2684  //
  2685  // Solidity: function createCloneToken(address _parentToken, uint256 _snapshotBlock, string _tokenName, uint8 _decimalUnits, string _tokenSymbol, bool _transfersEnabled) returns(address)
  2686  func (_MiniMeTokenFactory *MiniMeTokenFactoryTransactor) CreateCloneToken(opts *bind.TransactOpts, _parentToken common.Address, _snapshotBlock *big.Int, _tokenName string, _decimalUnits uint8, _tokenSymbol string, _transfersEnabled bool) (*types.Transaction, error) {
  2687  	return _MiniMeTokenFactory.contract.Transact(opts, "createCloneToken", _parentToken, _snapshotBlock, _tokenName, _decimalUnits, _tokenSymbol, _transfersEnabled)
  2688  }
  2689  
  2690  // CreateCloneToken is a paid mutator transaction binding the contract method 0x5b7b72c1.
  2691  //
  2692  // Solidity: function createCloneToken(address _parentToken, uint256 _snapshotBlock, string _tokenName, uint8 _decimalUnits, string _tokenSymbol, bool _transfersEnabled) returns(address)
  2693  func (_MiniMeTokenFactory *MiniMeTokenFactorySession) CreateCloneToken(_parentToken common.Address, _snapshotBlock *big.Int, _tokenName string, _decimalUnits uint8, _tokenSymbol string, _transfersEnabled bool) (*types.Transaction, error) {
  2694  	return _MiniMeTokenFactory.Contract.CreateCloneToken(&_MiniMeTokenFactory.TransactOpts, _parentToken, _snapshotBlock, _tokenName, _decimalUnits, _tokenSymbol, _transfersEnabled)
  2695  }
  2696  
  2697  // CreateCloneToken is a paid mutator transaction binding the contract method 0x5b7b72c1.
  2698  //
  2699  // Solidity: function createCloneToken(address _parentToken, uint256 _snapshotBlock, string _tokenName, uint8 _decimalUnits, string _tokenSymbol, bool _transfersEnabled) returns(address)
  2700  func (_MiniMeTokenFactory *MiniMeTokenFactoryTransactorSession) CreateCloneToken(_parentToken common.Address, _snapshotBlock *big.Int, _tokenName string, _decimalUnits uint8, _tokenSymbol string, _transfersEnabled bool) (*types.Transaction, error) {
  2701  	return _MiniMeTokenFactory.Contract.CreateCloneToken(&_MiniMeTokenFactory.TransactOpts, _parentToken, _snapshotBlock, _tokenName, _decimalUnits, _tokenSymbol, _transfersEnabled)
  2702  }
  2703  
  2704  // SNTABI is the input ABI used to generate the binding from.
  2705  const SNTABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"creationBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newController\",\"type\":\"address\"}],\"name\":\"changeController\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"balanceOfAt\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cloneTokenName\",\"type\":\"string\"},{\"name\":\"_cloneDecimalUnits\",\"type\":\"uint8\"},{\"name\":\"_cloneTokenSymbol\",\"type\":\"string\"},{\"name\":\"_snapshotBlock\",\"type\":\"uint256\"},{\"name\":\"_transfersEnabled\",\"type\":\"bool\"}],\"name\":\"createCloneToken\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"parentToken\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"generateTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"totalSupplyAt\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transfersEnabled\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"parentSnapShotBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"destroyTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"claimTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenFactory\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_transfersEnabled\",\"type\":\"bool\"}],\"name\":\"enableTransfers\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controller\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_controller\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ClaimedTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_cloneToken\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_snapshotBlock\",\"type\":\"uint256\"}],\"name\":\"NewCloneToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"
  2706  
  2707  // SNTFuncSigs maps the 4-byte function signature to its string representation.
  2708  var SNTFuncSigs = map[string]string{
  2709  	"dd62ed3e": "allowance(address,address)",
  2710  	"095ea7b3": "approve(address,uint256)",
  2711  	"cae9ca51": "approveAndCall(address,uint256,bytes)",
  2712  	"70a08231": "balanceOf(address)",
  2713  	"4ee2cd7e": "balanceOfAt(address,uint256)",
  2714  	"3cebb823": "changeController(address)",
  2715  	"df8de3e7": "claimTokens(address)",
  2716  	"f77c4791": "controller()",
  2717  	"6638c087": "createCloneToken(string,uint8,string,uint256,bool)",
  2718  	"17634514": "creationBlock()",
  2719  	"313ce567": "decimals()",
  2720  	"d3ce77fe": "destroyTokens(address,uint256)",
  2721  	"f41e60c5": "enableTransfers(bool)",
  2722  	"827f32c0": "generateTokens(address,uint256)",
  2723  	"06fdde03": "name()",
  2724  	"c5bcc4f1": "parentSnapShotBlock()",
  2725  	"80a54001": "parentToken()",
  2726  	"95d89b41": "symbol()",
  2727  	"e77772fe": "tokenFactory()",
  2728  	"18160ddd": "totalSupply()",
  2729  	"981b24d0": "totalSupplyAt(uint256)",
  2730  	"a9059cbb": "transfer(address,uint256)",
  2731  	"23b872dd": "transferFrom(address,address,uint256)",
  2732  	"bef97c87": "transfersEnabled()",
  2733  	"54fd4d50": "version()",
  2734  }
  2735  
  2736  // SNT is an auto generated Go binding around an Ethereum contract.
  2737  type SNT struct {
  2738  	SNTCaller     // Read-only binding to the contract
  2739  	SNTTransactor // Write-only binding to the contract
  2740  	SNTFilterer   // Log filterer for contract events
  2741  }
  2742  
  2743  // SNTCaller is an auto generated read-only Go binding around an Ethereum contract.
  2744  type SNTCaller struct {
  2745  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2746  }
  2747  
  2748  // SNTTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2749  type SNTTransactor struct {
  2750  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2751  }
  2752  
  2753  // SNTFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2754  type SNTFilterer struct {
  2755  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2756  }
  2757  
  2758  // SNTSession is an auto generated Go binding around an Ethereum contract,
  2759  // with pre-set call and transact options.
  2760  type SNTSession struct {
  2761  	Contract     *SNT              // Generic contract binding to set the session for
  2762  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2763  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2764  }
  2765  
  2766  // SNTCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2767  // with pre-set call options.
  2768  type SNTCallerSession struct {
  2769  	Contract *SNTCaller    // Generic contract caller binding to set the session for
  2770  	CallOpts bind.CallOpts // Call options to use throughout this session
  2771  }
  2772  
  2773  // SNTTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2774  // with pre-set transact options.
  2775  type SNTTransactorSession struct {
  2776  	Contract     *SNTTransactor    // Generic contract transactor binding to set the session for
  2777  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2778  }
  2779  
  2780  // SNTRaw is an auto generated low-level Go binding around an Ethereum contract.
  2781  type SNTRaw struct {
  2782  	Contract *SNT // Generic contract binding to access the raw methods on
  2783  }
  2784  
  2785  // SNTCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2786  type SNTCallerRaw struct {
  2787  	Contract *SNTCaller // Generic read-only contract binding to access the raw methods on
  2788  }
  2789  
  2790  // SNTTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2791  type SNTTransactorRaw struct {
  2792  	Contract *SNTTransactor // Generic write-only contract binding to access the raw methods on
  2793  }
  2794  
  2795  // NewSNT creates a new instance of SNT, bound to a specific deployed contract.
  2796  func NewSNT(address common.Address, backend bind.ContractBackend) (*SNT, error) {
  2797  	contract, err := bindSNT(address, backend, backend, backend)
  2798  	if err != nil {
  2799  		return nil, err
  2800  	}
  2801  	return &SNT{SNTCaller: SNTCaller{contract: contract}, SNTTransactor: SNTTransactor{contract: contract}, SNTFilterer: SNTFilterer{contract: contract}}, nil
  2802  }
  2803  
  2804  // NewSNTCaller creates a new read-only instance of SNT, bound to a specific deployed contract.
  2805  func NewSNTCaller(address common.Address, caller bind.ContractCaller) (*SNTCaller, error) {
  2806  	contract, err := bindSNT(address, caller, nil, nil)
  2807  	if err != nil {
  2808  		return nil, err
  2809  	}
  2810  	return &SNTCaller{contract: contract}, nil
  2811  }
  2812  
  2813  // NewSNTTransactor creates a new write-only instance of SNT, bound to a specific deployed contract.
  2814  func NewSNTTransactor(address common.Address, transactor bind.ContractTransactor) (*SNTTransactor, error) {
  2815  	contract, err := bindSNT(address, nil, transactor, nil)
  2816  	if err != nil {
  2817  		return nil, err
  2818  	}
  2819  	return &SNTTransactor{contract: contract}, nil
  2820  }
  2821  
  2822  // NewSNTFilterer creates a new log filterer instance of SNT, bound to a specific deployed contract.
  2823  func NewSNTFilterer(address common.Address, filterer bind.ContractFilterer) (*SNTFilterer, error) {
  2824  	contract, err := bindSNT(address, nil, nil, filterer)
  2825  	if err != nil {
  2826  		return nil, err
  2827  	}
  2828  	return &SNTFilterer{contract: contract}, nil
  2829  }
  2830  
  2831  // bindSNT binds a generic wrapper to an already deployed contract.
  2832  func bindSNT(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2833  	parsed, err := abi.JSON(strings.NewReader(SNTABI))
  2834  	if err != nil {
  2835  		return nil, err
  2836  	}
  2837  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2838  }
  2839  
  2840  // Call invokes the (constant) contract method with params as input values and
  2841  // sets the output to result. The result type might be a single field for simple
  2842  // returns, a slice of interfaces for anonymous returns and a struct for named
  2843  // returns.
  2844  func (_SNT *SNTRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2845  	return _SNT.Contract.SNTCaller.contract.Call(opts, result, method, params...)
  2846  }
  2847  
  2848  // Transfer initiates a plain transaction to move funds to the contract, calling
  2849  // its default method if one is available.
  2850  func (_SNT *SNTRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2851  	return _SNT.Contract.SNTTransactor.contract.Transfer(opts)
  2852  }
  2853  
  2854  // Transact invokes the (paid) contract method with params as input values.
  2855  func (_SNT *SNTRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2856  	return _SNT.Contract.SNTTransactor.contract.Transact(opts, method, params...)
  2857  }
  2858  
  2859  // Call invokes the (constant) contract method with params as input values and
  2860  // sets the output to result. The result type might be a single field for simple
  2861  // returns, a slice of interfaces for anonymous returns and a struct for named
  2862  // returns.
  2863  func (_SNT *SNTCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2864  	return _SNT.Contract.contract.Call(opts, result, method, params...)
  2865  }
  2866  
  2867  // Transfer initiates a plain transaction to move funds to the contract, calling
  2868  // its default method if one is available.
  2869  func (_SNT *SNTTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2870  	return _SNT.Contract.contract.Transfer(opts)
  2871  }
  2872  
  2873  // Transact invokes the (paid) contract method with params as input values.
  2874  func (_SNT *SNTTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2875  	return _SNT.Contract.contract.Transact(opts, method, params...)
  2876  }
  2877  
  2878  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2879  //
  2880  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
  2881  func (_SNT *SNTCaller) Allowance(opts *bind.CallOpts, _owner common.Address, _spender common.Address) (*big.Int, error) {
  2882  	var out []interface{}
  2883  	err := _SNT.contract.Call(opts, &out, "allowance", _owner, _spender)
  2884  
  2885  	if err != nil {
  2886  		return *new(*big.Int), err
  2887  	}
  2888  
  2889  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2890  
  2891  	return out0, err
  2892  
  2893  }
  2894  
  2895  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2896  //
  2897  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
  2898  func (_SNT *SNTSession) Allowance(_owner common.Address, _spender common.Address) (*big.Int, error) {
  2899  	return _SNT.Contract.Allowance(&_SNT.CallOpts, _owner, _spender)
  2900  }
  2901  
  2902  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2903  //
  2904  // Solidity: function allowance(address _owner, address _spender) view returns(uint256 remaining)
  2905  func (_SNT *SNTCallerSession) Allowance(_owner common.Address, _spender common.Address) (*big.Int, error) {
  2906  	return _SNT.Contract.Allowance(&_SNT.CallOpts, _owner, _spender)
  2907  }
  2908  
  2909  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2910  //
  2911  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
  2912  func (_SNT *SNTCaller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) {
  2913  	var out []interface{}
  2914  	err := _SNT.contract.Call(opts, &out, "balanceOf", _owner)
  2915  
  2916  	if err != nil {
  2917  		return *new(*big.Int), err
  2918  	}
  2919  
  2920  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2921  
  2922  	return out0, err
  2923  
  2924  }
  2925  
  2926  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2927  //
  2928  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
  2929  func (_SNT *SNTSession) BalanceOf(_owner common.Address) (*big.Int, error) {
  2930  	return _SNT.Contract.BalanceOf(&_SNT.CallOpts, _owner)
  2931  }
  2932  
  2933  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2934  //
  2935  // Solidity: function balanceOf(address _owner) view returns(uint256 balance)
  2936  func (_SNT *SNTCallerSession) BalanceOf(_owner common.Address) (*big.Int, error) {
  2937  	return _SNT.Contract.BalanceOf(&_SNT.CallOpts, _owner)
  2938  }
  2939  
  2940  // BalanceOfAt is a free data retrieval call binding the contract method 0x4ee2cd7e.
  2941  //
  2942  // Solidity: function balanceOfAt(address _owner, uint256 _blockNumber) view returns(uint256)
  2943  func (_SNT *SNTCaller) BalanceOfAt(opts *bind.CallOpts, _owner common.Address, _blockNumber *big.Int) (*big.Int, error) {
  2944  	var out []interface{}
  2945  	err := _SNT.contract.Call(opts, &out, "balanceOfAt", _owner, _blockNumber)
  2946  
  2947  	if err != nil {
  2948  		return *new(*big.Int), err
  2949  	}
  2950  
  2951  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2952  
  2953  	return out0, err
  2954  
  2955  }
  2956  
  2957  // BalanceOfAt is a free data retrieval call binding the contract method 0x4ee2cd7e.
  2958  //
  2959  // Solidity: function balanceOfAt(address _owner, uint256 _blockNumber) view returns(uint256)
  2960  func (_SNT *SNTSession) BalanceOfAt(_owner common.Address, _blockNumber *big.Int) (*big.Int, error) {
  2961  	return _SNT.Contract.BalanceOfAt(&_SNT.CallOpts, _owner, _blockNumber)
  2962  }
  2963  
  2964  // BalanceOfAt is a free data retrieval call binding the contract method 0x4ee2cd7e.
  2965  //
  2966  // Solidity: function balanceOfAt(address _owner, uint256 _blockNumber) view returns(uint256)
  2967  func (_SNT *SNTCallerSession) BalanceOfAt(_owner common.Address, _blockNumber *big.Int) (*big.Int, error) {
  2968  	return _SNT.Contract.BalanceOfAt(&_SNT.CallOpts, _owner, _blockNumber)
  2969  }
  2970  
  2971  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
  2972  //
  2973  // Solidity: function controller() view returns(address)
  2974  func (_SNT *SNTCaller) Controller(opts *bind.CallOpts) (common.Address, error) {
  2975  	var out []interface{}
  2976  	err := _SNT.contract.Call(opts, &out, "controller")
  2977  
  2978  	if err != nil {
  2979  		return *new(common.Address), err
  2980  	}
  2981  
  2982  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  2983  
  2984  	return out0, err
  2985  
  2986  }
  2987  
  2988  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
  2989  //
  2990  // Solidity: function controller() view returns(address)
  2991  func (_SNT *SNTSession) Controller() (common.Address, error) {
  2992  	return _SNT.Contract.Controller(&_SNT.CallOpts)
  2993  }
  2994  
  2995  // Controller is a free data retrieval call binding the contract method 0xf77c4791.
  2996  //
  2997  // Solidity: function controller() view returns(address)
  2998  func (_SNT *SNTCallerSession) Controller() (common.Address, error) {
  2999  	return _SNT.Contract.Controller(&_SNT.CallOpts)
  3000  }
  3001  
  3002  // CreationBlock is a free data retrieval call binding the contract method 0x17634514.
  3003  //
  3004  // Solidity: function creationBlock() view returns(uint256)
  3005  func (_SNT *SNTCaller) CreationBlock(opts *bind.CallOpts) (*big.Int, error) {
  3006  	var out []interface{}
  3007  	err := _SNT.contract.Call(opts, &out, "creationBlock")
  3008  
  3009  	if err != nil {
  3010  		return *new(*big.Int), err
  3011  	}
  3012  
  3013  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3014  
  3015  	return out0, err
  3016  
  3017  }
  3018  
  3019  // CreationBlock is a free data retrieval call binding the contract method 0x17634514.
  3020  //
  3021  // Solidity: function creationBlock() view returns(uint256)
  3022  func (_SNT *SNTSession) CreationBlock() (*big.Int, error) {
  3023  	return _SNT.Contract.CreationBlock(&_SNT.CallOpts)
  3024  }
  3025  
  3026  // CreationBlock is a free data retrieval call binding the contract method 0x17634514.
  3027  //
  3028  // Solidity: function creationBlock() view returns(uint256)
  3029  func (_SNT *SNTCallerSession) CreationBlock() (*big.Int, error) {
  3030  	return _SNT.Contract.CreationBlock(&_SNT.CallOpts)
  3031  }
  3032  
  3033  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  3034  //
  3035  // Solidity: function decimals() view returns(uint8)
  3036  func (_SNT *SNTCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
  3037  	var out []interface{}
  3038  	err := _SNT.contract.Call(opts, &out, "decimals")
  3039  
  3040  	if err != nil {
  3041  		return *new(uint8), err
  3042  	}
  3043  
  3044  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  3045  
  3046  	return out0, err
  3047  
  3048  }
  3049  
  3050  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  3051  //
  3052  // Solidity: function decimals() view returns(uint8)
  3053  func (_SNT *SNTSession) Decimals() (uint8, error) {
  3054  	return _SNT.Contract.Decimals(&_SNT.CallOpts)
  3055  }
  3056  
  3057  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  3058  //
  3059  // Solidity: function decimals() view returns(uint8)
  3060  func (_SNT *SNTCallerSession) Decimals() (uint8, error) {
  3061  	return _SNT.Contract.Decimals(&_SNT.CallOpts)
  3062  }
  3063  
  3064  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3065  //
  3066  // Solidity: function name() view returns(string)
  3067  func (_SNT *SNTCaller) Name(opts *bind.CallOpts) (string, error) {
  3068  	var out []interface{}
  3069  	err := _SNT.contract.Call(opts, &out, "name")
  3070  
  3071  	if err != nil {
  3072  		return *new(string), err
  3073  	}
  3074  
  3075  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  3076  
  3077  	return out0, err
  3078  
  3079  }
  3080  
  3081  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3082  //
  3083  // Solidity: function name() view returns(string)
  3084  func (_SNT *SNTSession) Name() (string, error) {
  3085  	return _SNT.Contract.Name(&_SNT.CallOpts)
  3086  }
  3087  
  3088  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3089  //
  3090  // Solidity: function name() view returns(string)
  3091  func (_SNT *SNTCallerSession) Name() (string, error) {
  3092  	return _SNT.Contract.Name(&_SNT.CallOpts)
  3093  }
  3094  
  3095  // ParentSnapShotBlock is a free data retrieval call binding the contract method 0xc5bcc4f1.
  3096  //
  3097  // Solidity: function parentSnapShotBlock() view returns(uint256)
  3098  func (_SNT *SNTCaller) ParentSnapShotBlock(opts *bind.CallOpts) (*big.Int, error) {
  3099  	var out []interface{}
  3100  	err := _SNT.contract.Call(opts, &out, "parentSnapShotBlock")
  3101  
  3102  	if err != nil {
  3103  		return *new(*big.Int), err
  3104  	}
  3105  
  3106  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3107  
  3108  	return out0, err
  3109  
  3110  }
  3111  
  3112  // ParentSnapShotBlock is a free data retrieval call binding the contract method 0xc5bcc4f1.
  3113  //
  3114  // Solidity: function parentSnapShotBlock() view returns(uint256)
  3115  func (_SNT *SNTSession) ParentSnapShotBlock() (*big.Int, error) {
  3116  	return _SNT.Contract.ParentSnapShotBlock(&_SNT.CallOpts)
  3117  }
  3118  
  3119  // ParentSnapShotBlock is a free data retrieval call binding the contract method 0xc5bcc4f1.
  3120  //
  3121  // Solidity: function parentSnapShotBlock() view returns(uint256)
  3122  func (_SNT *SNTCallerSession) ParentSnapShotBlock() (*big.Int, error) {
  3123  	return _SNT.Contract.ParentSnapShotBlock(&_SNT.CallOpts)
  3124  }
  3125  
  3126  // ParentToken is a free data retrieval call binding the contract method 0x80a54001.
  3127  //
  3128  // Solidity: function parentToken() view returns(address)
  3129  func (_SNT *SNTCaller) ParentToken(opts *bind.CallOpts) (common.Address, error) {
  3130  	var out []interface{}
  3131  	err := _SNT.contract.Call(opts, &out, "parentToken")
  3132  
  3133  	if err != nil {
  3134  		return *new(common.Address), err
  3135  	}
  3136  
  3137  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3138  
  3139  	return out0, err
  3140  
  3141  }
  3142  
  3143  // ParentToken is a free data retrieval call binding the contract method 0x80a54001.
  3144  //
  3145  // Solidity: function parentToken() view returns(address)
  3146  func (_SNT *SNTSession) ParentToken() (common.Address, error) {
  3147  	return _SNT.Contract.ParentToken(&_SNT.CallOpts)
  3148  }
  3149  
  3150  // ParentToken is a free data retrieval call binding the contract method 0x80a54001.
  3151  //
  3152  // Solidity: function parentToken() view returns(address)
  3153  func (_SNT *SNTCallerSession) ParentToken() (common.Address, error) {
  3154  	return _SNT.Contract.ParentToken(&_SNT.CallOpts)
  3155  }
  3156  
  3157  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3158  //
  3159  // Solidity: function symbol() view returns(string)
  3160  func (_SNT *SNTCaller) Symbol(opts *bind.CallOpts) (string, error) {
  3161  	var out []interface{}
  3162  	err := _SNT.contract.Call(opts, &out, "symbol")
  3163  
  3164  	if err != nil {
  3165  		return *new(string), err
  3166  	}
  3167  
  3168  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  3169  
  3170  	return out0, err
  3171  
  3172  }
  3173  
  3174  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3175  //
  3176  // Solidity: function symbol() view returns(string)
  3177  func (_SNT *SNTSession) Symbol() (string, error) {
  3178  	return _SNT.Contract.Symbol(&_SNT.CallOpts)
  3179  }
  3180  
  3181  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3182  //
  3183  // Solidity: function symbol() view returns(string)
  3184  func (_SNT *SNTCallerSession) Symbol() (string, error) {
  3185  	return _SNT.Contract.Symbol(&_SNT.CallOpts)
  3186  }
  3187  
  3188  // TokenFactory is a free data retrieval call binding the contract method 0xe77772fe.
  3189  //
  3190  // Solidity: function tokenFactory() view returns(address)
  3191  func (_SNT *SNTCaller) TokenFactory(opts *bind.CallOpts) (common.Address, error) {
  3192  	var out []interface{}
  3193  	err := _SNT.contract.Call(opts, &out, "tokenFactory")
  3194  
  3195  	if err != nil {
  3196  		return *new(common.Address), err
  3197  	}
  3198  
  3199  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3200  
  3201  	return out0, err
  3202  
  3203  }
  3204  
  3205  // TokenFactory is a free data retrieval call binding the contract method 0xe77772fe.
  3206  //
  3207  // Solidity: function tokenFactory() view returns(address)
  3208  func (_SNT *SNTSession) TokenFactory() (common.Address, error) {
  3209  	return _SNT.Contract.TokenFactory(&_SNT.CallOpts)
  3210  }
  3211  
  3212  // TokenFactory is a free data retrieval call binding the contract method 0xe77772fe.
  3213  //
  3214  // Solidity: function tokenFactory() view returns(address)
  3215  func (_SNT *SNTCallerSession) TokenFactory() (common.Address, error) {
  3216  	return _SNT.Contract.TokenFactory(&_SNT.CallOpts)
  3217  }
  3218  
  3219  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3220  //
  3221  // Solidity: function totalSupply() view returns(uint256)
  3222  func (_SNT *SNTCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3223  	var out []interface{}
  3224  	err := _SNT.contract.Call(opts, &out, "totalSupply")
  3225  
  3226  	if err != nil {
  3227  		return *new(*big.Int), err
  3228  	}
  3229  
  3230  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3231  
  3232  	return out0, err
  3233  
  3234  }
  3235  
  3236  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3237  //
  3238  // Solidity: function totalSupply() view returns(uint256)
  3239  func (_SNT *SNTSession) TotalSupply() (*big.Int, error) {
  3240  	return _SNT.Contract.TotalSupply(&_SNT.CallOpts)
  3241  }
  3242  
  3243  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3244  //
  3245  // Solidity: function totalSupply() view returns(uint256)
  3246  func (_SNT *SNTCallerSession) TotalSupply() (*big.Int, error) {
  3247  	return _SNT.Contract.TotalSupply(&_SNT.CallOpts)
  3248  }
  3249  
  3250  // TotalSupplyAt is a free data retrieval call binding the contract method 0x981b24d0.
  3251  //
  3252  // Solidity: function totalSupplyAt(uint256 _blockNumber) view returns(uint256)
  3253  func (_SNT *SNTCaller) TotalSupplyAt(opts *bind.CallOpts, _blockNumber *big.Int) (*big.Int, error) {
  3254  	var out []interface{}
  3255  	err := _SNT.contract.Call(opts, &out, "totalSupplyAt", _blockNumber)
  3256  
  3257  	if err != nil {
  3258  		return *new(*big.Int), err
  3259  	}
  3260  
  3261  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3262  
  3263  	return out0, err
  3264  
  3265  }
  3266  
  3267  // TotalSupplyAt is a free data retrieval call binding the contract method 0x981b24d0.
  3268  //
  3269  // Solidity: function totalSupplyAt(uint256 _blockNumber) view returns(uint256)
  3270  func (_SNT *SNTSession) TotalSupplyAt(_blockNumber *big.Int) (*big.Int, error) {
  3271  	return _SNT.Contract.TotalSupplyAt(&_SNT.CallOpts, _blockNumber)
  3272  }
  3273  
  3274  // TotalSupplyAt is a free data retrieval call binding the contract method 0x981b24d0.
  3275  //
  3276  // Solidity: function totalSupplyAt(uint256 _blockNumber) view returns(uint256)
  3277  func (_SNT *SNTCallerSession) TotalSupplyAt(_blockNumber *big.Int) (*big.Int, error) {
  3278  	return _SNT.Contract.TotalSupplyAt(&_SNT.CallOpts, _blockNumber)
  3279  }
  3280  
  3281  // TransfersEnabled is a free data retrieval call binding the contract method 0xbef97c87.
  3282  //
  3283  // Solidity: function transfersEnabled() view returns(bool)
  3284  func (_SNT *SNTCaller) TransfersEnabled(opts *bind.CallOpts) (bool, error) {
  3285  	var out []interface{}
  3286  	err := _SNT.contract.Call(opts, &out, "transfersEnabled")
  3287  
  3288  	if err != nil {
  3289  		return *new(bool), err
  3290  	}
  3291  
  3292  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  3293  
  3294  	return out0, err
  3295  
  3296  }
  3297  
  3298  // TransfersEnabled is a free data retrieval call binding the contract method 0xbef97c87.
  3299  //
  3300  // Solidity: function transfersEnabled() view returns(bool)
  3301  func (_SNT *SNTSession) TransfersEnabled() (bool, error) {
  3302  	return _SNT.Contract.TransfersEnabled(&_SNT.CallOpts)
  3303  }
  3304  
  3305  // TransfersEnabled is a free data retrieval call binding the contract method 0xbef97c87.
  3306  //
  3307  // Solidity: function transfersEnabled() view returns(bool)
  3308  func (_SNT *SNTCallerSession) TransfersEnabled() (bool, error) {
  3309  	return _SNT.Contract.TransfersEnabled(&_SNT.CallOpts)
  3310  }
  3311  
  3312  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  3313  //
  3314  // Solidity: function version() view returns(string)
  3315  func (_SNT *SNTCaller) Version(opts *bind.CallOpts) (string, error) {
  3316  	var out []interface{}
  3317  	err := _SNT.contract.Call(opts, &out, "version")
  3318  
  3319  	if err != nil {
  3320  		return *new(string), err
  3321  	}
  3322  
  3323  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  3324  
  3325  	return out0, err
  3326  
  3327  }
  3328  
  3329  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  3330  //
  3331  // Solidity: function version() view returns(string)
  3332  func (_SNT *SNTSession) Version() (string, error) {
  3333  	return _SNT.Contract.Version(&_SNT.CallOpts)
  3334  }
  3335  
  3336  // Version is a free data retrieval call binding the contract method 0x54fd4d50.
  3337  //
  3338  // Solidity: function version() view returns(string)
  3339  func (_SNT *SNTCallerSession) Version() (string, error) {
  3340  	return _SNT.Contract.Version(&_SNT.CallOpts)
  3341  }
  3342  
  3343  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3344  //
  3345  // Solidity: function approve(address _spender, uint256 _amount) returns(bool success)
  3346  func (_SNT *SNTTransactor) Approve(opts *bind.TransactOpts, _spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  3347  	return _SNT.contract.Transact(opts, "approve", _spender, _amount)
  3348  }
  3349  
  3350  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3351  //
  3352  // Solidity: function approve(address _spender, uint256 _amount) returns(bool success)
  3353  func (_SNT *SNTSession) Approve(_spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  3354  	return _SNT.Contract.Approve(&_SNT.TransactOpts, _spender, _amount)
  3355  }
  3356  
  3357  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3358  //
  3359  // Solidity: function approve(address _spender, uint256 _amount) returns(bool success)
  3360  func (_SNT *SNTTransactorSession) Approve(_spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  3361  	return _SNT.Contract.Approve(&_SNT.TransactOpts, _spender, _amount)
  3362  }
  3363  
  3364  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  3365  //
  3366  // Solidity: function approveAndCall(address _spender, uint256 _amount, bytes _extraData) returns(bool success)
  3367  func (_SNT *SNTTransactor) ApproveAndCall(opts *bind.TransactOpts, _spender common.Address, _amount *big.Int, _extraData []byte) (*types.Transaction, error) {
  3368  	return _SNT.contract.Transact(opts, "approveAndCall", _spender, _amount, _extraData)
  3369  }
  3370  
  3371  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  3372  //
  3373  // Solidity: function approveAndCall(address _spender, uint256 _amount, bytes _extraData) returns(bool success)
  3374  func (_SNT *SNTSession) ApproveAndCall(_spender common.Address, _amount *big.Int, _extraData []byte) (*types.Transaction, error) {
  3375  	return _SNT.Contract.ApproveAndCall(&_SNT.TransactOpts, _spender, _amount, _extraData)
  3376  }
  3377  
  3378  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  3379  //
  3380  // Solidity: function approveAndCall(address _spender, uint256 _amount, bytes _extraData) returns(bool success)
  3381  func (_SNT *SNTTransactorSession) ApproveAndCall(_spender common.Address, _amount *big.Int, _extraData []byte) (*types.Transaction, error) {
  3382  	return _SNT.Contract.ApproveAndCall(&_SNT.TransactOpts, _spender, _amount, _extraData)
  3383  }
  3384  
  3385  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
  3386  //
  3387  // Solidity: function changeController(address _newController) returns()
  3388  func (_SNT *SNTTransactor) ChangeController(opts *bind.TransactOpts, _newController common.Address) (*types.Transaction, error) {
  3389  	return _SNT.contract.Transact(opts, "changeController", _newController)
  3390  }
  3391  
  3392  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
  3393  //
  3394  // Solidity: function changeController(address _newController) returns()
  3395  func (_SNT *SNTSession) ChangeController(_newController common.Address) (*types.Transaction, error) {
  3396  	return _SNT.Contract.ChangeController(&_SNT.TransactOpts, _newController)
  3397  }
  3398  
  3399  // ChangeController is a paid mutator transaction binding the contract method 0x3cebb823.
  3400  //
  3401  // Solidity: function changeController(address _newController) returns()
  3402  func (_SNT *SNTTransactorSession) ChangeController(_newController common.Address) (*types.Transaction, error) {
  3403  	return _SNT.Contract.ChangeController(&_SNT.TransactOpts, _newController)
  3404  }
  3405  
  3406  // ClaimTokens is a paid mutator transaction binding the contract method 0xdf8de3e7.
  3407  //
  3408  // Solidity: function claimTokens(address _token) returns()
  3409  func (_SNT *SNTTransactor) ClaimTokens(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  3410  	return _SNT.contract.Transact(opts, "claimTokens", _token)
  3411  }
  3412  
  3413  // ClaimTokens is a paid mutator transaction binding the contract method 0xdf8de3e7.
  3414  //
  3415  // Solidity: function claimTokens(address _token) returns()
  3416  func (_SNT *SNTSession) ClaimTokens(_token common.Address) (*types.Transaction, error) {
  3417  	return _SNT.Contract.ClaimTokens(&_SNT.TransactOpts, _token)
  3418  }
  3419  
  3420  // ClaimTokens is a paid mutator transaction binding the contract method 0xdf8de3e7.
  3421  //
  3422  // Solidity: function claimTokens(address _token) returns()
  3423  func (_SNT *SNTTransactorSession) ClaimTokens(_token common.Address) (*types.Transaction, error) {
  3424  	return _SNT.Contract.ClaimTokens(&_SNT.TransactOpts, _token)
  3425  }
  3426  
  3427  // CreateCloneToken is a paid mutator transaction binding the contract method 0x6638c087.
  3428  //
  3429  // Solidity: function createCloneToken(string _cloneTokenName, uint8 _cloneDecimalUnits, string _cloneTokenSymbol, uint256 _snapshotBlock, bool _transfersEnabled) returns(address)
  3430  func (_SNT *SNTTransactor) CreateCloneToken(opts *bind.TransactOpts, _cloneTokenName string, _cloneDecimalUnits uint8, _cloneTokenSymbol string, _snapshotBlock *big.Int, _transfersEnabled bool) (*types.Transaction, error) {
  3431  	return _SNT.contract.Transact(opts, "createCloneToken", _cloneTokenName, _cloneDecimalUnits, _cloneTokenSymbol, _snapshotBlock, _transfersEnabled)
  3432  }
  3433  
  3434  // CreateCloneToken is a paid mutator transaction binding the contract method 0x6638c087.
  3435  //
  3436  // Solidity: function createCloneToken(string _cloneTokenName, uint8 _cloneDecimalUnits, string _cloneTokenSymbol, uint256 _snapshotBlock, bool _transfersEnabled) returns(address)
  3437  func (_SNT *SNTSession) CreateCloneToken(_cloneTokenName string, _cloneDecimalUnits uint8, _cloneTokenSymbol string, _snapshotBlock *big.Int, _transfersEnabled bool) (*types.Transaction, error) {
  3438  	return _SNT.Contract.CreateCloneToken(&_SNT.TransactOpts, _cloneTokenName, _cloneDecimalUnits, _cloneTokenSymbol, _snapshotBlock, _transfersEnabled)
  3439  }
  3440  
  3441  // CreateCloneToken is a paid mutator transaction binding the contract method 0x6638c087.
  3442  //
  3443  // Solidity: function createCloneToken(string _cloneTokenName, uint8 _cloneDecimalUnits, string _cloneTokenSymbol, uint256 _snapshotBlock, bool _transfersEnabled) returns(address)
  3444  func (_SNT *SNTTransactorSession) CreateCloneToken(_cloneTokenName string, _cloneDecimalUnits uint8, _cloneTokenSymbol string, _snapshotBlock *big.Int, _transfersEnabled bool) (*types.Transaction, error) {
  3445  	return _SNT.Contract.CreateCloneToken(&_SNT.TransactOpts, _cloneTokenName, _cloneDecimalUnits, _cloneTokenSymbol, _snapshotBlock, _transfersEnabled)
  3446  }
  3447  
  3448  // DestroyTokens is a paid mutator transaction binding the contract method 0xd3ce77fe.
  3449  //
  3450  // Solidity: function destroyTokens(address _owner, uint256 _amount) returns(bool)
  3451  func (_SNT *SNTTransactor) DestroyTokens(opts *bind.TransactOpts, _owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  3452  	return _SNT.contract.Transact(opts, "destroyTokens", _owner, _amount)
  3453  }
  3454  
  3455  // DestroyTokens is a paid mutator transaction binding the contract method 0xd3ce77fe.
  3456  //
  3457  // Solidity: function destroyTokens(address _owner, uint256 _amount) returns(bool)
  3458  func (_SNT *SNTSession) DestroyTokens(_owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  3459  	return _SNT.Contract.DestroyTokens(&_SNT.TransactOpts, _owner, _amount)
  3460  }
  3461  
  3462  // DestroyTokens is a paid mutator transaction binding the contract method 0xd3ce77fe.
  3463  //
  3464  // Solidity: function destroyTokens(address _owner, uint256 _amount) returns(bool)
  3465  func (_SNT *SNTTransactorSession) DestroyTokens(_owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  3466  	return _SNT.Contract.DestroyTokens(&_SNT.TransactOpts, _owner, _amount)
  3467  }
  3468  
  3469  // EnableTransfers is a paid mutator transaction binding the contract method 0xf41e60c5.
  3470  //
  3471  // Solidity: function enableTransfers(bool _transfersEnabled) returns()
  3472  func (_SNT *SNTTransactor) EnableTransfers(opts *bind.TransactOpts, _transfersEnabled bool) (*types.Transaction, error) {
  3473  	return _SNT.contract.Transact(opts, "enableTransfers", _transfersEnabled)
  3474  }
  3475  
  3476  // EnableTransfers is a paid mutator transaction binding the contract method 0xf41e60c5.
  3477  //
  3478  // Solidity: function enableTransfers(bool _transfersEnabled) returns()
  3479  func (_SNT *SNTSession) EnableTransfers(_transfersEnabled bool) (*types.Transaction, error) {
  3480  	return _SNT.Contract.EnableTransfers(&_SNT.TransactOpts, _transfersEnabled)
  3481  }
  3482  
  3483  // EnableTransfers is a paid mutator transaction binding the contract method 0xf41e60c5.
  3484  //
  3485  // Solidity: function enableTransfers(bool _transfersEnabled) returns()
  3486  func (_SNT *SNTTransactorSession) EnableTransfers(_transfersEnabled bool) (*types.Transaction, error) {
  3487  	return _SNT.Contract.EnableTransfers(&_SNT.TransactOpts, _transfersEnabled)
  3488  }
  3489  
  3490  // GenerateTokens is a paid mutator transaction binding the contract method 0x827f32c0.
  3491  //
  3492  // Solidity: function generateTokens(address _owner, uint256 _amount) returns(bool)
  3493  func (_SNT *SNTTransactor) GenerateTokens(opts *bind.TransactOpts, _owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  3494  	return _SNT.contract.Transact(opts, "generateTokens", _owner, _amount)
  3495  }
  3496  
  3497  // GenerateTokens is a paid mutator transaction binding the contract method 0x827f32c0.
  3498  //
  3499  // Solidity: function generateTokens(address _owner, uint256 _amount) returns(bool)
  3500  func (_SNT *SNTSession) GenerateTokens(_owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  3501  	return _SNT.Contract.GenerateTokens(&_SNT.TransactOpts, _owner, _amount)
  3502  }
  3503  
  3504  // GenerateTokens is a paid mutator transaction binding the contract method 0x827f32c0.
  3505  //
  3506  // Solidity: function generateTokens(address _owner, uint256 _amount) returns(bool)
  3507  func (_SNT *SNTTransactorSession) GenerateTokens(_owner common.Address, _amount *big.Int) (*types.Transaction, error) {
  3508  	return _SNT.Contract.GenerateTokens(&_SNT.TransactOpts, _owner, _amount)
  3509  }
  3510  
  3511  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3512  //
  3513  // Solidity: function transfer(address _to, uint256 _amount) returns(bool success)
  3514  func (_SNT *SNTTransactor) Transfer(opts *bind.TransactOpts, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  3515  	return _SNT.contract.Transact(opts, "transfer", _to, _amount)
  3516  }
  3517  
  3518  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3519  //
  3520  // Solidity: function transfer(address _to, uint256 _amount) returns(bool success)
  3521  func (_SNT *SNTSession) Transfer(_to common.Address, _amount *big.Int) (*types.Transaction, error) {
  3522  	return _SNT.Contract.Transfer(&_SNT.TransactOpts, _to, _amount)
  3523  }
  3524  
  3525  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3526  //
  3527  // Solidity: function transfer(address _to, uint256 _amount) returns(bool success)
  3528  func (_SNT *SNTTransactorSession) Transfer(_to common.Address, _amount *big.Int) (*types.Transaction, error) {
  3529  	return _SNT.Contract.Transfer(&_SNT.TransactOpts, _to, _amount)
  3530  }
  3531  
  3532  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3533  //
  3534  // Solidity: function transferFrom(address _from, address _to, uint256 _amount) returns(bool success)
  3535  func (_SNT *SNTTransactor) TransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  3536  	return _SNT.contract.Transact(opts, "transferFrom", _from, _to, _amount)
  3537  }
  3538  
  3539  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3540  //
  3541  // Solidity: function transferFrom(address _from, address _to, uint256 _amount) returns(bool success)
  3542  func (_SNT *SNTSession) TransferFrom(_from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  3543  	return _SNT.Contract.TransferFrom(&_SNT.TransactOpts, _from, _to, _amount)
  3544  }
  3545  
  3546  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3547  //
  3548  // Solidity: function transferFrom(address _from, address _to, uint256 _amount) returns(bool success)
  3549  func (_SNT *SNTTransactorSession) TransferFrom(_from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  3550  	return _SNT.Contract.TransferFrom(&_SNT.TransactOpts, _from, _to, _amount)
  3551  }
  3552  
  3553  // Fallback is a paid mutator transaction binding the contract fallback function.
  3554  //
  3555  // Solidity: fallback() payable returns()
  3556  func (_SNT *SNTTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) {
  3557  	return _SNT.contract.RawTransact(opts, calldata)
  3558  }
  3559  
  3560  // Fallback is a paid mutator transaction binding the contract fallback function.
  3561  //
  3562  // Solidity: fallback() payable returns()
  3563  func (_SNT *SNTSession) Fallback(calldata []byte) (*types.Transaction, error) {
  3564  	return _SNT.Contract.Fallback(&_SNT.TransactOpts, calldata)
  3565  }
  3566  
  3567  // Fallback is a paid mutator transaction binding the contract fallback function.
  3568  //
  3569  // Solidity: fallback() payable returns()
  3570  func (_SNT *SNTTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) {
  3571  	return _SNT.Contract.Fallback(&_SNT.TransactOpts, calldata)
  3572  }
  3573  
  3574  // SNTApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the SNT contract.
  3575  type SNTApprovalIterator struct {
  3576  	Event *SNTApproval // Event containing the contract specifics and raw log
  3577  
  3578  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3579  	event    string              // Event name to use for unpacking event data
  3580  
  3581  	logs chan types.Log        // Log channel receiving the found contract events
  3582  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3583  	done bool                  // Whether the subscription completed delivering logs
  3584  	fail error                 // Occurred error to stop iteration
  3585  }
  3586  
  3587  // Next advances the iterator to the subsequent event, returning whether there
  3588  // are any more events found. In case of a retrieval or parsing error, false is
  3589  // returned and Error() can be queried for the exact failure.
  3590  func (it *SNTApprovalIterator) Next() bool {
  3591  	// If the iterator failed, stop iterating
  3592  	if it.fail != nil {
  3593  		return false
  3594  	}
  3595  	// If the iterator completed, deliver directly whatever's available
  3596  	if it.done {
  3597  		select {
  3598  		case log := <-it.logs:
  3599  			it.Event = new(SNTApproval)
  3600  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3601  				it.fail = err
  3602  				return false
  3603  			}
  3604  			it.Event.Raw = log
  3605  			return true
  3606  
  3607  		default:
  3608  			return false
  3609  		}
  3610  	}
  3611  	// Iterator still in progress, wait for either a data or an error event
  3612  	select {
  3613  	case log := <-it.logs:
  3614  		it.Event = new(SNTApproval)
  3615  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3616  			it.fail = err
  3617  			return false
  3618  		}
  3619  		it.Event.Raw = log
  3620  		return true
  3621  
  3622  	case err := <-it.sub.Err():
  3623  		it.done = true
  3624  		it.fail = err
  3625  		return it.Next()
  3626  	}
  3627  }
  3628  
  3629  // Error returns any retrieval or parsing error occurred during filtering.
  3630  func (it *SNTApprovalIterator) Error() error {
  3631  	return it.fail
  3632  }
  3633  
  3634  // Close terminates the iteration process, releasing any pending underlying
  3635  // resources.
  3636  func (it *SNTApprovalIterator) Close() error {
  3637  	it.sub.Unsubscribe()
  3638  	return nil
  3639  }
  3640  
  3641  // SNTApproval represents a Approval event raised by the SNT contract.
  3642  type SNTApproval struct {
  3643  	Owner   common.Address
  3644  	Spender common.Address
  3645  	Amount  *big.Int
  3646  	Raw     types.Log // Blockchain specific contextual infos
  3647  }
  3648  
  3649  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3650  //
  3651  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _amount)
  3652  func (_SNT *SNTFilterer) FilterApproval(opts *bind.FilterOpts, _owner []common.Address, _spender []common.Address) (*SNTApprovalIterator, error) {
  3653  
  3654  	var _ownerRule []interface{}
  3655  	for _, _ownerItem := range _owner {
  3656  		_ownerRule = append(_ownerRule, _ownerItem)
  3657  	}
  3658  	var _spenderRule []interface{}
  3659  	for _, _spenderItem := range _spender {
  3660  		_spenderRule = append(_spenderRule, _spenderItem)
  3661  	}
  3662  
  3663  	logs, sub, err := _SNT.contract.FilterLogs(opts, "Approval", _ownerRule, _spenderRule)
  3664  	if err != nil {
  3665  		return nil, err
  3666  	}
  3667  	return &SNTApprovalIterator{contract: _SNT.contract, event: "Approval", logs: logs, sub: sub}, nil
  3668  }
  3669  
  3670  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3671  //
  3672  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _amount)
  3673  func (_SNT *SNTFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *SNTApproval, _owner []common.Address, _spender []common.Address) (event.Subscription, error) {
  3674  
  3675  	var _ownerRule []interface{}
  3676  	for _, _ownerItem := range _owner {
  3677  		_ownerRule = append(_ownerRule, _ownerItem)
  3678  	}
  3679  	var _spenderRule []interface{}
  3680  	for _, _spenderItem := range _spender {
  3681  		_spenderRule = append(_spenderRule, _spenderItem)
  3682  	}
  3683  
  3684  	logs, sub, err := _SNT.contract.WatchLogs(opts, "Approval", _ownerRule, _spenderRule)
  3685  	if err != nil {
  3686  		return nil, err
  3687  	}
  3688  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3689  		defer sub.Unsubscribe()
  3690  		for {
  3691  			select {
  3692  			case log := <-logs:
  3693  				// New log arrived, parse the event and forward to the user
  3694  				event := new(SNTApproval)
  3695  				if err := _SNT.contract.UnpackLog(event, "Approval", log); err != nil {
  3696  					return err
  3697  				}
  3698  				event.Raw = log
  3699  
  3700  				select {
  3701  				case sink <- event:
  3702  				case err := <-sub.Err():
  3703  					return err
  3704  				case <-quit:
  3705  					return nil
  3706  				}
  3707  			case err := <-sub.Err():
  3708  				return err
  3709  			case <-quit:
  3710  				return nil
  3711  			}
  3712  		}
  3713  	}), nil
  3714  }
  3715  
  3716  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3717  //
  3718  // Solidity: event Approval(address indexed _owner, address indexed _spender, uint256 _amount)
  3719  func (_SNT *SNTFilterer) ParseApproval(log types.Log) (*SNTApproval, error) {
  3720  	event := new(SNTApproval)
  3721  	if err := _SNT.contract.UnpackLog(event, "Approval", log); err != nil {
  3722  		return nil, err
  3723  	}
  3724  	event.Raw = log
  3725  	return event, nil
  3726  }
  3727  
  3728  // SNTClaimedTokensIterator is returned from FilterClaimedTokens and is used to iterate over the raw logs and unpacked data for ClaimedTokens events raised by the SNT contract.
  3729  type SNTClaimedTokensIterator struct {
  3730  	Event *SNTClaimedTokens // Event containing the contract specifics and raw log
  3731  
  3732  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3733  	event    string              // Event name to use for unpacking event data
  3734  
  3735  	logs chan types.Log        // Log channel receiving the found contract events
  3736  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3737  	done bool                  // Whether the subscription completed delivering logs
  3738  	fail error                 // Occurred error to stop iteration
  3739  }
  3740  
  3741  // Next advances the iterator to the subsequent event, returning whether there
  3742  // are any more events found. In case of a retrieval or parsing error, false is
  3743  // returned and Error() can be queried for the exact failure.
  3744  func (it *SNTClaimedTokensIterator) Next() bool {
  3745  	// If the iterator failed, stop iterating
  3746  	if it.fail != nil {
  3747  		return false
  3748  	}
  3749  	// If the iterator completed, deliver directly whatever's available
  3750  	if it.done {
  3751  		select {
  3752  		case log := <-it.logs:
  3753  			it.Event = new(SNTClaimedTokens)
  3754  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3755  				it.fail = err
  3756  				return false
  3757  			}
  3758  			it.Event.Raw = log
  3759  			return true
  3760  
  3761  		default:
  3762  			return false
  3763  		}
  3764  	}
  3765  	// Iterator still in progress, wait for either a data or an error event
  3766  	select {
  3767  	case log := <-it.logs:
  3768  		it.Event = new(SNTClaimedTokens)
  3769  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3770  			it.fail = err
  3771  			return false
  3772  		}
  3773  		it.Event.Raw = log
  3774  		return true
  3775  
  3776  	case err := <-it.sub.Err():
  3777  		it.done = true
  3778  		it.fail = err
  3779  		return it.Next()
  3780  	}
  3781  }
  3782  
  3783  // Error returns any retrieval or parsing error occurred during filtering.
  3784  func (it *SNTClaimedTokensIterator) Error() error {
  3785  	return it.fail
  3786  }
  3787  
  3788  // Close terminates the iteration process, releasing any pending underlying
  3789  // resources.
  3790  func (it *SNTClaimedTokensIterator) Close() error {
  3791  	it.sub.Unsubscribe()
  3792  	return nil
  3793  }
  3794  
  3795  // SNTClaimedTokens represents a ClaimedTokens event raised by the SNT contract.
  3796  type SNTClaimedTokens struct {
  3797  	Token      common.Address
  3798  	Controller common.Address
  3799  	Amount     *big.Int
  3800  	Raw        types.Log // Blockchain specific contextual infos
  3801  }
  3802  
  3803  // FilterClaimedTokens is a free log retrieval operation binding the contract event 0xf931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c.
  3804  //
  3805  // Solidity: event ClaimedTokens(address indexed _token, address indexed _controller, uint256 _amount)
  3806  func (_SNT *SNTFilterer) FilterClaimedTokens(opts *bind.FilterOpts, _token []common.Address, _controller []common.Address) (*SNTClaimedTokensIterator, error) {
  3807  
  3808  	var _tokenRule []interface{}
  3809  	for _, _tokenItem := range _token {
  3810  		_tokenRule = append(_tokenRule, _tokenItem)
  3811  	}
  3812  	var _controllerRule []interface{}
  3813  	for _, _controllerItem := range _controller {
  3814  		_controllerRule = append(_controllerRule, _controllerItem)
  3815  	}
  3816  
  3817  	logs, sub, err := _SNT.contract.FilterLogs(opts, "ClaimedTokens", _tokenRule, _controllerRule)
  3818  	if err != nil {
  3819  		return nil, err
  3820  	}
  3821  	return &SNTClaimedTokensIterator{contract: _SNT.contract, event: "ClaimedTokens", logs: logs, sub: sub}, nil
  3822  }
  3823  
  3824  // WatchClaimedTokens is a free log subscription operation binding the contract event 0xf931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c.
  3825  //
  3826  // Solidity: event ClaimedTokens(address indexed _token, address indexed _controller, uint256 _amount)
  3827  func (_SNT *SNTFilterer) WatchClaimedTokens(opts *bind.WatchOpts, sink chan<- *SNTClaimedTokens, _token []common.Address, _controller []common.Address) (event.Subscription, error) {
  3828  
  3829  	var _tokenRule []interface{}
  3830  	for _, _tokenItem := range _token {
  3831  		_tokenRule = append(_tokenRule, _tokenItem)
  3832  	}
  3833  	var _controllerRule []interface{}
  3834  	for _, _controllerItem := range _controller {
  3835  		_controllerRule = append(_controllerRule, _controllerItem)
  3836  	}
  3837  
  3838  	logs, sub, err := _SNT.contract.WatchLogs(opts, "ClaimedTokens", _tokenRule, _controllerRule)
  3839  	if err != nil {
  3840  		return nil, err
  3841  	}
  3842  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3843  		defer sub.Unsubscribe()
  3844  		for {
  3845  			select {
  3846  			case log := <-logs:
  3847  				// New log arrived, parse the event and forward to the user
  3848  				event := new(SNTClaimedTokens)
  3849  				if err := _SNT.contract.UnpackLog(event, "ClaimedTokens", log); err != nil {
  3850  					return err
  3851  				}
  3852  				event.Raw = log
  3853  
  3854  				select {
  3855  				case sink <- event:
  3856  				case err := <-sub.Err():
  3857  					return err
  3858  				case <-quit:
  3859  					return nil
  3860  				}
  3861  			case err := <-sub.Err():
  3862  				return err
  3863  			case <-quit:
  3864  				return nil
  3865  			}
  3866  		}
  3867  	}), nil
  3868  }
  3869  
  3870  // ParseClaimedTokens is a log parse operation binding the contract event 0xf931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c.
  3871  //
  3872  // Solidity: event ClaimedTokens(address indexed _token, address indexed _controller, uint256 _amount)
  3873  func (_SNT *SNTFilterer) ParseClaimedTokens(log types.Log) (*SNTClaimedTokens, error) {
  3874  	event := new(SNTClaimedTokens)
  3875  	if err := _SNT.contract.UnpackLog(event, "ClaimedTokens", log); err != nil {
  3876  		return nil, err
  3877  	}
  3878  	event.Raw = log
  3879  	return event, nil
  3880  }
  3881  
  3882  // SNTNewCloneTokenIterator is returned from FilterNewCloneToken and is used to iterate over the raw logs and unpacked data for NewCloneToken events raised by the SNT contract.
  3883  type SNTNewCloneTokenIterator struct {
  3884  	Event *SNTNewCloneToken // Event containing the contract specifics and raw log
  3885  
  3886  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3887  	event    string              // Event name to use for unpacking event data
  3888  
  3889  	logs chan types.Log        // Log channel receiving the found contract events
  3890  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3891  	done bool                  // Whether the subscription completed delivering logs
  3892  	fail error                 // Occurred error to stop iteration
  3893  }
  3894  
  3895  // Next advances the iterator to the subsequent event, returning whether there
  3896  // are any more events found. In case of a retrieval or parsing error, false is
  3897  // returned and Error() can be queried for the exact failure.
  3898  func (it *SNTNewCloneTokenIterator) Next() bool {
  3899  	// If the iterator failed, stop iterating
  3900  	if it.fail != nil {
  3901  		return false
  3902  	}
  3903  	// If the iterator completed, deliver directly whatever's available
  3904  	if it.done {
  3905  		select {
  3906  		case log := <-it.logs:
  3907  			it.Event = new(SNTNewCloneToken)
  3908  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3909  				it.fail = err
  3910  				return false
  3911  			}
  3912  			it.Event.Raw = log
  3913  			return true
  3914  
  3915  		default:
  3916  			return false
  3917  		}
  3918  	}
  3919  	// Iterator still in progress, wait for either a data or an error event
  3920  	select {
  3921  	case log := <-it.logs:
  3922  		it.Event = new(SNTNewCloneToken)
  3923  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3924  			it.fail = err
  3925  			return false
  3926  		}
  3927  		it.Event.Raw = log
  3928  		return true
  3929  
  3930  	case err := <-it.sub.Err():
  3931  		it.done = true
  3932  		it.fail = err
  3933  		return it.Next()
  3934  	}
  3935  }
  3936  
  3937  // Error returns any retrieval or parsing error occurred during filtering.
  3938  func (it *SNTNewCloneTokenIterator) Error() error {
  3939  	return it.fail
  3940  }
  3941  
  3942  // Close terminates the iteration process, releasing any pending underlying
  3943  // resources.
  3944  func (it *SNTNewCloneTokenIterator) Close() error {
  3945  	it.sub.Unsubscribe()
  3946  	return nil
  3947  }
  3948  
  3949  // SNTNewCloneToken represents a NewCloneToken event raised by the SNT contract.
  3950  type SNTNewCloneToken struct {
  3951  	CloneToken    common.Address
  3952  	SnapshotBlock *big.Int
  3953  	Raw           types.Log // Blockchain specific contextual infos
  3954  }
  3955  
  3956  // FilterNewCloneToken is a free log retrieval operation binding the contract event 0x086c875b377f900b07ce03575813022f05dd10ed7640b5282cf6d3c3fc352ade.
  3957  //
  3958  // Solidity: event NewCloneToken(address indexed _cloneToken, uint256 _snapshotBlock)
  3959  func (_SNT *SNTFilterer) FilterNewCloneToken(opts *bind.FilterOpts, _cloneToken []common.Address) (*SNTNewCloneTokenIterator, error) {
  3960  
  3961  	var _cloneTokenRule []interface{}
  3962  	for _, _cloneTokenItem := range _cloneToken {
  3963  		_cloneTokenRule = append(_cloneTokenRule, _cloneTokenItem)
  3964  	}
  3965  
  3966  	logs, sub, err := _SNT.contract.FilterLogs(opts, "NewCloneToken", _cloneTokenRule)
  3967  	if err != nil {
  3968  		return nil, err
  3969  	}
  3970  	return &SNTNewCloneTokenIterator{contract: _SNT.contract, event: "NewCloneToken", logs: logs, sub: sub}, nil
  3971  }
  3972  
  3973  // WatchNewCloneToken is a free log subscription operation binding the contract event 0x086c875b377f900b07ce03575813022f05dd10ed7640b5282cf6d3c3fc352ade.
  3974  //
  3975  // Solidity: event NewCloneToken(address indexed _cloneToken, uint256 _snapshotBlock)
  3976  func (_SNT *SNTFilterer) WatchNewCloneToken(opts *bind.WatchOpts, sink chan<- *SNTNewCloneToken, _cloneToken []common.Address) (event.Subscription, error) {
  3977  
  3978  	var _cloneTokenRule []interface{}
  3979  	for _, _cloneTokenItem := range _cloneToken {
  3980  		_cloneTokenRule = append(_cloneTokenRule, _cloneTokenItem)
  3981  	}
  3982  
  3983  	logs, sub, err := _SNT.contract.WatchLogs(opts, "NewCloneToken", _cloneTokenRule)
  3984  	if err != nil {
  3985  		return nil, err
  3986  	}
  3987  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3988  		defer sub.Unsubscribe()
  3989  		for {
  3990  			select {
  3991  			case log := <-logs:
  3992  				// New log arrived, parse the event and forward to the user
  3993  				event := new(SNTNewCloneToken)
  3994  				if err := _SNT.contract.UnpackLog(event, "NewCloneToken", log); err != nil {
  3995  					return err
  3996  				}
  3997  				event.Raw = log
  3998  
  3999  				select {
  4000  				case sink <- event:
  4001  				case err := <-sub.Err():
  4002  					return err
  4003  				case <-quit:
  4004  					return nil
  4005  				}
  4006  			case err := <-sub.Err():
  4007  				return err
  4008  			case <-quit:
  4009  				return nil
  4010  			}
  4011  		}
  4012  	}), nil
  4013  }
  4014  
  4015  // ParseNewCloneToken is a log parse operation binding the contract event 0x086c875b377f900b07ce03575813022f05dd10ed7640b5282cf6d3c3fc352ade.
  4016  //
  4017  // Solidity: event NewCloneToken(address indexed _cloneToken, uint256 _snapshotBlock)
  4018  func (_SNT *SNTFilterer) ParseNewCloneToken(log types.Log) (*SNTNewCloneToken, error) {
  4019  	event := new(SNTNewCloneToken)
  4020  	if err := _SNT.contract.UnpackLog(event, "NewCloneToken", log); err != nil {
  4021  		return nil, err
  4022  	}
  4023  	event.Raw = log
  4024  	return event, nil
  4025  }
  4026  
  4027  // SNTTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the SNT contract.
  4028  type SNTTransferIterator struct {
  4029  	Event *SNTTransfer // Event containing the contract specifics and raw log
  4030  
  4031  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4032  	event    string              // Event name to use for unpacking event data
  4033  
  4034  	logs chan types.Log        // Log channel receiving the found contract events
  4035  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4036  	done bool                  // Whether the subscription completed delivering logs
  4037  	fail error                 // Occurred error to stop iteration
  4038  }
  4039  
  4040  // Next advances the iterator to the subsequent event, returning whether there
  4041  // are any more events found. In case of a retrieval or parsing error, false is
  4042  // returned and Error() can be queried for the exact failure.
  4043  func (it *SNTTransferIterator) Next() bool {
  4044  	// If the iterator failed, stop iterating
  4045  	if it.fail != nil {
  4046  		return false
  4047  	}
  4048  	// If the iterator completed, deliver directly whatever's available
  4049  	if it.done {
  4050  		select {
  4051  		case log := <-it.logs:
  4052  			it.Event = new(SNTTransfer)
  4053  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4054  				it.fail = err
  4055  				return false
  4056  			}
  4057  			it.Event.Raw = log
  4058  			return true
  4059  
  4060  		default:
  4061  			return false
  4062  		}
  4063  	}
  4064  	// Iterator still in progress, wait for either a data or an error event
  4065  	select {
  4066  	case log := <-it.logs:
  4067  		it.Event = new(SNTTransfer)
  4068  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4069  			it.fail = err
  4070  			return false
  4071  		}
  4072  		it.Event.Raw = log
  4073  		return true
  4074  
  4075  	case err := <-it.sub.Err():
  4076  		it.done = true
  4077  		it.fail = err
  4078  		return it.Next()
  4079  	}
  4080  }
  4081  
  4082  // Error returns any retrieval or parsing error occurred during filtering.
  4083  func (it *SNTTransferIterator) Error() error {
  4084  	return it.fail
  4085  }
  4086  
  4087  // Close terminates the iteration process, releasing any pending underlying
  4088  // resources.
  4089  func (it *SNTTransferIterator) Close() error {
  4090  	it.sub.Unsubscribe()
  4091  	return nil
  4092  }
  4093  
  4094  // SNTTransfer represents a Transfer event raised by the SNT contract.
  4095  type SNTTransfer struct {
  4096  	From   common.Address
  4097  	To     common.Address
  4098  	Amount *big.Int
  4099  	Raw    types.Log // Blockchain specific contextual infos
  4100  }
  4101  
  4102  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4103  //
  4104  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _amount)
  4105  func (_SNT *SNTFilterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address) (*SNTTransferIterator, error) {
  4106  
  4107  	var _fromRule []interface{}
  4108  	for _, _fromItem := range _from {
  4109  		_fromRule = append(_fromRule, _fromItem)
  4110  	}
  4111  	var _toRule []interface{}
  4112  	for _, _toItem := range _to {
  4113  		_toRule = append(_toRule, _toItem)
  4114  	}
  4115  
  4116  	logs, sub, err := _SNT.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule)
  4117  	if err != nil {
  4118  		return nil, err
  4119  	}
  4120  	return &SNTTransferIterator{contract: _SNT.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4121  }
  4122  
  4123  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4124  //
  4125  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _amount)
  4126  func (_SNT *SNTFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *SNTTransfer, _from []common.Address, _to []common.Address) (event.Subscription, error) {
  4127  
  4128  	var _fromRule []interface{}
  4129  	for _, _fromItem := range _from {
  4130  		_fromRule = append(_fromRule, _fromItem)
  4131  	}
  4132  	var _toRule []interface{}
  4133  	for _, _toItem := range _to {
  4134  		_toRule = append(_toRule, _toItem)
  4135  	}
  4136  
  4137  	logs, sub, err := _SNT.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule)
  4138  	if err != nil {
  4139  		return nil, err
  4140  	}
  4141  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4142  		defer sub.Unsubscribe()
  4143  		for {
  4144  			select {
  4145  			case log := <-logs:
  4146  				// New log arrived, parse the event and forward to the user
  4147  				event := new(SNTTransfer)
  4148  				if err := _SNT.contract.UnpackLog(event, "Transfer", log); err != nil {
  4149  					return err
  4150  				}
  4151  				event.Raw = log
  4152  
  4153  				select {
  4154  				case sink <- event:
  4155  				case err := <-sub.Err():
  4156  					return err
  4157  				case <-quit:
  4158  					return nil
  4159  				}
  4160  			case err := <-sub.Err():
  4161  				return err
  4162  			case <-quit:
  4163  				return nil
  4164  			}
  4165  		}
  4166  	}), nil
  4167  }
  4168  
  4169  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4170  //
  4171  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _amount)
  4172  func (_SNT *SNTFilterer) ParseTransfer(log types.Log) (*SNTTransfer, error) {
  4173  	event := new(SNTTransfer)
  4174  	if err := _SNT.contract.UnpackLog(event, "Transfer", log); err != nil {
  4175  		return nil, err
  4176  	}
  4177  	event.Raw = log
  4178  	return event, nil
  4179  }
  4180  
  4181  // TokenControllerABI is the input ABI used to generate the binding from.
  4182  const TokenControllerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"onTransfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"onApprove\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"proxyPayment\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}]"
  4183  
  4184  // TokenControllerFuncSigs maps the 4-byte function signature to its string representation.
  4185  var TokenControllerFuncSigs = map[string]string{
  4186  	"da682aeb": "onApprove(address,address,uint256)",
  4187  	"4a393149": "onTransfer(address,address,uint256)",
  4188  	"f48c3054": "proxyPayment(address)",
  4189  }
  4190  
  4191  // TokenController is an auto generated Go binding around an Ethereum contract.
  4192  type TokenController struct {
  4193  	TokenControllerCaller     // Read-only binding to the contract
  4194  	TokenControllerTransactor // Write-only binding to the contract
  4195  	TokenControllerFilterer   // Log filterer for contract events
  4196  }
  4197  
  4198  // TokenControllerCaller is an auto generated read-only Go binding around an Ethereum contract.
  4199  type TokenControllerCaller struct {
  4200  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4201  }
  4202  
  4203  // TokenControllerTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4204  type TokenControllerTransactor struct {
  4205  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4206  }
  4207  
  4208  // TokenControllerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4209  type TokenControllerFilterer struct {
  4210  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4211  }
  4212  
  4213  // TokenControllerSession is an auto generated Go binding around an Ethereum contract,
  4214  // with pre-set call and transact options.
  4215  type TokenControllerSession struct {
  4216  	Contract     *TokenController  // Generic contract binding to set the session for
  4217  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4218  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4219  }
  4220  
  4221  // TokenControllerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4222  // with pre-set call options.
  4223  type TokenControllerCallerSession struct {
  4224  	Contract *TokenControllerCaller // Generic contract caller binding to set the session for
  4225  	CallOpts bind.CallOpts          // Call options to use throughout this session
  4226  }
  4227  
  4228  // TokenControllerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4229  // with pre-set transact options.
  4230  type TokenControllerTransactorSession struct {
  4231  	Contract     *TokenControllerTransactor // Generic contract transactor binding to set the session for
  4232  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
  4233  }
  4234  
  4235  // TokenControllerRaw is an auto generated low-level Go binding around an Ethereum contract.
  4236  type TokenControllerRaw struct {
  4237  	Contract *TokenController // Generic contract binding to access the raw methods on
  4238  }
  4239  
  4240  // TokenControllerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4241  type TokenControllerCallerRaw struct {
  4242  	Contract *TokenControllerCaller // Generic read-only contract binding to access the raw methods on
  4243  }
  4244  
  4245  // TokenControllerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4246  type TokenControllerTransactorRaw struct {
  4247  	Contract *TokenControllerTransactor // Generic write-only contract binding to access the raw methods on
  4248  }
  4249  
  4250  // NewTokenController creates a new instance of TokenController, bound to a specific deployed contract.
  4251  func NewTokenController(address common.Address, backend bind.ContractBackend) (*TokenController, error) {
  4252  	contract, err := bindTokenController(address, backend, backend, backend)
  4253  	if err != nil {
  4254  		return nil, err
  4255  	}
  4256  	return &TokenController{TokenControllerCaller: TokenControllerCaller{contract: contract}, TokenControllerTransactor: TokenControllerTransactor{contract: contract}, TokenControllerFilterer: TokenControllerFilterer{contract: contract}}, nil
  4257  }
  4258  
  4259  // NewTokenControllerCaller creates a new read-only instance of TokenController, bound to a specific deployed contract.
  4260  func NewTokenControllerCaller(address common.Address, caller bind.ContractCaller) (*TokenControllerCaller, error) {
  4261  	contract, err := bindTokenController(address, caller, nil, nil)
  4262  	if err != nil {
  4263  		return nil, err
  4264  	}
  4265  	return &TokenControllerCaller{contract: contract}, nil
  4266  }
  4267  
  4268  // NewTokenControllerTransactor creates a new write-only instance of TokenController, bound to a specific deployed contract.
  4269  func NewTokenControllerTransactor(address common.Address, transactor bind.ContractTransactor) (*TokenControllerTransactor, error) {
  4270  	contract, err := bindTokenController(address, nil, transactor, nil)
  4271  	if err != nil {
  4272  		return nil, err
  4273  	}
  4274  	return &TokenControllerTransactor{contract: contract}, nil
  4275  }
  4276  
  4277  // NewTokenControllerFilterer creates a new log filterer instance of TokenController, bound to a specific deployed contract.
  4278  func NewTokenControllerFilterer(address common.Address, filterer bind.ContractFilterer) (*TokenControllerFilterer, error) {
  4279  	contract, err := bindTokenController(address, nil, nil, filterer)
  4280  	if err != nil {
  4281  		return nil, err
  4282  	}
  4283  	return &TokenControllerFilterer{contract: contract}, nil
  4284  }
  4285  
  4286  // bindTokenController binds a generic wrapper to an already deployed contract.
  4287  func bindTokenController(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4288  	parsed, err := abi.JSON(strings.NewReader(TokenControllerABI))
  4289  	if err != nil {
  4290  		return nil, err
  4291  	}
  4292  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4293  }
  4294  
  4295  // Call invokes the (constant) contract method with params as input values and
  4296  // sets the output to result. The result type might be a single field for simple
  4297  // returns, a slice of interfaces for anonymous returns and a struct for named
  4298  // returns.
  4299  func (_TokenController *TokenControllerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4300  	return _TokenController.Contract.TokenControllerCaller.contract.Call(opts, result, method, params...)
  4301  }
  4302  
  4303  // Transfer initiates a plain transaction to move funds to the contract, calling
  4304  // its default method if one is available.
  4305  func (_TokenController *TokenControllerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4306  	return _TokenController.Contract.TokenControllerTransactor.contract.Transfer(opts)
  4307  }
  4308  
  4309  // Transact invokes the (paid) contract method with params as input values.
  4310  func (_TokenController *TokenControllerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4311  	return _TokenController.Contract.TokenControllerTransactor.contract.Transact(opts, method, params...)
  4312  }
  4313  
  4314  // Call invokes the (constant) contract method with params as input values and
  4315  // sets the output to result. The result type might be a single field for simple
  4316  // returns, a slice of interfaces for anonymous returns and a struct for named
  4317  // returns.
  4318  func (_TokenController *TokenControllerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4319  	return _TokenController.Contract.contract.Call(opts, result, method, params...)
  4320  }
  4321  
  4322  // Transfer initiates a plain transaction to move funds to the contract, calling
  4323  // its default method if one is available.
  4324  func (_TokenController *TokenControllerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4325  	return _TokenController.Contract.contract.Transfer(opts)
  4326  }
  4327  
  4328  // Transact invokes the (paid) contract method with params as input values.
  4329  func (_TokenController *TokenControllerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4330  	return _TokenController.Contract.contract.Transact(opts, method, params...)
  4331  }
  4332  
  4333  // OnApprove is a paid mutator transaction binding the contract method 0xda682aeb.
  4334  //
  4335  // Solidity: function onApprove(address _owner, address _spender, uint256 _amount) returns(bool)
  4336  func (_TokenController *TokenControllerTransactor) OnApprove(opts *bind.TransactOpts, _owner common.Address, _spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  4337  	return _TokenController.contract.Transact(opts, "onApprove", _owner, _spender, _amount)
  4338  }
  4339  
  4340  // OnApprove is a paid mutator transaction binding the contract method 0xda682aeb.
  4341  //
  4342  // Solidity: function onApprove(address _owner, address _spender, uint256 _amount) returns(bool)
  4343  func (_TokenController *TokenControllerSession) OnApprove(_owner common.Address, _spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  4344  	return _TokenController.Contract.OnApprove(&_TokenController.TransactOpts, _owner, _spender, _amount)
  4345  }
  4346  
  4347  // OnApprove is a paid mutator transaction binding the contract method 0xda682aeb.
  4348  //
  4349  // Solidity: function onApprove(address _owner, address _spender, uint256 _amount) returns(bool)
  4350  func (_TokenController *TokenControllerTransactorSession) OnApprove(_owner common.Address, _spender common.Address, _amount *big.Int) (*types.Transaction, error) {
  4351  	return _TokenController.Contract.OnApprove(&_TokenController.TransactOpts, _owner, _spender, _amount)
  4352  }
  4353  
  4354  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  4355  //
  4356  // Solidity: function onTransfer(address _from, address _to, uint256 _amount) returns(bool)
  4357  func (_TokenController *TokenControllerTransactor) OnTransfer(opts *bind.TransactOpts, _from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  4358  	return _TokenController.contract.Transact(opts, "onTransfer", _from, _to, _amount)
  4359  }
  4360  
  4361  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  4362  //
  4363  // Solidity: function onTransfer(address _from, address _to, uint256 _amount) returns(bool)
  4364  func (_TokenController *TokenControllerSession) OnTransfer(_from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  4365  	return _TokenController.Contract.OnTransfer(&_TokenController.TransactOpts, _from, _to, _amount)
  4366  }
  4367  
  4368  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
  4369  //
  4370  // Solidity: function onTransfer(address _from, address _to, uint256 _amount) returns(bool)
  4371  func (_TokenController *TokenControllerTransactorSession) OnTransfer(_from common.Address, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
  4372  	return _TokenController.Contract.OnTransfer(&_TokenController.TransactOpts, _from, _to, _amount)
  4373  }
  4374  
  4375  // ProxyPayment is a paid mutator transaction binding the contract method 0xf48c3054.
  4376  //
  4377  // Solidity: function proxyPayment(address _owner) payable returns(bool)
  4378  func (_TokenController *TokenControllerTransactor) ProxyPayment(opts *bind.TransactOpts, _owner common.Address) (*types.Transaction, error) {
  4379  	return _TokenController.contract.Transact(opts, "proxyPayment", _owner)
  4380  }
  4381  
  4382  // ProxyPayment is a paid mutator transaction binding the contract method 0xf48c3054.
  4383  //
  4384  // Solidity: function proxyPayment(address _owner) payable returns(bool)
  4385  func (_TokenController *TokenControllerSession) ProxyPayment(_owner common.Address) (*types.Transaction, error) {
  4386  	return _TokenController.Contract.ProxyPayment(&_TokenController.TransactOpts, _owner)
  4387  }
  4388  
  4389  // ProxyPayment is a paid mutator transaction binding the contract method 0xf48c3054.
  4390  //
  4391  // Solidity: function proxyPayment(address _owner) payable returns(bool)
  4392  func (_TokenController *TokenControllerTransactorSession) ProxyPayment(_owner common.Address) (*types.Transaction, error) {
  4393  	return _TokenController.Contract.ProxyPayment(&_TokenController.TransactOpts, _owner)
  4394  }